From 614ce0a151aa140775029740c25b1a5efa3ddf3f Mon Sep 17 00:00:00 2001 From: Kearwood Gilbert Date: Tue, 11 Nov 2025 23:45:03 -0800 Subject: [PATCH] Fixed leak of reflected objects --- kraken/nodes/KRModel.cpp | 11 ++++++----- kraken/nodes/KRSprite.cpp | 4 ++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/kraken/nodes/KRModel.cpp b/kraken/nodes/KRModel.cpp index b457f1c..bda65eb 100755 --- a/kraken/nodes/KRModel.cpp +++ b/kraken/nodes/KRModel.cpp @@ -254,14 +254,15 @@ void KRModel::loadModel() void KRModel::render(KRNode::RenderInfo& ri) { - ri.reflectedObjects.push_back(this); - - if (m_lod_visible >= LOD_VISIBILITY_PRESTREAM && ri.renderPass->getType() == RenderPassType::RENDER_PASS_PRESTREAM) { - preStream(*ri.viewport); + if (ri.renderPass->getType() == RenderPassType::RENDER_PASS_PRESTREAM) { + if (m_lod_visible >= LOD_VISIBILITY_PRESTREAM) { + preStream(*ri.viewport); + } } - if (m_lod_visible <= LOD_VISIBILITY_PRESTREAM) return; + ri.reflectedObjects.push_back(this); + KRNode::render(ri); // Don't render meshes on second pass of the deferred lighting renderer, as only lights will be applied diff --git a/kraken/nodes/KRSprite.cpp b/kraken/nodes/KRSprite.cpp index e9bd033..3828b53 100755 --- a/kraken/nodes/KRSprite.cpp +++ b/kraken/nodes/KRSprite.cpp @@ -114,8 +114,6 @@ AABB KRSprite::getBounds() void KRSprite::render(RenderInfo& ri) { - ri.reflectedObjects.push_back(this); - if (m_lod_visible >= LOD_VISIBILITY_PRESTREAM && ri.renderPass->getType() == RenderPassType::RENDER_PASS_PRESTREAM) { // Pre-stream sprites, even if the alpha is zero m_spriteTexture.load(&getContext()); @@ -127,6 +125,8 @@ void KRSprite::render(RenderInfo& ri) if (m_lod_visible <= LOD_VISIBILITY_PRESTREAM) return; + ri.reflectedObjects.push_back(this); + KRNode::render(ri);