#include "behaviour_node.h" #include "behaviour_nodes/behaviour_tree.h" #include "core/config/engine.h" #include "core/object/class_db.h" #include "macros.h" void BehaviourNode::_bind_methods() { BIND_ENUM_CONSTANT(Fail); BIND_ENUM_CONSTANT(Running); BIND_ENUM_CONSTANT(Success); ClassDB::bind_method(D_METHOD("get_behaviour_tree"), &self_type::get_behaviour_tree); ClassDB::bind_method(D_METHOD("set_status", "status"), &self_type::set_status); ClassDB::bind_method(D_METHOD("get_status"), &self_type::get_status); } void BehaviourNode::_notification(int what) { if (Engine::get_singleton()->is_editor_hint()) { return; } switch (what) { default: return; case NOTIFICATION_ENTER_TREE: Node *parent{ get_parent() }; this->parent = cast_to(parent); while (this->behaviour_tree == nullptr && parent != nullptr) { if ((this->behaviour_tree = cast_to(parent))) { break; } parent = parent->get_parent(); } return; } }