X-Git-Url: http://git.purplebirdman.com/frog-ninja.git/blobdiff_plain/8225ba902c437bcadc8735df85a340e8bd10ed3d..2e697142bf5e1b94429281572bdc1cbf5868d5ce:/player/model.gd?ds=sidebyside diff --git a/player/model.gd b/player/model.gd index c32e2bc..cd61004 100644 --- a/player/model.gd +++ b/player/model.gd @@ -1,8 +1,6 @@ extends Node class_name PlayerModel -@onready var player: Player = $".." -@onready var camera: Camera3D = %camera @onready var moves: Dictionary = { "idle": $Idle, @@ -14,19 +12,21 @@ class_name PlayerModel "fallToRoll": $FallToRoll, "fallToLanding": $FallToLanding } -var current_move: Move +@onready var player: Player = $".." +@onready var skeleton: Skeleton3D = $Skeleton3D +@onready var animation_tree: ModelAnimationTree = $AnimationTree + +var current_move: Move -### func _ready() -> void: - # assign starting state - current_move = moves["idle"] - - # assign objects to each move - for move in moves.values(): + for state_name in moves.keys(): + var move: Move = moves[state_name] move.player = player - move.camera = camera + move.state_name = state_name + + assign_current_move("idle") func update(input: InputPacket, delta: float): @@ -34,10 +34,21 @@ func update(input: InputPacket, delta: float): if moves[relevent_move] != current_move: switch_to(relevent_move) current_move.update(input, delta) + animation_tree.set_walking_speed(player.velocity.length()) func switch_to(state: String): - player.state = state + animation_tree.animation_started.disconnect(current_move._on_animation_started) + animation_tree.animation_finished.disconnect(current_move._on_animation_finished) current_move.on_exit_state() + assign_current_move(state) + + +func assign_current_move(state: String): current_move = moves[state] current_move.on_enter_state() + + animation_tree.animation_started.connect(current_move._on_animation_started) + animation_tree.animation_finished.connect(current_move._on_animation_finished) + animation_tree.transition(state) + player.state = state