Graphics/InstancedRenderable: Add OnInstancedRenderableInvalidateMaterial signal

This commit is contained in:
Lynix 2017-01-09 14:23:05 +01:00
parent 6b949afb9b
commit e0db2e69f8
2 changed files with 8 additions and 1 deletions

View File

@ -66,6 +66,7 @@ namespace Nz
// Signals: // Signals:
NazaraSignal(OnInstancedRenderableInvalidateBoundingVolume, const InstancedRenderable* /*instancedRenderable*/); NazaraSignal(OnInstancedRenderableInvalidateBoundingVolume, const InstancedRenderable* /*instancedRenderable*/);
NazaraSignal(OnInstancedRenderableInvalidateData, const InstancedRenderable* /*instancedRenderable*/, UInt32 /*flags*/); NazaraSignal(OnInstancedRenderableInvalidateData, const InstancedRenderable* /*instancedRenderable*/, UInt32 /*flags*/);
NazaraSignal(OnInstancedRenderableInvalidateMaterial, const InstancedRenderable* /*instancedRenderable*/, std::size_t /*skinIndex*/, std::size_t /*matIndex*/, MaterialRef /*newMat*/);
NazaraSignal(OnInstancedRenderableRelease, const InstancedRenderable* /*instancedRenderable*/); NazaraSignal(OnInstancedRenderableRelease, const InstancedRenderable* /*instancedRenderable*/);
struct InstanceData struct InstanceData

View File

@ -230,7 +230,13 @@ namespace Nz
NazaraAssert(matIndex < m_materials.size(), "Material index out of bounds"); NazaraAssert(matIndex < m_materials.size(), "Material index out of bounds");
NazaraAssert(material.IsValid(), "Material must be valid"); NazaraAssert(material.IsValid(), "Material must be valid");
m_materials[m_matCount * skinIndex + matIndex] = std::move(material); MaterialRef& matEntry = m_materials[m_matCount * skinIndex + matIndex];
if (matEntry != material)
{
OnInstancedRenderableInvalidateMaterial(this, skinIndex, matIndex, material);
matEntry = std::move(material);
}
} }
/*! /*!