diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHRenderable.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHRenderable.cpp index 5dc5d22c..d3518e67 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHRenderable.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHRenderable.cpp @@ -66,10 +66,12 @@ namespace SHADE { oldMaterial = material; material = {}; + oldMatIsShared = false; } else if (sharedMaterial) { oldMaterial = sharedMaterial; + oldMatIsShared = true; } // Update the material @@ -150,7 +152,7 @@ namespace SHADE { matChanged = false; meshChanged = false; - if (oldMaterial) + if (oldMaterial && !oldMatIsShared) oldMaterial.Free(); oldMaterial = {}; oldMesh = {}; diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHRenderable.h b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHRenderable.h index 39132ca0..3ab98ee1 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHRenderable.h +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHRenderable.h @@ -90,6 +90,7 @@ namespace SHADE bool matChanged = true; Handle oldMaterial; uint8_t lightLayer; + bool oldMatIsShared = false; RTTR_ENABLE() };