diff --git a/Source/Engine/Level/Level.cpp b/Source/Engine/Level/Level.cpp index ae617b980..7b6a3844f 100644 --- a/Source/Engine/Level/Level.cpp +++ b/Source/Engine/Level/Level.cpp @@ -740,12 +740,14 @@ Actor* FindActorRecursive(Actor* node, const Tag& tag) return result; } -void FindActorsRecursive(Actor* node, const Tag& tag, Array& result) +void FindActorsRecursive(Actor* node, const Tag& tag, const bool activeOnly, Array& result) { + if (activeOnly && !node->GetIsActive()) + return; if (node->HasTag(tag)) result.Add(node); for (Actor* child : node->Children) - FindActorsRecursive(child, tag, result); + FindActorsRecursive(child, tag, activeOnly, result); } void FindActorsRecursiveByParentTags(Actor* node, const Array& tags, Array& result) @@ -785,19 +787,19 @@ void FindActorRecursive(Actor* node, const Tag& tag, Array& result) FindActorRecursive(child, tag, result); } -Array Level::FindActors(const Tag& tag, Actor* root) +Array Level::FindActors(const Tag& tag, const bool activeOnly, Actor* root) { PROFILE_CPU(); Array result; if (root) { - FindActorsRecursive(root, tag, result); + FindActorsRecursive(root, tag, activeOnly, result); } else { ScopeLock lock(ScenesLock); for (Scene* scene : Scenes) - FindActorsRecursive(scene, tag, result); + FindActorsRecursive(scene, tag, activeOnly, result); } return result; } diff --git a/Source/Engine/Level/Level.h b/Source/Engine/Level/Level.h index e27b81bb9..a7524b40a 100644 --- a/Source/Engine/Level/Level.h +++ b/Source/Engine/Level/Level.h @@ -494,9 +494,10 @@ public: /// Tries to find the actors with the given tag (returns all found). /// /// The tag of the actor to search for. + /// Find only active actors. /// The custom root actor to start searching from (hierarchical), otherwise null to search all loaded scenes. /// Found actors or empty if none. - API_FUNCTION() static Array FindActors(const Tag& tag, Actor* root = nullptr); + API_FUNCTION() static Array FindActors(const Tag& tag, const bool activeOnly = false, Actor* root = nullptr); /// /// Search actors using a parent parentTag.