aboutsummaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
Diffstat (limited to 'client')
-rw-r--r--client/global.gd15
-rw-r--r--client/map/items/item.gd6
2 files changed, 15 insertions, 6 deletions
diff --git a/client/global.gd b/client/global.gd
index 647cac32..d660173a 100644
--- a/client/global.gd
+++ b/client/global.gd
@@ -350,10 +350,17 @@ static func interpolate_angle(current, target, dt):
current = fmod(current, PI * 2)
target = fmod(target, PI * 2)
if abs(target - current) > PI:
- if target < 0:
- target += PI * 2
- else:
- target -= PI * 2
+ if target < 0: target += PI * 2
+ else: target -= PI * 2
+ return target + (current - target) * exp(-dt)
+
+# TODO not working in all cases yet but there was an attempt
+static func interpolate_angle_closest_quarter(current, target, dt):
+ current = fmod(current, PI * 2)
+ target = fmod(target, PI * 2)
+ while abs(target - current) > PI / 4.:
+ if target - current < 0: target += PI / 2
+ else: target -= PI / 2
return target + (current - target) * exp(-dt)
func find_menu(node: Node) -> Menu:
diff --git a/client/map/items/item.gd b/client/map/items/item.gd
index fc10dbee..2d046700 100644
--- a/client/map/items/item.gd
+++ b/client/map/items/item.gd
@@ -44,9 +44,11 @@ func _ready():
position = owned_by.global_position
func _process(delta):
- var ispeed = 30.0 if owned_by.get_parent().get_parent() is Player else 10.
+ var p = owned_by.get_parent().get_parent() is Player
+ var ispeed = 30.0 if p else 10.
position = G.interpolate(position, owned_by.global_position, delta * ispeed)
- rotation.y = G.interpolate_angle(rotation.y, owned_by.global_rotation.y, delta * ispeed)
+ if p: rotation.y = G.interpolate_angle(rotation.y, owned_by.global_rotation.y, delta * ispeed)
+ else: rotation.y = G.interpolate_angle_closest_quarter(rotation.y, owned_by.global_rotation.y, delta * ispeed)
func progress(p: float, warn: bool):
progress_instance.visible = true