47 lines
1.3 KiB
C++
47 lines
1.3 KiB
C++
#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>>
|
||
{
|
||
|
||
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;
|
||
virtual void OnAdded(Scene *scene);
|
||
void ReorderActors(); // 重新排序Actor
|
||
|
||
using IntrusiveListValue<RefPtr<Actor>>::GetNext;
|
||
using IntrusiveListValue<RefPtr<Actor>>::GetPrev;
|
||
|
||
public:
|
||
void AddComponent(RefPtr<Component> Component);
|
||
void RemoveComponent(RefPtr<Component> Component);
|
||
void SetPos(VecPos pos);
|
||
VecPos GetPos();
|
||
|
||
public:
|
||
Scene *Parent; // 指向父场景的指针,表示该Actor所属的场景
|
||
VecPos Pos = {0, 0}; // 位置坐标
|
||
|
||
IntrusiveList<RefPtr<Component>> m_Components; // 组件列表
|
||
|
||
int RenderZOrder = 0; // 渲染层级
|
||
int GetRenderZOrder();
|
||
void SetRenderZOrder(int zOrder);
|
||
private:
|
||
};
|