From 058fc459a9ec319a264532bb3ac17abd45ce42af Mon Sep 17 00:00:00 2001 From: Sara Date: Wed, 29 Apr 2026 11:05:32 +0200 Subject: [PATCH] feat: PlayerBehaviourTree references animationtree --- modules/viscosity/player_behaviour_tree.cpp | 7 +++++-- modules/viscosity/player_behaviour_tree.h | 3 +++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/modules/viscosity/player_behaviour_tree.cpp b/modules/viscosity/player_behaviour_tree.cpp index 19b48526..474125c8 100644 --- a/modules/viscosity/player_behaviour_tree.cpp +++ b/modules/viscosity/player_behaviour_tree.cpp @@ -7,9 +7,10 @@ #include "scene/main/viewport.h" void PlayerBehaviourTree::_bind_methods() { - BIND_PROPERTY(Variant::VECTOR2, move_input); + BIND_HPROPERTY(Variant::VECTOR2, move_input, PROPERTY_HINT_NONE, "", PROPERTY_USAGE_READ_ONLY); BIND_HPROPERTY(Variant::OBJECT, player_body, PROPERTY_HINT_NODE_TYPE, "PlayerBody", PROPERTY_USAGE_NO_EDITOR); BIND_HPROPERTY(Variant::OBJECT, character, PROPERTY_HINT_NODE_TYPE, "Node3D"); + BIND_HPROPERTY(Variant::OBJECT, anim, PROPERTY_HINT_NODE_TYPE, "AnimationPlayer", PROPERTY_USAGE_READ_ONLY); ClassDB::bind_method(D_METHOD("get_world_move_input"), &self_type::get_world_move_input); } @@ -22,7 +23,9 @@ void PlayerBehaviourTree::_notification(int what) { return; case NOTIFICATION_ENTER_TREE: this->player_body = cast_to(get_parent()); - this->character = cast_to(this->player_body->get_node(NodePath("Character"))); + if (this->character) { + this->anim = cast_to(this->character->get_node(NodePath("AnimationTree"))); + } return; case NOTIFICATION_READY: set_process_unhandled_input(true); diff --git a/modules/viscosity/player_behaviour_tree.h b/modules/viscosity/player_behaviour_tree.h index 4ba43a11..9b0236a8 100644 --- a/modules/viscosity/player_behaviour_tree.h +++ b/modules/viscosity/player_behaviour_tree.h @@ -4,6 +4,7 @@ #include "core/object/class_db.h" #include "macros.h" #include "player_body.h" +#include "scene/animation/animation_tree.h" class PlayerBehaviourTree : public BehaviourTree { GDCLASS(PlayerBehaviourTree, BehaviourTree); @@ -20,9 +21,11 @@ private: Vector2 move_input{ 0, 0 }; PlayerBody *player_body{ nullptr }; Node3D *character{ nullptr }; + AnimationTree *anim{ nullptr }; public: GET_SET_FNS(Vector2, move_input); GET_SET_FNS(PlayerBody *, player_body); GET_SET_FNS(Node3D *, character); + GET_SET_FNS(AnimationTree *, anim); };