aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--client/player/controllable_player.gd16
1 files changed, 15 insertions, 1 deletions
diff --git a/client/player/controllable_player.gd b/client/player/controllable_player.gd
index 67a7ca09..e2864290 100644
--- a/client/player/controllable_player.gd
+++ b/client/player/controllable_player.gd
@@ -52,6 +52,21 @@ func _input(_event):
chat_open = !chat_open
func _process(delta):
+ do_tick()
+ super(delta)
+
+const MAX_DT = 1./50.
+var last_tick = Time.get_ticks_usec()
+func do_tick():
+ var now = Time.get_ticks_usec()
+ var delta = (now - last_tick) / 1_000_000.
+ last_tick = now
+ while delta > 0.001:
+ var dt = min(delta, MAX_DT)
+ _process_movement(dt)
+ delta -= dt
+
+func _process_movement(delta):
var input = Input.get_vector("left", "right", "forward", "backwards")
var boost = Input.is_action_pressed("boost")
input = input.rotated( - game.camera.angle_target)
@@ -66,7 +81,6 @@ func _process(delta):
)
interact()
update(delta, input, boost)
- super(delta)
character.walking = input.length_squared() > 0.1
character.boosting = boosting