#ifndef ENEMY_BODY_H #define ENEMY_BODY_H #include "scene/3d/navigation/navigation_agent_3d.h" #include "scene/3d/physics/character_body_3d.h" #include "wave_survival/health_status.h" #include "wave_survival/state_machine.h" class NpcUnit; class EnemyBody : public CharacterBody3D { GDCLASS(EnemyBody, CharacterBody3D); static void _bind_methods(); void ready(); void physics_process(double delta); public: void _notification(int what); void set_movement_direction(Vector2 direction); void set_unit(NpcUnit *unit); NpcUnit *get_unit() const; NavigationAgent3D *get_nav() const; void set_movement_speed(float value); float get_movement_speed() const; private: float movement_speed{ 1.f }; Vector2 movement_direction{ 0, 0 }; StateMachine *fsm{ nullptr }; NpcUnit *unit{ nullptr }; NavigationAgent3D *nav{ nullptr }; }; #endif // !ENEMY_BODY_H