Fix crash when setting up recursive Material Instances inheritance

This commit is contained in:
Wojtek Figat
2022-07-23 15:28:49 +02:00
parent 37fbc7600e
commit 0a1d8f6b3b

View File

@@ -264,6 +264,20 @@ void MaterialInstance::SetBaseMaterial(MaterialBase* baseMaterial)
if (baseMaterial == _baseMaterial)
return;
#if !BUILD_RELEASE
// Prevent recursion
auto mi = Cast<MaterialInstance>(baseMaterial);
while (mi)
{
if (mi == this)
{
LOG(Error, "Cannot set base material of {0} to {1} because it's recursive.", ToString(), baseMaterial->ToString());
return;
}
mi = Cast<MaterialInstance>(mi->GetBaseMaterial());
}
#endif
// Release previous parameters
Params.Dispose();