diff --git a/Core/GameEngineDevice/Include/W3DDevice/GameClient/W3DScorch.h b/Core/GameEngineDevice/Include/W3DDevice/GameClient/W3DScorch.h index 0e35dd4eec0..dc33c9b61a0 100644 --- a/Core/GameEngineDevice/Include/W3DDevice/GameClient/W3DScorch.h +++ b/Core/GameEngineDevice/Include/W3DDevice/GameClient/W3DScorch.h @@ -36,6 +36,7 @@ class W3DScorchInterface virtual void freeBuffers() = 0; virtual void clearAllScorches() = 0; virtual void invalidateBuffers() = 0; + virtual void invalidateTexture() = 0; virtual void addScorch(Vector3 location, Real radius, Scorches type) = 0; virtual void drawScorches(WorldHeightMap& map) = 0; }; @@ -50,6 +51,7 @@ class W3DScorch : public W3DScorchInterface virtual void freeBuffers() override; ///< frees up scorch buffers. virtual void clearAllScorches() override; virtual void invalidateBuffers() override; + virtual void invalidateTexture() override; virtual void addScorch(Vector3 location, Real radius, Scorches type) override; virtual void drawScorches(WorldHeightMap& map) override; ///< Draws the scorch mark polygons in m_vertexScorch. @@ -89,6 +91,7 @@ class W3DScorchDummy : public W3DScorchInterface virtual void freeBuffers() override {} virtual void clearAllScorches() override {} virtual void invalidateBuffers() override {} + virtual void invalidateTexture() override {} virtual void addScorch(Vector3, Real, Scorches) override {} virtual void drawScorches(WorldHeightMap&) override {} }; diff --git a/Core/GameEngineDevice/Source/W3DDevice/GameClient/BaseHeightMap.cpp b/Core/GameEngineDevice/Source/W3DDevice/GameClient/BaseHeightMap.cpp index 25c41156a89..8c28e1820c7 100644 --- a/Core/GameEngineDevice/Source/W3DDevice/GameClient/BaseHeightMap.cpp +++ b/Core/GameEngineDevice/Source/W3DDevice/GameClient/BaseHeightMap.cpp @@ -316,6 +316,7 @@ void BaseHeightMapRenderObjClass::setTextureLOD(Int lod) m_treeBuffer->setTextureLOD(lod); if (m_map) m_map->setTextureLOD(lod); + m_scorches->invalidateTexture(); } //============================================================================= diff --git a/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DScorch.cpp b/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DScorch.cpp index 04041b57877..113ebc7ec23 100644 --- a/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DScorch.cpp +++ b/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DScorch.cpp @@ -73,6 +73,14 @@ void W3DScorch::invalidateBuffers() m_curNumScorchIndices = 0; } +void W3DScorch::invalidateTexture() +{ + if (m_scorchTexture) + { + m_scorchTexture->Invalidate(); + } +} + void W3DScorch::addScorch(Vector3 location, Real radius, Scorches type) { if (m_numScorches >= MAX_SCORCH_MARKS)