迁移到StaticMeshComponent渲染

This commit is contained in:
2025-06-14 21:05:36 +08:00
parent 92f612f675
commit f9675fc1e5
15 changed files with 140 additions and 141 deletions

View File

@@ -82,7 +82,7 @@ public:
public: //事件
virtual void OnAttach(SceneNode *node){if(node)OwnerNode=node;} ///<附加到节点事件
virtual void OnDetach(){OwnerNode=nullptr;} ///<从节点分离事件
virtual void OnDetach(SceneNode *node){OwnerNode=nullptr;} ///<从节点分离事件
virtual void OnFocusLost(){} ///<焦点丢失事件
virtual void OnFocusGained(){} ///<焦点获得事件

View File

@@ -1,6 +1,6 @@
#pragma once
#include<hgl/component/RenderComponent.h>
#include<hgl/component/SceneComponent.h>
COMPONENT_NAMESPACE_BEGIN
@@ -8,11 +8,11 @@ COMPONENT_NAMESPACE_BEGIN
* 图元组件<br>
* 组件中的元素必须是一个可以明确描述的几何体,可以被明确标记尺寸、参与空间、物理计算等。
*/
class PrimitiveComponent:public RenderComponent
class PrimitiveComponent:public SceneComponent
{
public:
using RenderComponent::RenderComponent;
using SceneComponent::SceneComponent;
virtual ~PrimitiveComponent()=default;
};//class PrimitiveComponent

View File

@@ -1,17 +1,17 @@
#pragma once
#include<hgl/component/Component.h>
#include<hgl/component/PrimitiveComponent.h>
COMPONENT_NAMESPACE_BEGIN
/**
* 可渲染组件
*/
class RenderComponent: public Component
class RenderComponent:public PrimitiveComponent
{
public:
using Component::Component;
using PrimitiveComponent::PrimitiveComponent;
virtual ~RenderComponent()=default;
};//class RenderComponent

View File

@@ -0,0 +1,20 @@
#pragma once
#include<hgl/component/Component.h>
COMPONENT_NAMESPACE_BEGIN
/**
* 场景组件<br>
* 场景组件中的元素必须是针对场景起作用的,并不一定需要自己绘出来,但也对场景产生影响。比如太阳光、全局风场
*/
class SceneComponent:public Component
{
public:
using Component::Component;
virtual ~SceneComponent()=default;
};//class SceneComponent
COMPONENT_NAMESPACE_END

View File

@@ -1,6 +1,6 @@
#pragma once
#include<hgl/component/PrimitiveComponent.h>
#include<hgl/component/RenderComponent.h>
#include<hgl/graph/Mesh.h>
COMPONENT_NAMESPACE_BEGIN
@@ -57,14 +57,14 @@ public:
virtual Component *CreateComponent(ComponentData *data) override;
};//class StaticMeshComponentManager
class StaticMeshComponent:public PrimitiveComponent
class StaticMeshComponent:public RenderComponent
{
StaticMeshComponentData *sm_data;
public:
StaticMeshComponent(StaticMeshComponentData *cd,StaticMeshComponentManager *cm)
:PrimitiveComponent(cd,cm)
:RenderComponent(cd,cm)
{
sm_data=cd;
}