36 lines
		
	
	
		
			913 B
		
	
	
	
		
			C
		
	
	
	
		
		
			
		
	
	
			36 lines
		
	
	
		
			913 B
		
	
	
	
		
			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; | |||
|  | 
 | |||
|  |     using IntrusiveListValue<RefPtr<Actor>>::GetNext; | |||
|  |     using IntrusiveListValue<RefPtr<Actor>>::GetPrev; | |||
|  | 
 | |||
|  | public: | |||
|  |     void AddComponent(RefPtr<Component> Component); | |||
|  | 
 | |||
|  | public: | |||
|  |     Scene *Parent; // 指向父场景的指针,表示该Actor所属的场景
 | |||
|  | 
 | |||
|  | private: | |||
|  |     IntrusiveList<RefPtr<Component>> m_Components; | |||
|  | }; |