2025-03-25 23:15:38 +08:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include<hgl/component/PrimitiveComponent.h>
|
|
|
|
#include<hgl/graph/VKRenderable.h>
|
|
|
|
|
|
|
|
COMPONENT_NAMESPACE_BEGIN
|
|
|
|
|
|
|
|
struct StaticMeshComponentData:public ComponentData
|
|
|
|
{
|
|
|
|
Renderable *renderable;
|
|
|
|
};//struct StaticMeshComponentData
|
|
|
|
|
2025-04-01 01:11:32 +08:00
|
|
|
class StaticMeshComponent;
|
2025-03-25 23:15:38 +08:00
|
|
|
|
|
|
|
class StaticMeshComponentManager:public ComponentManager
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
|
|
|
|
StaticMeshComponentManager()=default;
|
|
|
|
|
2025-04-01 01:11:32 +08:00
|
|
|
size_t ComponentHashCode()const override;
|
|
|
|
|
2025-03-25 23:15:38 +08:00
|
|
|
StaticMeshComponent *CreateStaticMeshComponent(SceneNode *psn,StaticMeshComponentData *data);
|
|
|
|
|
2025-04-01 01:11:32 +08:00
|
|
|
virtual Component *CreateComponent(SceneNode *psn,ComponentData *data) override;
|
2025-03-25 23:15:38 +08:00
|
|
|
};//class StaticMeshComponentManager
|
|
|
|
|
|
|
|
class StaticMeshComponent:public PrimitiveComponent
|
|
|
|
{
|
|
|
|
StaticMeshComponentData *sm_data;
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
StaticMeshComponent(SceneNode *psn,ComponentData *cd,ComponentManager *cm)
|
|
|
|
:PrimitiveComponent(psn,cd,cm)
|
|
|
|
{
|
|
|
|
sm_data=reinterpret_cast<StaticMeshComponentData *>(cd);
|
|
|
|
}
|
|
|
|
|
|
|
|
virtual ~StaticMeshComponent()
|
|
|
|
{
|
2025-04-01 01:11:32 +08:00
|
|
|
SAFE_CLEAR(sm_data);
|
2025-03-25 23:15:38 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
StaticMeshComponentData &GetData() {return *sm_data;}
|
|
|
|
const StaticMeshComponentData &GetData()const {return *sm_data;}
|
|
|
|
|
|
|
|
};//class StaticMeshComponent
|
|
|
|
|
|
|
|
COMPONENT_NAMESPACE_END
|