From c84e33731b07face434803cfbbc33ef7c7e64052 Mon Sep 17 00:00:00 2001 From: Kah Wei Date: Fri, 25 Nov 2022 22:24:30 +0800 Subject: [PATCH] Fixed crash which occurs when changing the material of an object twice in a row --- .../src/Graphics/MiddleEnd/Interface/SHRenderable.cpp | 4 +++- SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHRenderable.h | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) 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() }; -- 2.40.1