From fd7973173f163e068deb0ae8f9d6ff0fc31fc71b Mon Sep 17 00:00:00 2001 From: Lorenzo Torres Date: Sat, 29 Mar 2025 14:51:31 +0100 Subject: Added cursor input management --- src/renderer/Camera.zig | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) (limited to 'src/renderer/Camera.zig') diff --git a/src/renderer/Camera.zig b/src/renderer/Camera.zig index 9794da3..9ab305c 100644 --- a/src/renderer/Camera.zig +++ b/src/renderer/Camera.zig @@ -15,7 +15,31 @@ position: @Vector(3, f32), target: @Vector(3, f32), direction: @Vector(3, f32), right: @Vector(3, f32), +front: @Vector(3, f32), up: @Vector(3, f32), +speed: f32 = 2.5, -fn input(pool: *ecs.Pool) void { +fn getProjection(width: usize, height: usize) math.Matrix { + return math.Matrix.perspective(math.rad(45.0), (@as(f32, @floatFromInt(width)) / @as(f32, @floatFromInt(height))), 0.1, 10.0); +} + +fn getView(self: Camera) math.Matrix { + math.lookAt(self.position, self.position + self.front, self.up); +} + +fn moveCamera(pool: *ecs.Pool) void { + const input = pool.resources.input; + const camera = pool.resources.camera; + if (input.isKeyDown(.w)) { + camera.position += (camera.front * (camera.speed * pool.resources.delta_time)); + } + if (input.isKeyDown(.s)) { + camera.position -= (camera.front * (camera.speed * pool.resources.delta_time)); + } + if (input.isKeyDown(.a)) { + camera.position -= math.normalize(math.cross(camera.front, camera.up)) * (camera.speed * pool.resources.delta_time); + } + if (input.isKeyDown(.d)) { + camera.position += math.normalize(math.cross(camera.front, camera.up)) * (camera.speed * pool.resources.delta_time); + } } -- cgit v1.2.3