From 79dbddc48efbe046c1312313738002fcabb96d21 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Mon, 27 Feb 2023 12:45:55 +0100 Subject: [PATCH] Fix `Level::FindActors` with `Tag` --- Source/Engine/Level/Level.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/Source/Engine/Level/Level.cpp b/Source/Engine/Level/Level.cpp index a67268b6a..4d81886a8 100644 --- a/Source/Engine/Level/Level.cpp +++ b/Source/Engine/Level/Level.cpp @@ -775,6 +775,14 @@ Actor* FindActorRecursive(Actor* node, const Tag& tag) return result; } +void FindActorsRecursive(Actor* node, const Tag& tag, Array& result) +{ + if (node->HasTag(tag)) + result.Add(node); + for (Actor* child : node->Children) + FindActorsRecursive(child, tag, result); +} + Actor* Level::FindActor(const Tag& tag, Actor* root) { PROFILE_CPU(); @@ -804,12 +812,12 @@ Array Level::FindActors(const Tag& tag, Actor* root) Array result; if (root) { - FindActorRecursive(root, tag); + FindActorsRecursive(root, tag, result); } else { for (Scene* scene : Scenes) - FindActorRecursive(scene, tag); + FindActorsRecursive(scene, tag, result); } return result; }