ULRE/inc/hgl/graph/Component.h

62 lines
1.2 KiB
C
Raw Normal View History

2024-10-19 13:08:05 +08:00
#pragma once
#include<hgl/type/TypeInfo.h>
#include<hgl/graph/VK.h>
VK_NAMESPACE_BEGIN
class SceneNode;
class ComponentData
{
};//class ComponentData
class ComponentManager;
class Component
{
ComponentData *data;
SceneNode *owner_node;
2024-10-19 13:08:05 +08:00
ComponentManager *manager;
2024-10-19 13:08:05 +08:00
public:
virtual const size_t GetTypeHash()=0; ///<取得当前组件类型
2024-10-19 13:08:05 +08:00
SceneNode *GetOwnerNode()const{return owner_node;} ///<取得当前组件所属节点
2024-10-19 13:08:05 +08:00
ComponentManager *GetManager()const{return manager;} ///<取得当前组件所属管理器
2024-10-19 13:08:05 +08:00
public:
Component()
{
data=nullptr;
owner_node=nullptr;
manager=nullptr;
}
Component(SceneNode *sn,ComponentData *cd,ComponentManager *cm);
virtual ~Component()=default;
2024-10-19 13:08:05 +08:00
virtual void Update(const double delta_time){}; ///<更新组件
2024-10-19 13:08:05 +08:00
};//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);
}
}
2024-10-19 13:08:05 +08:00
};//class ComponentManager
VK_NAMESPACE_END