#ifndef GOAP_STATE_HPP #define GOAP_STATE_HPP #include "goap/actor_world_state.hpp" #include #include namespace gd = godot; namespace goap { class Action; class State : public gd::Node { friend class Action; GDCLASS(State, gd::Node); static void _bind_methods(); public: virtual void _enter_tree() override; virtual void _process(double delta_time) override; protected: Action const *get_action() const; bool is_action_done() const; virtual void _end_state(); void state_finished(); void state_failed(); private: void end_state(); private: ActorWorldState *world_state{nullptr}; Action const *action{nullptr}; }; } #endif // !GOAP_STATE_HPP