Fixed movement controller, nix flake

master
Avery 2 weeks ago
parent 8c2d55b1c9
commit a50b95de09
Signed by: Avery
GPG Key ID: 4E53F4CB69B2CC8D

@ -0,0 +1,61 @@
{
"nodes": {
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1743315132,
"narHash": "sha256-6hl6L/tRnwubHcA4pfUUtk542wn2Om+D4UnDhlDW9BE=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "52faf482a3889b7619003c0daec593a1912fddc1",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

@ -0,0 +1,33 @@
{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
};
outputs = {
self,
nixpkgs,
flake-utils,
} @ inputs:
flake-utils.lib.eachDefaultSystem (system: let
pkgs = import nixpkgs {
inherit system;
};
lib = nixpkgs.lib;
in {
devShells.default = pkgs.mkShell {
VULKAN_SDK = "${pkgs.vulkan-validation-layers}/share/vulkan/explicit_layer.d";
# LD_LIBRARY_PATH = "$LD_LIBRARY_PATH:${pkgs.SDL2}/lib/";
LD_LIBRARY_PATH = lib.makeLibraryPath (with pkgs; [SDL2 vulkan-loader]);
buildInputs = with pkgs; [
SDL2
SDL2.dev
vulkan-headers
vulkan-loader
vulkan-validation-layers # maybe?
# glm and whatnot …
];
};
});
}

@ -9,6 +9,9 @@ use ash::vk;
use std::ffi::CStr;
use std::ffi::CString;
use std::thread;
use std::time::Duration;
use std::time::Instant;
use raw_window_handle::HasDisplayHandle;
use raw_window_handle::HasWindowHandle;
@ -1146,6 +1149,7 @@ fn main() {
let mut running = true;
while running {
let now = Instant::now();
for event in event_pump.poll_iter() {
match event {
Event::Quit { .. } => running = false,
@ -1156,7 +1160,8 @@ fn main() {
width = w as u32;
height = h as u32;
unsafe {
dev.device_wait_idle().expect("Failed to wait for device idle");
dev.device_wait_idle()
.expect("Failed to wait for device idle");
swapchain_loader.destroy_swapchain(swapchain, None);
}
(swapchain, extents) = setup_swapchain(
@ -1183,13 +1188,16 @@ fn main() {
framebufs =
make_framebufs(&dev, &swap_views, &depth_view, &pass, width, height);
}
Event::KeyDown {
keycode: Some(keycode),
..
} => handle_key(keycode, &mut camera),
_ => {}
}
}
event_pump
.keyboard_state()
.pressed_scancodes()
.filter_map(Keycode::from_scancode)
.for_each(|k| handle_key(k, &mut camera));
wait_for_fence(&dev, &fence_flight);
reset_fence(&dev, &fence_flight);
@ -1227,5 +1235,9 @@ fn main() {
);
queue_present(&swapchain_loader, &queue, &swapchain, img_inx, &sem_finish);
let elapsed = now.elapsed();
let delay = (1000_0000u128 / 240).saturating_sub(elapsed.as_micros());
thread::sleep(Duration::from_micros(delay as u64));
}
}

Loading…
Cancel
Save