添加场景管理器(SceneManager)和场景(Scene)类,用于管理游戏场景的压入、弹出和切换 实现基础2D角色(Actor)类,支持父子关系和场景管理 添加侵入式链表(IntrusiveList)工具类,用于高效管理场景中的角色对象 在应用主循环中集成场景更新和渲染逻辑
41 lines
714 B
C++
41 lines
714 B
C++
#pragma once
|
|
|
|
#include <frostbite2D/base/RefObject.h>
|
|
#include <frostbite2D/types/type_alias.h>
|
|
#include <frostbite2D/utils/intrusive_list.hpp>
|
|
#include <frostbite2D/2d/actor.h>
|
|
#include <vector>
|
|
|
|
namespace frostbite2D {
|
|
|
|
using ActorList = IntrusiveList<RefPtr<Actor>>;
|
|
|
|
class Scene : public RefObject {
|
|
public:
|
|
Scene();
|
|
virtual ~Scene();
|
|
|
|
virtual void onEnter();
|
|
virtual void onExit();
|
|
|
|
void Update(float deltaTime);
|
|
void Render();
|
|
|
|
void AddActor(RefPtr<Actor> actor);
|
|
void RemoveActor(RefPtr<Actor> actor);
|
|
void RemoveAllActors();
|
|
|
|
protected:
|
|
void UpdateActors(float deltaTime);
|
|
void RenderActors();
|
|
|
|
private:
|
|
ActorList actors_;
|
|
|
|
friend class Actor;
|
|
friend class SceneManager;
|
|
};
|
|
|
|
}
|
|
|