2024-09-06 01:04:28 +08:00
|
|
|
#pragma once
|
2025-04-03 01:35:39 +08:00
|
|
|
|
2024-09-06 01:04:28 +08:00
|
|
|
#include<hgl/graph/SceneNode.h>
|
2025-05-22 01:42:16 +08:00
|
|
|
#include<hgl/type/Pool.h>
|
2024-09-06 01:04:28 +08:00
|
|
|
|
2025-04-03 01:35:39 +08:00
|
|
|
namespace hgl::graph
|
2024-09-06 01:04:28 +08:00
|
|
|
{
|
2025-04-03 01:35:39 +08:00
|
|
|
/**
|
2025-06-04 00:04:46 +08:00
|
|
|
* 场景管理器<Br>
|
|
|
|
* 管理一个场景中的所有资源与场景节点
|
2025-04-03 01:35:39 +08:00
|
|
|
*/
|
2025-06-04 00:04:46 +08:00
|
|
|
class Scene
|
2025-04-03 01:35:39 +08:00
|
|
|
{
|
2025-06-04 00:04:46 +08:00
|
|
|
U8String SceneName; ///<场景名称
|
2025-05-22 01:42:16 +08:00
|
|
|
|
|
|
|
ObjectList<SceneNode> SceneNodePool; ///<场景节点池
|
|
|
|
|
2025-06-04 00:04:46 +08:00
|
|
|
SceneNode *root_node; ///<场景根节点
|
2025-04-03 01:35:39 +08:00
|
|
|
|
2025-05-22 01:42:16 +08:00
|
|
|
public:
|
|
|
|
|
2025-06-04 00:04:46 +08:00
|
|
|
const U8String & GetSceneName()const{return SceneName;} ///<获取场景名称
|
2025-05-22 01:42:16 +08:00
|
|
|
|
2025-06-04 00:04:46 +08:00
|
|
|
SceneNode * GetRootNode (){return root_node;} ///<获取场景根节点
|
2025-05-22 01:42:16 +08:00
|
|
|
|
2025-04-03 01:35:39 +08:00
|
|
|
public:
|
2024-09-06 01:04:28 +08:00
|
|
|
|
2025-06-04 00:04:46 +08:00
|
|
|
Scene()
|
2025-04-03 01:35:39 +08:00
|
|
|
{
|
|
|
|
root_node=new SceneNode;
|
|
|
|
}
|
2024-09-06 01:04:28 +08:00
|
|
|
|
2025-06-04 00:04:46 +08:00
|
|
|
virtual ~Scene()
|
2025-04-03 01:35:39 +08:00
|
|
|
{
|
|
|
|
SAFE_CLEAR(root_node);
|
|
|
|
}
|
2025-06-04 00:04:46 +08:00
|
|
|
};//class Scene
|
2025-05-22 01:42:16 +08:00
|
|
|
|
2025-06-04 00:04:46 +08:00
|
|
|
bool RegistryScene(Scene *sw); ///<注册场景
|
2025-06-04 00:18:32 +08:00
|
|
|
bool UnregistryScene(const U8String &scene_name); ///<注销场景
|
2025-05-22 01:42:16 +08:00
|
|
|
|
2025-06-04 00:04:46 +08:00
|
|
|
inline bool UnregistryScene(Scene *sw) ///<注销场景
|
2025-05-22 01:42:16 +08:00
|
|
|
{
|
|
|
|
if(!sw)return(false);
|
|
|
|
|
2025-06-04 00:04:46 +08:00
|
|
|
return UnregistryScene(sw->GetSceneName());
|
2025-05-22 01:42:16 +08:00
|
|
|
}
|
|
|
|
|
2025-06-04 00:18:32 +08:00
|
|
|
Scene *GetScene(const U8String &scene_name); ///<获取指定名称的场景
|
2025-04-03 01:35:39 +08:00
|
|
|
}//namespace hgl::graph
|