HideNode BuildNodesForPlayerLoopSystem(PlayerLoopSystem system, ref int currentId) { List <HideNode> children = null; if (system.subSystemList != null) { foreach (var subSystem in system.subSystemList) { AddNodeIgnoreNulls(ref children, BuildNodesForPlayerLoopSystem(subSystem, ref currentId)); } } else { var executionDelegate = system.updateDelegate; ScriptBehaviourUpdateOrder.DummyDelegateWrapper dummy; if (executionDelegate != null && (dummy = executionDelegate.Target as ScriptBehaviourUpdateOrder.DummyDelegateWrapper) != null) { var rootSystem = dummy.System; return(BuildNodesForComponentSystem(rootSystem, ref currentId)); } } if (children != null || getWorldSelection() == null) { var systemNode = new HideNode(new TreeViewItem() { id = currentId++, displayName = system.type?.Name }); systemNode.Children = children; return(systemNode); } return(null); }
void BuildNodeTree() { systemsById.Clear(); worldsById.Clear(); recordersBySystem.Clear(); hideNodesById.Clear(); var currentID = kAllEntitiesItemId + 1; lastPlayerLoop = PlayerLoop.GetCurrentPlayerLoop(); rootNode = BuildNodesForPlayerLoopSystem(lastPlayerLoop, ref currentID) ?? new HideNode(new TreeViewItem { id = currentID, displayName = "Root" }); if (EntityDebugger.extraSystems != null) { foreach (var system in EntityDebugger.extraSystems) { if (system != null) { AddNodeIgnoreNulls(ref rootNode.Children, BuildNodesForComponentSystem(system, ref currentID)); } } } }
private HideNode CreateNodeForManager(int id, ComponentSystemBase system) { var active = true; if (!(system is ComponentSystemGroup)) { managersById.Add(id, system); worldsById.Add(id, system.World); var recorder = Recorder.Get($"{system.World.Name} {system.GetType().FullName}"); recordersByManager.Add(system, new AverageRecorder(recorder)); recorder.enabled = true; active = false; } var name = getWorldSelection() == null ? $"{system.GetType().Name} ({system.World.Name})" : system.GetType().Name; var item = new TreeViewItem { id = id, displayName = name }; var hideNode = new HideNode(item) { Active = active }; hideNodesById.Add(id, hideNode); return(hideNode); }
HideNode CreateNodeForManager(int id, ComponentSystemBase system) { var active = true; if (!(system is ComponentSystemGroup)) { managersById.Add(id, system); worldsById.Add(id, system.World); var recorder = Recorder.Get($"{system.World?.Name ?? "none"} {system.GetType().FullName}"); if (!recordersByManager.ContainsKey(system)) { recordersByManager.Add(system, new AverageRecorder(recorder)); } else { UnityEngine.Debug.LogError("System added twice: " + system); } recorder.enabled = true; active = false; } var name = getWorldSelection() == null ? $"{system.GetType().Name} ({system.World?.Name ?? "none"})" : system.GetType().Name; var item = new TreeViewItem { id = id, displayName = name }; var hideNode = new HideNode(item) { Active = active }; hideNodesById.Add(id, hideNode); return(hideNode); }
public void AddChild(HideNode child) { if (Children == null) { Children = new List <HideNode>(); } Children.Add(child); }
void AddNodeIgnoreNulls(ref List <HideNode> list, HideNode node) { if (node == null) { return; } if (list == null) { list = new List <HideNode>(); } list.Add(node); }
private void BuildNodeTree() { managersById.Clear(); worldsById.Clear(); recordersByManager.Clear(); hideNodesById.Clear(); var currentID = kAllEntitiesItemId + 1; lastPlayerLoop = ScriptBehaviourUpdateOrder.CurrentPlayerLoop; rootNode = BuildNodesForPlayerLoopSystem(ScriptBehaviourUpdateOrder.CurrentPlayerLoop, ref currentID) ?? new HideNode(new TreeViewItem { id = currentID, displayName = "Root" }); return; }
bool GetDefaultExpandedIds(HideNode parent, List <int> ids) { var shouldExpand = systemsById.ContainsKey(parent.Item.id); if (parent.Children != null) { foreach (var child in parent.Children) { shouldExpand |= GetDefaultExpandedIds(child, ids); } if (shouldExpand) { ids.Add(parent.Item.id); } } return(shouldExpand); }
private HideNode CreateManagerItem(int id, ScriptBehaviourManager manager, World world) { managersById.Add(id, manager); worldsById.Add(id, world); var recorder = Recorder.Get($"{world.Name} {manager.GetType().FullName}"); recordersByManager.Add(manager, new AverageRecorder(recorder)); recorder.enabled = true; var name = getWorldSelection() == null ? $"{manager.GetType().Name} ({world.Name})" : manager.GetType().Name; var item = new TreeViewItem { id = id, displayName = name }; var componentSystemBase = manager as ComponentSystemBase; var hideNode = new HideNode(item) { Active = componentSystemBase == null }; hideNodesById.Add(id, hideNode); return(hideNode); }
HideNode CreateNodeForSystem(int id, SystemSelection sel) { var active = true; var type = sel.GetSystemType(); if (!typeof(ComponentSystemGroup).IsAssignableFrom(type)) { systemsById.Add(id, sel); worldsById.Add(id, sel.World); var recorder = Recorder.Get($"{sel.World?.Name ?? "none"} {type.FullName}"); if (!recordersBySystem.ContainsKey(sel)) { recordersBySystem.Add(sel, new AverageRecorder(recorder)); } else { UnityEngine.Debug.LogError("System added twice: " + sel); } recorder.enabled = true; active = false; } var typeName = Properties.Editor.TypeUtility.GetTypeDisplayName(type); var name = getWorldSelection() == null ? $"{typeName} ({sel.World?.Name ?? "none"})" : typeName; var item = new TreeViewItem { id = id, displayName = name }; var hideNode = new HideNode(item) { Active = active }; hideNodesById.Add(id, hideNode); return(hideNode); }
void RebuildNodes() { rootNode = null; Reload(); }
private List <int> BuildNodeTree() { managersById.Clear(); worldsById.Clear(); recordersByManager.Clear(); hideNodesById.Clear(); var currentID = 0; rootNode = new HideNode(new TreeViewItem { id = currentID++, depth = -1, displayName = "Root" }); lastPlayerLoop = ScriptBehaviourUpdateOrder.CurrentPlayerLoop; var expandedIds = new List <int>(); if (ScriptBehaviourUpdateOrder.CurrentPlayerLoop.subSystemList != null) { foreach (var group in ScriptBehaviourUpdateOrder.CurrentPlayerLoop.subSystemList) { var groupItem = new HideNode(new TreeViewItem { id = currentID++, depth = 0, displayName = group.type.Name }); var hasManagerChildren = false; foreach (var child in group.subSystemList) { var executionDelegate = child.updateDelegate; ScriptBehaviourUpdateOrder.DummyDelagateWrapper dummy; if (executionDelegate != null && (dummy = executionDelegate.Target as ScriptBehaviourUpdateOrder.DummyDelagateWrapper) != null) { var system = dummy.Manager; if (getWorldSelection() == null) { foreach (var world in World.AllWorlds) { if (world.BehaviourManagers.Contains(system)) { groupItem.AddChild(CreateManagerItem(currentID++, system, world)); hasManagerChildren = true; } } } else { if (getWorldSelection().BehaviourManagers.Contains(system)) { groupItem.AddChild(CreateManagerItem(currentID++, system, getWorldSelection())); hasManagerChildren = true; } } } else if (getWorldSelection() == null) { groupItem.AddChild(new HideNode(new TreeViewItem(currentID++, 1, child.type.Name))); } } if (groupItem.Children != null) { rootNode.AddChild(groupItem); if (hasManagerChildren) { expandedIds.Add(groupItem.Item.id); } } else { --currentID; } } } return(expandedIds); }