diff --git a/Source/Editor/Viewport/PrefabWindowViewport.cs b/Source/Editor/Viewport/PrefabWindowViewport.cs index b9a654cf9..ceba98073 100644 --- a/Source/Editor/Viewport/PrefabWindowViewport.cs +++ b/Source/Editor/Viewport/PrefabWindowViewport.cs @@ -63,6 +63,7 @@ namespace FlaxEditor.Viewport private UpdateDelegate _update; private readonly ViewportDebugDrawData _debugDrawData = new ViewportDebugDrawData(32); + private readonly List _debugDrawActors = new List(); private PrefabSpritesRenderer _spritesRenderer; private IntPtr _tempDebugDrawContext; @@ -624,22 +625,25 @@ namespace FlaxEditor.Viewport DebugDraw.DrawActors(new IntPtr(actors), _debugDrawData.ActorsCount, false); } } - + // Debug draw all actors in prefab and collect actors - List pActors = new List(); + var viewFlags = Task.ViewFlags; + var collectActors = (viewFlags & ViewFlags.PhysicsDebug) != 0 || (viewFlags & ViewFlags.LightsDebug) != 0; + _debugDrawActors.Clear(); foreach (var child in SceneGraphRoot.ChildNodes) { if (child is not ActorNode actorNode) continue; var actor = actorNode.Actor; - Utils.GetActorsTree(pActors, actor); + if (collectActors) + Utils.GetActorsTree(_debugDrawActors, actor); DebugDraw.DrawActorsTree(actor); } - + // Draw physics debug - if ((Task.ViewFlags & ViewFlags.PhysicsDebug) != 0) + if ((viewFlags & ViewFlags.PhysicsDebug) != 0) { - foreach (var actor in pActors) + foreach (var actor in _debugDrawActors) { if (actor is Collider c && c.IsActiveInHierarchy) { @@ -647,16 +651,18 @@ namespace FlaxEditor.Viewport } } } - + // Draw lights debug - if ((Task.ViewFlags & ViewFlags.LightsDebug) != 0) + if ((viewFlags & ViewFlags.LightsDebug) != 0) { - foreach (var actor in pActors) + foreach (var actor in _debugDrawActors) { if (actor is Light l && l.IsActiveInHierarchy) DebugDraw.DrawLightDebug(l, renderContext.View); } } + + _debugDrawActors.Clear(); } } }