MeshComponent增加OverrideMaterial的设计,还未测试。下一步使用Gizmo3DMove来测试override material
This commit is contained in:
@@ -59,6 +59,7 @@ public:
|
||||
class MeshComponent:public RenderComponent
|
||||
{
|
||||
WeakPtr<ComponentData> sm_data;
|
||||
MaterialInstance* override_material = nullptr; // 新增
|
||||
|
||||
public:
|
||||
|
||||
@@ -88,6 +89,61 @@ public:
|
||||
|
||||
return mcd->mesh;
|
||||
}
|
||||
|
||||
public:
|
||||
|
||||
Pipeline *GetPipeline() const
|
||||
{
|
||||
Mesh *mesh=GetMesh();
|
||||
|
||||
if (!mesh)
|
||||
return nullptr;
|
||||
|
||||
return mesh->GetPipeline();
|
||||
}
|
||||
|
||||
void SetOverrideMaterial (MaterialInstance* mi){override_material=mi;}
|
||||
MaterialInstance * GetOverrideMaterial ()const{return override_material;}
|
||||
void ClearOverrideMaterial (){override_material=nullptr;}
|
||||
|
||||
MaterialInstance * GetMaterialInstance () const
|
||||
{
|
||||
if (override_material)
|
||||
return override_material;
|
||||
|
||||
Mesh *mesh=GetMesh();
|
||||
|
||||
if (!mesh)
|
||||
return nullptr;
|
||||
|
||||
return mesh->GetMaterialInstance();
|
||||
}
|
||||
|
||||
Material *GetMaterial() const
|
||||
{
|
||||
if (override_material)
|
||||
return override_material->GetMaterial();
|
||||
|
||||
Mesh *mesh=GetMesh();
|
||||
|
||||
if (!mesh)
|
||||
return nullptr;
|
||||
|
||||
return mesh->GetMaterial();
|
||||
}
|
||||
|
||||
const bool CanRender() const override
|
||||
{
|
||||
if (!sm_data.valid())
|
||||
return false;
|
||||
|
||||
const MeshComponentData *mcd=GetData();
|
||||
|
||||
if (!mcd || !mcd->mesh)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
};//class MeshComponent
|
||||
|
||||
COMPONENT_NAMESPACE_END
|
||||
|
Reference in New Issue
Block a user