+
+var _last_movement_direction := Vector3.RIGHT
+@onready var _skin: KnightSkin = $skin
+@onready var _camera_pivot: Node3D = $"camera-pivot"
+@onready var _spring_arm: SpringArm3D = $"camera-pivot/SpringArm3D"
+@onready var _camera: Camera3D = $"camera-pivot/SpringArm3D/Camera3D"
+@onready var _camera_attr: CameraAttributes = _camera.attributes
+
+
+# inherited functions
+func _ready() -> void:
+ _spring_arm.spring_length = _camera_distance
+ _camera_attr.dof_blur_far_distance = _dof_blur_far_distance
+ _camera_pivot.rotate_y(_camera_pivot_rotate_y)
+
+
+func _input(event: InputEvent) -> void:
+ if event.is_action_released("player-jump"):
+ if velocity.y > 0:
+ velocity.y = 0
+ elif event.is_action_pressed("player-attack"):
+ if Input.is_action_pressed("player-up"):
+ _skin.attack_up()
+ _last_movement_direction = Vector3.FORWARD
+ elif Input.is_action_pressed("player-down") and not is_on_floor():
+ _skin.attack_down()
+ _last_movement_direction = Vector3.FORWARD
+ else:
+ _skin.attack_neutral()
+ elif event.is_action_pressed("player-up"):
+ _last_movement_direction = Vector3.FORWARD