make move speed consistent
This commit is contained in:
parent
34e534b6f2
commit
2e2461c35a
3 changed files with 19 additions and 16 deletions
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue