临时可运行版本。已将SceneWorld改名为Scene,下一步改文件名。并将default_scene,default_renderer放在RenderFramework中
This commit is contained in:
parent
5c186fdb95
commit
839e187cb2
@ -26,18 +26,15 @@ namespace hgl
|
||||
graph::RenderPass *render_pass=nullptr;
|
||||
|
||||
bool destroy_flag=false;
|
||||
bool render_dirty=true;
|
||||
|
||||
protected:
|
||||
|
||||
//以下数据均取自RenderFramework
|
||||
|
||||
graph::RenderResource *db=nullptr; //暂时的,未来会被更好的机制替代
|
||||
|
||||
/**
|
||||
* 不管我们的游戏多么的复杂,一般在一个WorkObject中,都只需要一个SceneWorld以及一个Renderer即可。
|
||||
* 如果我们整体切换World,那么建议直接切换到新的WorkObject上。
|
||||
*/
|
||||
|
||||
graph::SceneWorld * world =nullptr; //世界
|
||||
|
||||
graph::Scene * scene=nullptr; //场景
|
||||
graph::Renderer * renderer=nullptr; //渲染器
|
||||
|
||||
public:
|
||||
@ -54,6 +51,9 @@ namespace hgl
|
||||
const bool IsDestroy ()const{return destroy_flag;}
|
||||
void MarkDestory(){destroy_flag=true;}
|
||||
|
||||
const bool IsRenderDirty ()const{return render_dirty;}
|
||||
void MarkRenderDirty(){render_dirty=true;}
|
||||
|
||||
public:
|
||||
|
||||
WorkObject(graph::RenderFramework *,graph::IRenderTarget *rt=nullptr);
|
||||
|
@ -17,6 +17,9 @@ class RenderTargetManager;
|
||||
|
||||
class RenderModule;
|
||||
|
||||
class Scene;
|
||||
class Renderer;
|
||||
|
||||
class CameraComponentManager{/*现阶段测试使用*/};
|
||||
class LightComponentManager{/*现阶段测试使用*/};
|
||||
|
||||
@ -47,6 +50,11 @@ protected:
|
||||
CameraComponentManager *camera_component_manager=nullptr;
|
||||
LightComponentManager *light_component_manager =nullptr;
|
||||
|
||||
protected:
|
||||
|
||||
Scene * default_scene =nullptr;
|
||||
Renderer * default_renderer=nullptr;
|
||||
|
||||
public:
|
||||
|
||||
Window * GetWindow ()const{return win;}
|
||||
@ -68,6 +76,11 @@ public:
|
||||
SwapchainModule * GetSwapchainModule (){return sc_module;}
|
||||
SwapchainRenderTarget * GetSwapchainRenderTarget(){return sc_module?sc_module->GetRenderTarget():nullptr;}
|
||||
|
||||
public:
|
||||
|
||||
Scene * GetDefaultScene (){return default_scene;}
|
||||
Renderer * GetDefaultRenderer (){return default_renderer;}
|
||||
|
||||
public:
|
||||
|
||||
RenderFramework(const OSString &);
|
||||
|
@ -6,7 +6,7 @@
|
||||
namespace hgl::graph
|
||||
{
|
||||
class SceneNode;
|
||||
class SceneWorld;
|
||||
class Scene;
|
||||
class Camera;
|
||||
class IRenderTarget;
|
||||
class RenderList;
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
namespace hgl::graph
|
||||
{
|
||||
class SceneWorld;
|
||||
class Scene;
|
||||
|
||||
using RenderTaskNameMap=Map<RenderTaskName,RenderTask *>;
|
||||
|
||||
@ -15,7 +15,7 @@ namespace hgl::graph
|
||||
class Renderer
|
||||
{
|
||||
IRenderTarget *render_target;
|
||||
SceneWorld *world;
|
||||
Scene *world;
|
||||
|
||||
Camera *camera;
|
||||
|
||||
@ -30,7 +30,7 @@ namespace hgl::graph
|
||||
|
||||
public:
|
||||
|
||||
SceneWorld *GetSceneWorld () const { return world; } ///<获取场景世界
|
||||
Scene *GetScene () const { return world; } ///<获取场景世界
|
||||
Camera * GetCurCamera () const { return camera; } ///<获取当前相机
|
||||
|
||||
public:
|
||||
@ -38,7 +38,7 @@ namespace hgl::graph
|
||||
Renderer(IRenderTarget *);
|
||||
virtual ~Renderer();
|
||||
|
||||
void SetCurWorld(SceneWorld *);
|
||||
void SetCurWorld(Scene *);
|
||||
void SetCurCamera(Camera *);
|
||||
|
||||
bool RenderFrame(RenderCmdBuffer *);
|
||||
|
@ -6,45 +6,45 @@
|
||||
namespace hgl::graph
|
||||
{
|
||||
/**
|
||||
* 世界场景管理器<Br>
|
||||
* 管理一个世界场景中的所有资源与场景节点
|
||||
* 场景管理器<Br>
|
||||
* 管理一个场景中的所有资源与场景节点
|
||||
*/
|
||||
class SceneWorld
|
||||
class Scene
|
||||
{
|
||||
U8String WorldName; ///<世界名称
|
||||
U8String SceneName; ///<场景名称
|
||||
|
||||
ObjectList<SceneNode> SceneNodePool; ///<场景节点池
|
||||
|
||||
SceneNode *root_node; ///<世界根节点
|
||||
SceneNode *root_node; ///<场景根节点
|
||||
|
||||
public:
|
||||
|
||||
const U8String & GetWorldName()const{return WorldName;} ///<获取世界名称
|
||||
const U8String & GetSceneName()const{return SceneName;} ///<获取场景名称
|
||||
|
||||
SceneNode * GetRootNode (){return root_node;} ///<获取世界根节点
|
||||
SceneNode * GetRootNode (){return root_node;} ///<获取场景根节点
|
||||
|
||||
public:
|
||||
|
||||
SceneWorld()
|
||||
Scene()
|
||||
{
|
||||
root_node=new SceneNode;
|
||||
}
|
||||
|
||||
virtual ~SceneWorld()
|
||||
virtual ~Scene()
|
||||
{
|
||||
SAFE_CLEAR(root_node);
|
||||
}
|
||||
};//class SceneWorld
|
||||
};//class Scene
|
||||
|
||||
bool RegistrySceneWorld(SceneWorld *sw); ///<注册场景世界
|
||||
bool UnregistrySceneWorld(const U8String &world_name); ///<注销场景世界
|
||||
bool RegistryScene(Scene *sw); ///<注册场景
|
||||
bool UnregistryScene(const U8String &world_name); ///<注销场景
|
||||
|
||||
inline bool UnregistrySceneWorld(SceneWorld *sw) ///<注销场景世界
|
||||
inline bool UnregistryScene(Scene *sw) ///<注销场景
|
||||
{
|
||||
if(!sw)return(false);
|
||||
|
||||
return UnregistrySceneWorld(sw->GetWorldName());
|
||||
return UnregistryScene(sw->GetSceneName());
|
||||
}
|
||||
|
||||
SceneWorld *GetSceneWorld(const U8String &world_name); ///<获取指定名称的场景世界
|
||||
Scene *GetScene(const U8String &world_name); ///<获取指定名称的场景
|
||||
}//namespace hgl::graph
|
||||
|
@ -17,7 +17,7 @@ namespace hgl::graph
|
||||
delete world;
|
||||
}
|
||||
|
||||
void Renderer::SetCurWorld(SceneWorld *sw)
|
||||
void Renderer::SetCurWorld(Scene *sw)
|
||||
{
|
||||
if(world==sw)
|
||||
return;
|
||||
|
@ -5,14 +5,14 @@ namespace hgl::graph
|
||||
{
|
||||
namespace
|
||||
{
|
||||
Map<U8String,SceneWorld *> scene_world_map;///<场景世界列表
|
||||
Map<U8String,Scene *> scene_world_map;///<场景世界列表
|
||||
}//namespace
|
||||
|
||||
bool RegistrySceneWorld(SceneWorld *sw)
|
||||
bool RegistryScene(Scene *sw)
|
||||
{
|
||||
if(!sw)return(false);
|
||||
|
||||
const U8String &world_name=sw->GetWorldName();
|
||||
const U8String &world_name=sw->GetSceneName();
|
||||
|
||||
if(scene_world_map.Find(world_name))
|
||||
return false;///<已经注册过了
|
||||
@ -21,7 +21,7 @@ namespace hgl::graph
|
||||
return true;
|
||||
}
|
||||
|
||||
SceneWorld *GetSceneWorld(const U8String &world_name)
|
||||
Scene *GetScene(const U8String &world_name)
|
||||
{
|
||||
if(world_name.IsEmpty())
|
||||
return(nullptr);
|
||||
@ -29,7 +29,7 @@ namespace hgl::graph
|
||||
return GetObjectFromMap(scene_world_map,world_name);
|
||||
}
|
||||
|
||||
bool UnregistrySceneWorld(const U8String &world_name)
|
||||
bool UnregistryScene(const U8String &world_name)
|
||||
{
|
||||
if(world_name.IsEmpty())
|
||||
return(false);
|
||||
|
@ -75,7 +75,7 @@ namespace hgl
|
||||
if(cur_work_object->IsTickable())
|
||||
Tick(cur_work_object);
|
||||
|
||||
if(win->IsVisible()&&cur_work_object->IsRenderable())
|
||||
if(win->IsVisible())//&&cur_work_object->IsRenderable())
|
||||
{
|
||||
Render(cur_work_object);
|
||||
dev->WaitIdle();
|
||||
|
@ -43,6 +43,8 @@ namespace hgl
|
||||
render_pass=rt->GetRenderPass();
|
||||
|
||||
db=rf->GetRenderResource();
|
||||
scene=rf->GetDefaultScene();
|
||||
renderer=rf->GetDefaultRenderer();
|
||||
}
|
||||
|
||||
void WorkObject::Render(double delta_time)
|
||||
|
Loading…
x
Reference in New Issue
Block a user