SwitchGame/source/EngineFrame/Actor/Actor.h

42 lines
1.1 KiB
C
Raw Normal View History

2025-09-15 11:28:54 +08:00
#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<RefPtr<Actor>>
{
2025-09-18 15:21:43 +08:00
2025-09-15 11:28:54 +08:00
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<RefPtr<Actor>>::GetNext;
using IntrusiveListValue<RefPtr<Actor>>::GetPrev;
public:
void AddComponent(RefPtr<Component> Component);
2025-09-18 15:21:43 +08:00
void RemoveComponent(RefPtr<Component> Component);
void SetPos(SDL_Point pos);
SDL_Point GetPos();
2025-09-15 11:28:54 +08:00
public:
2025-09-18 15:21:43 +08:00
Scene *Parent; // 指向父场景的指针表示该Actor所属的场景
SDL_Point Pos = {0, 0}; // 位置坐标
IntrusiveList<RefPtr<Component>> m_Components; // 组件列表
2025-09-15 11:28:54 +08:00
private:
};