QOL improvements, add ground plane, add adjustable cam speed
This commit is contained in:
parent
117977b873
commit
70ff9c17b5
2
assets/plane.mtl
Normal file
2
assets/plane.mtl
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
# Blender 4.0.2 MTL File: 'None'
|
||||||
|
# www.blender.org
|
15
assets/plane.obj
Normal file
15
assets/plane.obj
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
# Blender 4.0.2
|
||||||
|
# www.blender.org
|
||||||
|
mtllib plane.mtl
|
||||||
|
o Plane
|
||||||
|
v -1.000000 0.000000 1.000000
|
||||||
|
v 1.000000 0.000000 1.000000
|
||||||
|
v -1.000000 0.000000 -1.000000
|
||||||
|
v 1.000000 0.000000 -1.000000
|
||||||
|
vn -0.0000 1.0000 -0.0000
|
||||||
|
vt 0.000000 0.000000
|
||||||
|
vt 1.000000 0.000000
|
||||||
|
vt 1.000000 1.000000
|
||||||
|
vt 0.000000 1.000000
|
||||||
|
s 0
|
||||||
|
f 1/1/1 2/2/1 4/3/1 3/4/1
|
28
src/game.zig
28
src/game.zig
@ -196,9 +196,10 @@ pub const FreeLookCamera = struct {
|
|||||||
pos: Vec3 = Vec3.new(0, 0, -1),
|
pos: Vec3 = Vec3.new(0, 0, -1),
|
||||||
pitch: f32 = 0,
|
pitch: f32 = 0,
|
||||||
yaw: f32 = 0,
|
yaw: f32 = 0,
|
||||||
|
move_speed: f32 = 0.5,
|
||||||
view_matrix: Mat4 = Mat4.identity(),
|
view_matrix: Mat4 = Mat4.identity(),
|
||||||
|
|
||||||
pub fn update(self: *FreeLookCamera, move: Vec3, look: Vec2) void {
|
pub fn update(self: *FreeLookCamera, dt: f32, move: Vec3, look: Vec2) void {
|
||||||
self.yaw += look.x();
|
self.yaw += look.x();
|
||||||
self.pitch += look.y();
|
self.pitch += look.y();
|
||||||
// First rotate pitch, then yaw
|
// First rotate pitch, then yaw
|
||||||
@ -211,7 +212,7 @@ pub const FreeLookCamera = struct {
|
|||||||
|
|
||||||
const movement = left.scale(-move.x()).add(forward.scale(move.y())).add(up.scale(move.z()));
|
const movement = left.scale(-move.x()).add(forward.scale(move.y())).add(up.scale(move.z()));
|
||||||
|
|
||||||
self.pos = self.pos.add(movement);
|
self.pos = self.pos.add(movement.scale(self.move_speed * dt));
|
||||||
|
|
||||||
self.view_matrix = Mat4.lookAt(self.pos, self.pos.add(forward), Vec3.up());
|
self.view_matrix = Mat4.lookAt(self.pos, self.pos.add(forward), Vec3.up());
|
||||||
}
|
}
|
||||||
@ -432,11 +433,18 @@ export fn game_init(global_allocator: *std.mem.Allocator) void {
|
|||||||
.rotate = .{ .axis = Vec3.up(), .rate = -60 },
|
.rotate = .{ .axis = Vec3.up(), .rate = -60 },
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Plane
|
||||||
|
_ = g_mem.world.addEntity(.{
|
||||||
|
.flags = .{ .mesh = true },
|
||||||
|
.transform = .{ .scale = Vec3.one().scale(100) },
|
||||||
|
.mesh = .{ .handle = a.Meshes.plane },
|
||||||
|
});
|
||||||
|
|
||||||
// 10 bunnies
|
// 10 bunnies
|
||||||
{
|
{
|
||||||
for (0..10) |i| {
|
for (0..10) |i| {
|
||||||
_ = g_mem.world.addEntity(.{
|
_ = g_mem.world.addEntity(.{
|
||||||
.transform = .{ .pos = Vec3.new(@floatFromInt(i * 1), 0, 0) },
|
.transform = .{ .pos = Vec3.new(@as(f32, @floatFromInt(i)) * 0.3, -0.03, 0) },
|
||||||
|
|
||||||
.flags = .{ .mesh = true },
|
.flags = .{ .mesh = true },
|
||||||
.mesh = .{ .handle = a.Meshes.bunny },
|
.mesh = .{ .handle = a.Meshes.bunny },
|
||||||
@ -490,6 +498,11 @@ export fn game_update() bool {
|
|||||||
gmem.mouse_focus = true;
|
gmem.mouse_focus = true;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
c.SDL_MOUSEWHEEL => {
|
||||||
|
if (gmem.mouse_focus) {
|
||||||
|
gmem.free_cam.move_speed = @max(gmem.free_cam.move_speed + event.wheel.preciseY * 0.1, 0);
|
||||||
|
}
|
||||||
|
},
|
||||||
c.SDL_KEYUP, c.SDL_KEYDOWN => {
|
c.SDL_KEYUP, c.SDL_KEYDOWN => {
|
||||||
const pressed = event.key.state == c.SDL_PRESSED;
|
const pressed = event.key.state == c.SDL_PRESSED;
|
||||||
switch (event.key.keysym.scancode) {
|
switch (event.key.keysym.scancode) {
|
||||||
@ -518,7 +531,7 @@ export fn game_update() bool {
|
|||||||
c.SDL_SCANCODE_SPACE => {
|
c.SDL_SCANCODE_SPACE => {
|
||||||
gmem.input_state.up = pressed;
|
gmem.input_state.up = pressed;
|
||||||
},
|
},
|
||||||
c.SDL_SCANCODE_LSHIFT => {
|
c.SDL_SCANCODE_LCTRL => {
|
||||||
gmem.input_state.down = pressed;
|
gmem.input_state.down = pressed;
|
||||||
},
|
},
|
||||||
else => {},
|
else => {},
|
||||||
@ -544,7 +557,6 @@ export fn game_update() bool {
|
|||||||
gmem.delta_time = @as(f32, @floatFromInt((now - gmem.last_frame_time))) / @as(f32, @floatFromInt(gmem.performance_frequency));
|
gmem.delta_time = @as(f32, @floatFromInt((now - gmem.last_frame_time))) / @as(f32, @floatFromInt(gmem.performance_frequency));
|
||||||
gmem.last_frame_time = now;
|
gmem.last_frame_time = now;
|
||||||
|
|
||||||
const MOVEMENT_SPEED = 0.5;
|
|
||||||
if (gmem.input_state.forward) {
|
if (gmem.input_state.forward) {
|
||||||
//const y = &move.data[1];
|
//const y = &move.data[1];
|
||||||
move.yMut().* += 1;
|
move.yMut().* += 1;
|
||||||
@ -565,9 +577,8 @@ export fn game_update() bool {
|
|||||||
move.zMut().* -= 1;
|
move.zMut().* -= 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
move = move.scale(MOVEMENT_SPEED * gmem.delta_time);
|
// TODO: make this an entity
|
||||||
|
gmem.free_cam.update(gmem.delta_time, move, look.scale(0.008));
|
||||||
gmem.free_cam.update(move, look.scale(0.008));
|
|
||||||
|
|
||||||
// RENDER
|
// RENDER
|
||||||
// gl.fenceSync(_condition: GLenum, _flags: GLbitfield)
|
// gl.fenceSync(_condition: GLenum, _flags: GLbitfield)
|
||||||
@ -704,7 +715,6 @@ export fn game_update() bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
c.SDL_GL_SwapWindow(ginit.window);
|
c.SDL_GL_SwapWindow(ginit.window);
|
||||||
// DwmFlush();
|
|
||||||
// const vblank_event: D3DKMT_WAITFORVERTICALBLANKEVENT = .{
|
// const vblank_event: D3DKMT_WAITFORVERTICALBLANKEVENT = .{
|
||||||
// .hAdapter = 0,
|
// .hAdapter = 0,
|
||||||
// .hDevice = ginit.syswm_info.info.win.hdc.*,
|
// .hDevice = ginit.syswm_info.info.win.hdc.*,
|
||||||
|
@ -5,22 +5,24 @@ const Handle = @import("assets").Handle;
|
|||||||
|
|
||||||
pub const Meshes = struct {
|
pub const Meshes = struct {
|
||||||
pub const bunny = Handle.Mesh{ .id = 1 };
|
pub const bunny = Handle.Mesh{ .id = 1 };
|
||||||
pub const sphere = Handle.Mesh{ .id = 7 };
|
pub const plane = Handle.Mesh{ .id = 2 };
|
||||||
|
pub const sphere = Handle.Mesh{ .id = 8 };
|
||||||
};
|
};
|
||||||
|
|
||||||
pub const Shaders = struct {
|
pub const Shaders = struct {
|
||||||
pub const frag = Handle.Shader{ .id = 2 };
|
pub const frag = Handle.Shader{ .id = 3 };
|
||||||
pub const @"mesh.frag" = Handle.Shader{ .id = 3 };
|
pub const @"mesh.frag" = Handle.Shader{ .id = 4 };
|
||||||
pub const @"mesh.vert" = Handle.Shader{ .id = 5 };
|
pub const @"mesh.vert" = Handle.Shader{ .id = 6 };
|
||||||
pub const vert = Handle.Shader{ .id = 6 };
|
pub const vert = Handle.Shader{ .id = 7 };
|
||||||
};
|
};
|
||||||
|
|
||||||
pub const ShaderPrograms = struct {
|
pub const ShaderPrograms = struct {
|
||||||
pub const mesh = Handle.ShaderProgram{ .id = 4 };
|
pub const mesh = Handle.ShaderProgram{ .id = 5 };
|
||||||
};
|
};
|
||||||
|
|
||||||
pub const asset_paths = [_][]const u8{
|
pub const asset_paths = [_][]const u8{
|
||||||
"assets\\bunny.mesh",
|
"assets\\bunny.mesh",
|
||||||
|
"assets\\plane.mesh",
|
||||||
"assets\\shaders\\frag.glsl",
|
"assets\\shaders\\frag.glsl",
|
||||||
"assets\\shaders\\mesh.frag.glsl",
|
"assets\\shaders\\mesh.frag.glsl",
|
||||||
"assets\\shaders\\mesh.prog",
|
"assets\\shaders\\mesh.prog",
|
||||||
@ -31,11 +33,12 @@ pub const asset_paths = [_][]const u8{
|
|||||||
|
|
||||||
pub const asset_path_to_asset_id = std.ComptimeStringMap(u32, .{
|
pub const asset_path_to_asset_id = std.ComptimeStringMap(u32, .{
|
||||||
.{ "assets\\bunny.mesh", 1 },
|
.{ "assets\\bunny.mesh", 1 },
|
||||||
.{ "assets\\shaders\\frag.glsl", 2 },
|
.{ "assets\\plane.mesh", 2 },
|
||||||
.{ "assets\\shaders\\mesh.frag.glsl", 3 },
|
.{ "assets\\shaders\\frag.glsl", 3 },
|
||||||
.{ "assets\\shaders\\mesh.prog", 4 },
|
.{ "assets\\shaders\\mesh.frag.glsl", 4 },
|
||||||
.{ "assets\\shaders\\mesh.vert.glsl", 5 },
|
.{ "assets\\shaders\\mesh.prog", 5 },
|
||||||
.{ "assets\\shaders\\vert.glsl", 6 },
|
.{ "assets\\shaders\\mesh.vert.glsl", 6 },
|
||||||
.{ "assets\\sphere.mesh", 7 },
|
.{ "assets\\shaders\\vert.glsl", 7 },
|
||||||
|
.{ "assets\\sphere.mesh", 8 },
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user