From 1bba633d99d1240ae76c9d800a2ad6e5d1ade056 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20Gasi=C7=B9ski?= Date: Wed, 21 Aug 2024 21:08:49 +0200 Subject: [PATCH] Add simple movement for now --- src/main.zig | 24 +++++++++++++++++++++++- src/vulkan_renderer.zig | 5 +++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/main.zig b/src/main.zig index 7deaab8..5937000 100644 --- a/src/main.zig +++ b/src/main.zig @@ -69,8 +69,9 @@ pub fn main() !void { delta.start(); var angle: f32 = 0.0; + const move_speed: f32 = 1000; - const model_handle = try vulkan_renderer.createMeshModel("tescoPiwo.obj"); + const model_handle = try vulkan_renderer.createMeshModel("teapot.obj"); mainLoop: while (true) { while (sdl.pollEvent()) |ev| { @@ -85,6 +86,27 @@ pub fn main() !void { } } + const keystate = sdl.getKeyboardState(); + if (keystate.isPressed(sdl.Scancode.left_shift)) { + const move = zm.translation(0.0, -move_speed * delta.delta_f32, 0.0); + vulkan_renderer.updateCamera(move); + } else if (keystate.isPressed(sdl.Scancode.left_control)) { + const move = zm.translation(0.0, move_speed * delta.delta_f32, 0.0); + vulkan_renderer.updateCamera(move); + } else if (keystate.isPressed(sdl.Scancode.w)) { + const move = zm.translation(0.0, 0.0, move_speed * delta.delta_f32); + vulkan_renderer.updateCamera(move); + } else if (keystate.isPressed(sdl.Scancode.s)) { + const move = zm.translation(0.0, 0.0, -move_speed * delta.delta_f32); + vulkan_renderer.updateCamera(move); + } else if (keystate.isPressed(sdl.Scancode.a)) { + const move = zm.translation(move_speed * delta.delta_f32, 0.0, 0.0); + vulkan_renderer.updateCamera(move); + } else if (keystate.isPressed(sdl.Scancode.d)) { + const move = zm.translation(-move_speed * delta.delta_f32, 0.0, 0.0); + vulkan_renderer.updateCamera(move); + } + delta.tick(); angle += 200.0 * delta.delta_f32; diff --git a/src/vulkan_renderer.zig b/src/vulkan_renderer.zig index f6b8b8f..f58728a 100644 --- a/src/vulkan_renderer.zig +++ b/src/vulkan_renderer.zig @@ -13,6 +13,7 @@ const QueueFamilyIndices = Utilities.QueueFamilyIndices; const SwapchainDetails = Utilities.SwapchainDetails; const SwapchainImage = Utilities.SwapchainImage; const Vertex = Utilities.Vertex; +const Vector3 = Utilities.Vector3; const Mesh = @import("Mesh.zig"); const MeshModel = @import("MeshModel.zig"); @@ -195,6 +196,10 @@ pub const VulkanRenderer = struct { } } + pub fn updateCamera(self: *Self, movement: zm.Mat) void { + self.ubo_view_projection.view = zm.mul(self.ubo_view_projection.view, movement); + } + pub fn draw(self: *Self) !void { // Wait for given fence to signal (open) from last draw before continuing _ = try self.device.waitForFences(