+
+
+# manage talking and expressions
+func talk() -> void:
+ animation_tree.set("parameters/motion/transition_request", "talk")
+
+
+# manage vectored movement
+func current_state() -> String:
+ return animation_tree.get("parameters/motion/current_state")
+
+
+func set_hips_direction(direction: float) -> void:
+ animation_tree.set("parameters/hips_direction/blend_position", clamp(direction, -PI / 2, PI / 2))
+
+
+func get_hips_direction() -> float:
+ return animation_tree.get("parameters/hips_direction/blend_position")
+
+
+func pose() -> void:
+ animation_tree.set("parameters/motion/transition_request", "pose")
+
+
+func idle() -> void:
+ animation_tree.set("parameters/motion/transition_request", "idle")
+
+
+func move_forward() -> void:
+ animation_tree.set("parameters/motion/transition_request", "forward")
+
+
+func move_backward() -> void:
+ animation_tree.set("parameters/motion/transition_request", "backward")
+
+
+func movement_speed(speed: float) -> void:
+ animation_tree.set("parameters/forward/blend_position", speed)
+ animation_tree.set("parameters/backward/blend_position", speed)
+
+
+func jump() -> void:
+ animation_tree.set("parameters/motion/transition_request", "fall")
+
+
+func fall() -> void:
+ animation_tree.set("parameters/motion/transition_request", "fall")
+
+
+func landing() -> void:
+ animation_tree.set("parameters/motion/transition_request", "landing")