make move speed consistent

This commit is contained in:
asrael 2025-11-11 21:35:34 -06:00
parent 34e534b6f2
commit 2e2461c35a
3 changed files with 19 additions and 16 deletions

View file

@ -87,29 +87,36 @@
move-delta (* move-speed dt)] move-delta (* move-speed dt)]
(var moving false) (var moving false)
(var new-x cam-x) (var move-forward 0)
(var new-z cam-z) (var move-right 0)
(when (pxl8.key_down "w") (when (pxl8.key_down "w")
(set new-x (+ new-x (* forward-x move-delta))) (set move-forward (+ move-forward 1))
(set new-z (+ new-z (* forward-z move-delta)))
(set moving true)) (set moving true))
(when (pxl8.key_down "s") (when (pxl8.key_down "s")
(set new-x (- new-x (* forward-x move-delta))) (set move-forward (- move-forward 1))
(set new-z (- new-z (* forward-z move-delta)))
(set moving true)) (set moving true))
(when (pxl8.key_down "q") (when (pxl8.key_down "q")
(set new-x (- new-x (* right-x move-delta))) (set move-right (- move-right 1))
(set new-z (- new-z (* right-z move-delta)))
(set moving true)) (set moving true))
(when (pxl8.key_down "e") (when (pxl8.key_down "e")
(set new-x (+ new-x (* right-x move-delta))) (set move-right (+ move-right 1))
(set new-z (+ new-z (* right-z move-delta)))
(set moving true)) (set moving true))
(var new-x cam-x)
(var new-z cam-z)
(when moving
(let [len (math.sqrt (+ (* move-forward move-forward) (* move-right move-right)))]
(when (> len 0)
(let [norm-forward (/ move-forward len)
norm-right (/ move-right len)]
(set new-x (+ new-x (* move-delta (+ (* forward-x norm-forward) (* right-x norm-right)))))
(set new-z (+ new-z (* move-delta (+ (* forward-z norm-forward) (* right-z norm-right)))))))))
(when (and (>= new-x 0) (<= new-x grid-max) (when (and (>= new-x 0) (<= new-x grid-max)
(>= new-z 0) (<= new-z grid-max)) (>= new-z 0) (<= new-z grid-max))
(set cam-x new-x) (set cam-x new-x)

View file

@ -505,7 +505,6 @@ end
function pxl8.world_apply_textures(world, texture_defs) function pxl8.world_apply_textures(world, texture_defs)
local count = #texture_defs local count = #texture_defs
local textures = ffi.new("pxl8_world_texture[?]", count) local textures = ffi.new("pxl8_world_texture[?]", count)
local callbacks = {}
for i, def in ipairs(texture_defs) do for i, def in ipairs(texture_defs) do
local idx = i - 1 local idx = i - 1
@ -513,12 +512,10 @@ function pxl8.world_apply_textures(world, texture_defs)
textures[idx].texture_id = def.texture_id or 0 textures[idx].texture_id = def.texture_id or 0
if def.rule then if def.rule then
local cb = ffi.cast("bool (*)(const pxl8_vec3*, const pxl8_bsp_face*, const pxl8_bsp*)", textures[idx].rule = ffi.cast("bool (*)(const pxl8_vec3*, const pxl8_bsp_face*, const pxl8_bsp*)",
function(normal, face, bsp) function(normal, face, bsp)
return def.rule(normal[0], face, bsp) return def.rule(normal[0], face, bsp)
end) end)
textures[idx].rule = cb
callbacks[idx + 1] = cb
else else
textures[idx].rule = nil textures[idx].rule = nil
end end

View file

@ -57,8 +57,7 @@ static void* sdl3_create(pxl8_color_mode mode, pxl8_resolution resolution,
return NULL; return NULL;
} }
// Disable vsync for benchmarking if (!SDL_SetRenderVSync(ctx->renderer, 1)) {
if (!SDL_SetRenderVSync(ctx->renderer, 0)) {
pxl8_error("Failed to set vsync: %s", SDL_GetError()); pxl8_error("Failed to set vsync: %s", SDL_GetError());
} }