#ifndef STATE_MACHINE_HPP #define STATE_MACHINE_HPP #include #include #include namespace godot { class IState; class StateMachine : public Node { GDCLASS(StateMachine, Node); static void _bind_methods(); public: virtual void _enter_tree() override; virtual void _exit_tree() override; virtual void _process(double delta_time) override; void override_state(StringName new_state_class); void set_initial_state(StringName name); StringName get_initial_state() const; private: String initial_state{}; IState *state{nullptr}; HashMap available{}; }; } #endif // !STATE_MACHINE_HPP