准备开始实现StaticMeshComponent
This commit is contained in:
parent
3fd6f98ef7
commit
87c150d1bd
@ -36,7 +36,7 @@ class TestApp:public WorkObject
|
|||||||
private:
|
private:
|
||||||
|
|
||||||
MaterialInstance * material_instance =nullptr;
|
MaterialInstance * material_instance =nullptr;
|
||||||
Mesh * render_obj =nullptr;
|
Mesh * mesh_triangle =nullptr;
|
||||||
|
|
||||||
Pipeline * pipeline =nullptr;
|
Pipeline * pipeline =nullptr;
|
||||||
|
|
||||||
@ -79,7 +79,7 @@ private:
|
|||||||
position_data[i][1]=position_data_float[i][1]*ext.height;
|
position_data[i][1]=position_data_float[i][1]*ext.height;
|
||||||
}
|
}
|
||||||
|
|
||||||
render_obj=CreateMesh("Triangle",VERTEX_COUNT,material_instance,pipeline,
|
mesh_triangle=CreateMesh("Triangle",VERTEX_COUNT,material_instance,pipeline,
|
||||||
{
|
{
|
||||||
{VAN::Position,POSITION_DATA_FORMAT,position_data},
|
{VAN::Position,POSITION_DATA_FORMAT,position_data},
|
||||||
{VAN::Color, COLOR_DATA_FORMAT, color_data}
|
{VAN::Color, COLOR_DATA_FORMAT, color_data}
|
||||||
@ -87,9 +87,11 @@ private:
|
|||||||
|
|
||||||
SceneNode *scene_root=GetSceneRoot(); ///<取得场景根节点
|
SceneNode *scene_root=GetSceneRoot(); ///<取得场景根节点
|
||||||
|
|
||||||
scene_root->Add(new SceneNode(render_obj));
|
|
||||||
|
|
||||||
return(render_obj);
|
|
||||||
|
scene_root->Add(new SceneNode(mesh_triangle));
|
||||||
|
|
||||||
|
return(mesh_triangle);
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include"Gizmo.h"
|
#include"Gizmo.h"
|
||||||
#include<hgl/color/Color.h>
|
#include<hgl/color/Color.h>
|
||||||
|
|
||||||
@ -6,7 +7,7 @@ VK_NAMESPACE_BEGIN
|
|||||||
|
|
||||||
class SceneNode;
|
class SceneNode;
|
||||||
class PrimitiveCreater;
|
class PrimitiveCreater;
|
||||||
class StaticMesh;
|
class StaticMeshComponent;
|
||||||
|
|
||||||
constexpr const COLOR gizmo_color[size_t(GizmoColor::RANGE_SIZE)]=
|
constexpr const COLOR gizmo_color[size_t(GizmoColor::RANGE_SIZE)]=
|
||||||
{
|
{
|
||||||
@ -37,6 +38,6 @@ constexpr const float GIZMO_TWO_AXIS_OFFSET =5.0F;
|
|||||||
|
|
||||||
Mesh *GetGizmoRenderable(const GizmoShape &gs,const GizmoColor &);
|
Mesh *GetGizmoRenderable(const GizmoShape &gs,const GizmoColor &);
|
||||||
|
|
||||||
StaticMesh *CreateGizmoStaticMesh(SceneNode *);
|
StaticMeshComponent *CreateGizmoStaticMeshComponent(SceneNode *);
|
||||||
|
|
||||||
VK_NAMESPACE_END
|
VK_NAMESPACE_END
|
||||||
|
@ -103,7 +103,7 @@ public:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
virtual Component * CreateComponent(SceneNode *,ComponentData *)=0;
|
virtual Component * CreateComponent(ComponentData *)=0;
|
||||||
|
|
||||||
int GetComponentCount()const{return component_set.GetCount();}
|
int GetComponentCount()const{return component_set.GetCount();}
|
||||||
|
|
||||||
|
@ -7,7 +7,19 @@ COMPONENT_NAMESPACE_BEGIN
|
|||||||
|
|
||||||
struct StaticMeshComponentData:public ComponentData
|
struct StaticMeshComponentData:public ComponentData
|
||||||
{
|
{
|
||||||
Mesh *renderable;
|
Mesh *mesh;
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
StaticMeshComponentData()
|
||||||
|
{
|
||||||
|
mesh=nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
StaticMeshComponentData(Mesh *m)
|
||||||
|
{
|
||||||
|
mesh=m;
|
||||||
|
}
|
||||||
};//struct StaticMeshComponentData
|
};//struct StaticMeshComponentData
|
||||||
|
|
||||||
class StaticMeshComponent;
|
class StaticMeshComponent;
|
||||||
@ -31,9 +43,24 @@ public:
|
|||||||
|
|
||||||
StaticMeshComponentManager()=default;
|
StaticMeshComponentManager()=default;
|
||||||
|
|
||||||
StaticMeshComponent *CreateStaticMeshComponent(SceneNode *psn,StaticMeshComponentData *data);
|
StaticMeshComponent *CreateStaticMeshComponent(StaticMeshComponentData *data)
|
||||||
|
{
|
||||||
|
if(!data)return(nullptr);
|
||||||
|
|
||||||
virtual Component *CreateComponent(SceneNode *psn,ComponentData *data) override;
|
return(new StaticMeshComponent(data));
|
||||||
|
}
|
||||||
|
|
||||||
|
StaticMeshComponent *CreateStaticMeshComponent(Mesh *m)
|
||||||
|
{
|
||||||
|
return CreateStaticMeshComponent(new StaticMeshComponentData(m));
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual Component *CreateComponent(ComponentData *data) override
|
||||||
|
{
|
||||||
|
if(!data)return(nullptr);
|
||||||
|
|
||||||
|
return CreateStaticMeshComponent(reinterpret_cast<StaticMeshComponentData *>(data));
|
||||||
|
}
|
||||||
};//class StaticMeshComponentManager
|
};//class StaticMeshComponentManager
|
||||||
|
|
||||||
class StaticMeshComponent:public PrimitiveComponent
|
class StaticMeshComponent:public PrimitiveComponent
|
||||||
@ -42,10 +69,10 @@ class StaticMeshComponent:public PrimitiveComponent
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
StaticMeshComponent(SceneNode *psn,ComponentData *cd,ComponentManager *cm)
|
StaticMeshComponent(SceneNode *psn,StaticMeshComponentData *cd,StaticMeshComponentManager *cm)
|
||||||
:PrimitiveComponent(psn,cd,cm)
|
:PrimitiveComponent(psn,cd,cm)
|
||||||
{
|
{
|
||||||
sm_data=reinterpret_cast<StaticMeshComponentData *>(cd);
|
sm_data=cd;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual ~StaticMeshComponent()=default;
|
virtual ~StaticMeshComponent()=default;
|
||||||
|
@ -135,7 +135,7 @@ class IndirectDispatchBuffer;
|
|||||||
|
|
||||||
class RenderResource;
|
class RenderResource;
|
||||||
|
|
||||||
class StaticMesh;
|
class StaticMeshComponent;
|
||||||
|
|
||||||
class SceneNode;
|
class SceneNode;
|
||||||
class Scene;
|
class Scene;
|
||||||
|
@ -3,20 +3,5 @@
|
|||||||
|
|
||||||
COMPONENT_NAMESPACE_BEGIN
|
COMPONENT_NAMESPACE_BEGIN
|
||||||
|
|
||||||
StaticMeshComponent *StaticMeshComponentManager::CreateStaticMeshComponent(SceneNode *psn,StaticMeshComponentData *data)
|
|
||||||
{
|
|
||||||
if(!psn||!data)return(nullptr);
|
|
||||||
|
|
||||||
StaticMeshComponent *smc=new StaticMeshComponent(psn,data,this);
|
|
||||||
|
|
||||||
psn->AddComponent(smc);
|
|
||||||
|
|
||||||
return smc;
|
|
||||||
}
|
|
||||||
|
|
||||||
Component *StaticMeshComponentManager::CreateComponent(SceneNode *psn,ComponentData *data)
|
|
||||||
{
|
|
||||||
return CreateStaticMeshComponent(psn,reinterpret_cast<StaticMeshComponentData *>(data));
|
|
||||||
}
|
|
||||||
|
|
||||||
COMPONENT_NAMESPACE_END
|
COMPONENT_NAMESPACE_END
|
||||||
|
Loading…
x
Reference in New Issue
Block a user