#pragma once #include "EngineFrame/Actor/Actor_base.h" #include "EngineFrame/Component/Component.h" #include "Tool/IntrusiveList.hpp" class Scene; /** * @brief Actor类,继承自Actor_base类 * * Actor类是一个基础的游戏对象类,可以添加到场景中 */ class Actor : public Actor_base, protected IntrusiveListValue> { public: Actor(); ~Actor() override; public: void Init() override; void HandleEvents(SDL_Event *e) override; void Update(float deltaTime) override; void Render(float deltaTime) override; void Clear() override; using IntrusiveListValue>::GetNext; using IntrusiveListValue>::GetPrev; public: void AddComponent(RefPtr Component); void RemoveComponent(RefPtr Component); void SetPos(SDL_Point pos); SDL_Point GetPos(); public: Scene *Parent; // 指向父场景的指针,表示该Actor所属的场景 SDL_Point Pos = {0, 0}; // 位置坐标 IntrusiveList> m_Components; // 组件列表 private: };