added Component.cpp/StaticMeshComponent.h/.cpp

This commit is contained in:
2024-10-20 23:28:46 +08:00
parent 83c1a067fe
commit a0b0027663
5 changed files with 59 additions and 16 deletions

View File

@@ -15,25 +15,47 @@ class ComponentManager;
class Component
{
ComponentData *data;
SceneNode *owner_node;
ComponentManager *manager;
SceneNode *owner;
public:
ComponentManager *GetManager()const{return manager;}
SceneNode *GetOwner()const{return owner;}
virtual const size_t GetTypeHash()=0;
public:
virtual const size_t GetTypeHash()=0; ///<取得当前组件类型
SceneNode *GetOwnerNode()const{return owner_node;} ///<取得当前组件所属节点
ComponentManager *GetManager()const{return manager;} ///<取得当前组件所属管理器
public:
Component()
{
data=nullptr;
owner_node=nullptr;
manager=nullptr;
}
Component(SceneNode *sn,ComponentData *cd,ComponentManager *cm);
virtual ~Component()=default;
virtual void Update(const double delta_time){}; ///<更新组件
};//class Component
class ComponentManager
{
ObjectList<Component> component_list;
public:
virtual void Update(const double delta_time)
{
for(Component *c:component_list)
{
c->Update(delta_time);
}
}
};//class ComponentManager
VK_NAMESPACE_END

View File

@@ -0,0 +1,19 @@
#pragma once
#include<hgl/graph/Component.h>
#include<hgl/graph/mesh/StaticMesh.h>
VK_NAMESPACE_BEGIN
class StaticMeshComponentData:public ComponentData
{
StaticMesh *static_mesh;
};//class StaticMeshComponentData:public ComponentData
class StaticMeshComponent:public Component
{
};//class StaticMeshComponent:public Component
VK_NAMESPACE_END