Add simple movement for now

This commit is contained in:
Przemyslaw Gasinski 2024-08-21 21:08:49 +02:00
parent 2e08987c83
commit 1bba633d99
2 changed files with 28 additions and 1 deletions

View file

@ -69,8 +69,9 @@ pub fn main() !void {
delta.start(); delta.start();
var angle: f32 = 0.0; 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) { mainLoop: while (true) {
while (sdl.pollEvent()) |ev| { 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(); delta.tick();
angle += 200.0 * delta.delta_f32; angle += 200.0 * delta.delta_f32;

View file

@ -13,6 +13,7 @@ const QueueFamilyIndices = Utilities.QueueFamilyIndices;
const SwapchainDetails = Utilities.SwapchainDetails; const SwapchainDetails = Utilities.SwapchainDetails;
const SwapchainImage = Utilities.SwapchainImage; const SwapchainImage = Utilities.SwapchainImage;
const Vertex = Utilities.Vertex; const Vertex = Utilities.Vertex;
const Vector3 = Utilities.Vector3;
const Mesh = @import("Mesh.zig"); const Mesh = @import("Mesh.zig");
const MeshModel = @import("MeshModel.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 { pub fn draw(self: *Self) !void {
// Wait for given fence to signal (open) from last draw before continuing // Wait for given fence to signal (open) from last draw before continuing
_ = try self.device.waitForFences( _ = try self.device.waitForFences(