From 5729b49610732e2237cc2de47655eae0e93cf080 Mon Sep 17 00:00:00 2001 From: bb Date: Fri, 12 Jan 2018 21:01:17 +0000 Subject: [PATCH] Don't early return but update the active query when having no position or when outOfWorld Based on Patch By: fatherbushido Patch By: temple Differential Revision: https://code.wildfiregames.com/D1219 Differential Revision: https://code.wildfiregames.com/D704 fixes #4658 This was SVN commit r20845. --- .../components/CCmpRangeManager.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/source/simulation2/components/CCmpRangeManager.cpp b/source/simulation2/components/CCmpRangeManager.cpp index e939dad7bb..48018d6479 100644 --- a/source/simulation2/components/CCmpRangeManager.cpp +++ b/source/simulation2/components/CCmpRangeManager.cpp @@ -1101,14 +1101,13 @@ public: if (!query.enabled) continue; - CmpPtr cmpSourcePosition(query.source); - if (!cmpSourcePosition || !cmpSourcePosition->IsInWorld()) - continue; - results.clear(); - results.reserve(query.lastMatch.size()); - CFixedVector2D pos = cmpSourcePosition->GetPosition2D(); - PerformQuery(query, results, pos); + CmpPtr cmpSourcePosition(query.source); + if (cmpSourcePosition && cmpSourcePosition->IsInWorld()) + { + results.reserve(query.lastMatch.size()); + PerformQuery(query, results, cmpSourcePosition->GetPosition2D()); + } // Compute the changes vs the last match added.clear(); @@ -1122,7 +1121,8 @@ public: if (added.empty() && removed.empty()) continue; - std::stable_sort(added.begin(), added.end(), EntityDistanceOrdering(m_EntityData, cmpSourcePosition->GetPosition2D())); + if (cmpSourcePosition && cmpSourcePosition->IsInWorld()) + std::stable_sort(added.begin(), added.end(), EntityDistanceOrdering(m_EntityData, cmpSourcePosition->GetPosition2D())); messages.resize(messages.size() + 1); std::pair& back = messages.back(); @@ -1130,7 +1130,7 @@ public: back.second.tag = it->first; back.second.added.swap(added); back.second.removed.swap(removed); - it->second.lastMatch.swap(results); + query.lastMatch.swap(results); } CComponentManager& cmpMgr = GetSimContext().GetComponentManager();