Add ModelInstanceActor::GetMaterialSlots
This commit is contained in:
@@ -27,7 +27,6 @@ public:
|
||||
/// <summary>
|
||||
/// Returns true if material is an material instance.
|
||||
/// </summary>
|
||||
/// <returns>True if it's a material instance, otherwise false.</returns>
|
||||
virtual bool IsMaterialInstance() const = 0;
|
||||
|
||||
public:
|
||||
|
||||
@@ -898,6 +898,14 @@ void AnimatedModel::Deserialize(DeserializeStream& stream, ISerializeModifier* m
|
||||
DrawModes |= DrawPass::GlobalSurfaceAtlas;
|
||||
}
|
||||
|
||||
const Span<MaterialSlot> AnimatedModel::GetMaterialSlots() const
|
||||
{
|
||||
const auto model = SkinnedModel.Get();
|
||||
if (model && !model->WaitForLoaded())
|
||||
return ToSpan(model->MaterialSlots);
|
||||
return Span<MaterialSlot>();
|
||||
}
|
||||
|
||||
MaterialBase* AnimatedModel::GetMaterial(int32 entryIndex)
|
||||
{
|
||||
if (SkinnedModel)
|
||||
|
||||
@@ -373,6 +373,7 @@ public:
|
||||
bool IntersectsItself(const Ray& ray, Real& distance, Vector3& normal) override;
|
||||
void Serialize(SerializeStream& stream, const void* otherObj) override;
|
||||
void Deserialize(DeserializeStream& stream, ISerializeModifier* modifier) override;
|
||||
const Span<MaterialSlot> GetMaterialSlots() const override;
|
||||
MaterialBase* GetMaterial(int32 entryIndex) override;
|
||||
bool IntersectsEntry(int32 entryIndex, const Ray& ray, Real& distance, Vector3& normal) override;
|
||||
bool IntersectsEntry(const Ray& ray, Real& distance, Vector3& normal, int32& entryIndex) override;
|
||||
|
||||
@@ -35,6 +35,11 @@ public:
|
||||
/// </summary>
|
||||
API_PROPERTY() void SetEntries(const Array<ModelInstanceEntry>& value);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the material slots array set on the asset (eg. model or skinned model asset).
|
||||
/// </summary>
|
||||
API_PROPERTY(Sealed) virtual const Span<class MaterialSlot> GetMaterialSlots() const = 0;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the material used to draw the meshes which are assigned to that slot (set in Entries or model's default).
|
||||
/// </summary>
|
||||
|
||||
@@ -341,6 +341,14 @@ void SplineModel::OnParentChanged()
|
||||
OnSplineUpdated();
|
||||
}
|
||||
|
||||
const Span<MaterialSlot> SplineModel::GetMaterialSlots() const
|
||||
{
|
||||
const auto model = Model.Get();
|
||||
if (model && !model->WaitForLoaded())
|
||||
return ToSpan(model->MaterialSlots);
|
||||
return Span<MaterialSlot>();
|
||||
}
|
||||
|
||||
MaterialBase* SplineModel::GetMaterial(int32 entryIndex)
|
||||
{
|
||||
if (Model)
|
||||
|
||||
@@ -115,6 +115,7 @@ public:
|
||||
void Serialize(SerializeStream& stream, const void* otherObj) override;
|
||||
void Deserialize(DeserializeStream& stream, ISerializeModifier* modifier) override;
|
||||
void OnParentChanged() override;
|
||||
const Span<MaterialSlot> GetMaterialSlots() const override;
|
||||
MaterialBase* GetMaterial(int32 entryIndex) override;
|
||||
|
||||
protected:
|
||||
|
||||
@@ -535,6 +535,14 @@ void StaticModel::Deserialize(DeserializeStream& stream, ISerializeModifier* mod
|
||||
}
|
||||
}
|
||||
|
||||
const Span<MaterialSlot> StaticModel::GetMaterialSlots() const
|
||||
{
|
||||
const auto model = Model.Get();
|
||||
if (model && !model->WaitForLoaded())
|
||||
return ToSpan(model->MaterialSlots);
|
||||
return Span<MaterialSlot>();
|
||||
}
|
||||
|
||||
MaterialBase* StaticModel::GetMaterial(int32 entryIndex)
|
||||
{
|
||||
if (Model)
|
||||
|
||||
@@ -166,6 +166,7 @@ public:
|
||||
bool IntersectsItself(const Ray& ray, Real& distance, Vector3& normal) override;
|
||||
void Serialize(SerializeStream& stream, const void* otherObj) override;
|
||||
void Deserialize(DeserializeStream& stream, ISerializeModifier* modifier) override;
|
||||
const Span<MaterialSlot> GetMaterialSlots() const override;
|
||||
MaterialBase* GetMaterial(int32 entryIndex) override;
|
||||
bool IntersectsEntry(int32 entryIndex, const Ray& ray, Real& distance, Vector3& normal) override;
|
||||
bool IntersectsEntry(const Ray& ray, Real& distance, Vector3& normal, int32& entryIndex) override;
|
||||
|
||||
Reference in New Issue
Block a user