+
+#########
+# actions
+#########
+
+func _player_dash():
+ var move_direction := _get_player_move_direction()
+ if move_direction != Vector3.ZERO:
+ var dash_local_pos = move_direction * dash_length
+ # TODO: check if valid position, crop the vector to last valid position
+ global_position += dash_local_pos