From 83c1a067fe2b223434ad4ebc950b68b38c8b96b5 Mon Sep 17 00:00:00 2001 From: hyzboy Date: Sun, 20 Oct 2024 23:17:04 +0800 Subject: [PATCH] Added Owner in SceneNode, and then have few other change. --- .../SceneComponent.h => Component.h} | 0 inc/hgl/graph/MaterialRenderList.h | 12 ++---- inc/hgl/graph/SceneNode.h | 14 ++++++- inc/hgl/graph/component/Component.h | 39 ------------------- src/SceneGraph/CMakeLists.txt | 21 +++++----- 5 files changed, 26 insertions(+), 60 deletions(-) rename inc/hgl/graph/{component/SceneComponent.h => Component.h} (100%) delete mode 100644 inc/hgl/graph/component/Component.h diff --git a/inc/hgl/graph/component/SceneComponent.h b/inc/hgl/graph/Component.h similarity index 100% rename from inc/hgl/graph/component/SceneComponent.h rename to inc/hgl/graph/Component.h diff --git a/inc/hgl/graph/MaterialRenderList.h b/inc/hgl/graph/MaterialRenderList.h index bed01b67..c9da1c99 100644 --- a/inc/hgl/graph/MaterialRenderList.h +++ b/inc/hgl/graph/MaterialRenderList.h @@ -44,7 +44,7 @@ public: };//struct RenderPipelineIndex /** -* 同一材质的对象渲染列表 +* 同一材质与管线的渲染列表 */ class MaterialRenderList { @@ -113,15 +113,9 @@ public: void Add(SceneNode *); - void SetCameraInfo(CameraInfo *ci) - { - camera_info=ci; - } + void SetCameraInfo(CameraInfo *ci){camera_info=ci;} - void Clear() - { - rn_list.Clear(); - } + void Clear(){rn_list.Clear();} void End(); diff --git a/inc/hgl/graph/SceneNode.h b/inc/hgl/graph/SceneNode.h index ea7771ee..14ac91b8 100644 --- a/inc/hgl/graph/SceneNode.h +++ b/inc/hgl/graph/SceneNode.h @@ -19,6 +19,8 @@ namespace hgl */ class SceneNode:public SceneOrient ///场景节点类 { + SceneNode *Owner; ///<上级节点 + SceneNodeID NodeID; ///<节点ID SceneNodeName NodeName; ///<节点名称 @@ -59,6 +61,8 @@ namespace hgl { SceneOrient::Clear(); + Owner=nullptr; + BoundingBox.SetZero(); LocalBoundingBox.SetZero(); @@ -74,8 +78,13 @@ namespace hgl return(true); } - Renderable *GetRenderable(){return render_obj;} - void SetRenderable(Renderable *); + void SetOwner(SceneNode *sn) {Owner=sn;} + SceneNode * GetOwner() noexcept{return Owner;} + const SceneNode * GetOwner()const noexcept{return Owner;} + + void SetRenderable(Renderable *); + Renderable *GetRenderable() noexcept{return render_obj;} + const Renderable *GetRenderable()const noexcept{return render_obj;} SceneNode *Add(SceneNode *sn) { @@ -83,6 +92,7 @@ namespace hgl return(nullptr); ChildNode.Add(sn); + sn->SetOwner(this); return sn; } diff --git a/inc/hgl/graph/component/Component.h b/inc/hgl/graph/component/Component.h deleted file mode 100644 index 49dc3dcc..00000000 --- a/inc/hgl/graph/component/Component.h +++ /dev/null @@ -1,39 +0,0 @@ -#pragma once - -#include -#include - -VK_NAMESPACE_BEGIN - -class SceneNode; - -class SceneComponentData -{ -};//class SceneComponentData - -class SceneComponentManager; - -class SceneComponent -{ - SceneComponentManager *manager; - - SceneNode *owner; - -public: - - SceneComponentManager *GetManager()const{return manager;} - - SceneNode *GetOwner()const{return owner;} - - virtual const size_t GetTypeHash()=0; - -public: - - -};//class SceneComponent - -class SceneComponentManager -{ -};//class SceneComponentManager - -VK_NAMESPACE_END diff --git a/src/SceneGraph/CMakeLists.txt b/src/SceneGraph/CMakeLists.txt index a291a088..32cd2e4b 100644 --- a/src/SceneGraph/CMakeLists.txt +++ b/src/SceneGraph/CMakeLists.txt @@ -64,13 +64,6 @@ SET(SCENE_GRAPH_SOURCE RenderList.cpp SOURCE_GROUP("Scene Graph" FILES ${SCENE_GRAPH_HEADER} ${SCENE_GRAPH_SOURCE}) -SET(SGC_HEADER_PATH ${SG_INCLUDE_PATH}/component) -SET(SGC_SOURCE_PATH component) - -SET(SG_COMPONENT_HEADER ${SGC_HEADER_PATH}/SceneComponent.h) - -SOURCE_GROUP("Scene Graph\\Component" FILES ${SG_COMPONENT_HEADER}) - SET(STATIC_MESH_HEADER_FILES ${SG_INCLUDE_PATH}/mesh/StaticMesh.h ${SG_INCLUDE_PATH}/mesh/StaticMeshLODPolicy.h ${SG_INCLUDE_PATH}/mesh/StaticMeshNode.h @@ -268,6 +261,17 @@ SET(VK_RENDERABLE_SOURCE ${SG_INCLUDE_PATH}/VKRenderable.h SOURCE_GROUP("Vulkan\\Renderable" FILES ${VK_RENDERABLE_SOURCE}) +#-Component------------------------------------------------------------- + +SET(SGC_HEADER_PATH ${SG_INCLUDE_PATH}/component) +SET(SGC_SOURCE_PATH component) + +SET(SG_COMPONENT_HEADER ${SG_INCLUDE_PATH}/Component.h) + +SOURCE_GROUP("Scene Graph\\Component" FILES ${SG_COMPONENT_HEADER}) + +#-RenderModue,RenderFramework------------------------------------------- + SET(RENDER_MODULE_HEADER ${SG_INCLUDE_PATH}/RenderModule.h) SET(RENDER_MODULE_SOURCE RenderModule/RenderModule.cpp) @@ -300,10 +304,7 @@ IF(UNIX) ELSE() IF(APPLE) - - ELSE() - SET(VULKAN_SURFACE_SOURCE Vulkan/Platform/XCBVulkan.cpp) ENDIF()