Beispiel #1
0
        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);
        }
Beispiel #2
0
        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));
                    }
                }
            }
        }
Beispiel #3
0
        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);
        }
Beispiel #5
0
 public void AddChild(HideNode child)
 {
     if (Children == null)
     {
         Children = new List <HideNode>();
     }
     Children.Add(child);
 }
Beispiel #6
0
 void AddNodeIgnoreNulls(ref List <HideNode> list, HideNode node)
 {
     if (node == null)
     {
         return;
     }
     if (list == null)
     {
         list = new List <HideNode>();
     }
     list.Add(node);
 }
Beispiel #7
0
        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;
        }
Beispiel #8
0
        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);
        }
Beispiel #9
0
        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);
        }
Beispiel #10
0
        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);
        }
Beispiel #11
0
 void RebuildNodes()
 {
     rootNode = null;
     Reload();
 }
Beispiel #12
0
        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);
        }