Exemplo n.º 1
0
        public bool IsVisible()
        {
            LevelMetricsTreeElement parent = (LevelMetricsTreeElement)this.parent;

            if (parent != null)
            {
                return(visible && parent.IsVisible());
            }
            else
            {
                return(visible);
            }
        }
Exemplo n.º 2
0
        private bool CheckElementInBranch(string objectName, List <LevelMetricsTreeElement> elements, out int index)
        {
            index = -1;
            LevelMetricsTreeElement element = elements.FirstOrDefault(x => x.displayName == objectName);

            if (element != null)
            {
                index = elements.IndexOf(element);
                return(true);
            }

            return(false);
        }
        private void CellGUI(Rect rowRect, LevelMetricsTreeElement item, ref RowGUIArgs args)
        {
            CenterRectUsingSingleLineHeight(ref rowRect);

            Rect toggleRect = new Rect(rowRect);

            toggleRect.x    += GetContentIndent(item) - 14;
            toggleRect.width = 30;
            if (toggleRect.xMax < rowRect.xMax)
            {
                item.visible = EditorGUI.Toggle(toggleRect, item.visible);
            }

            rowRect.x   += 20;
            args.rowRect = rowRect;
            GUI.enabled  = item.IsVisible();
            base.RowGUI(args);
            GUI.enabled = true;
        }
Exemplo n.º 4
0
        private List <LevelMetricsTreeElement> CollectTree()
        {
            List <LevelMetricsTreeElement> result = new List <LevelMetricsTreeElement>();

            LevelMetricsTreeElement root = new LevelMetricsTreeElement()
            {
                id = 0, depth = -1, displayName = "root"
            };
            LevelMetricsTreeElement signals = new LevelMetricsTreeElement()
            {
                id = 1, displayName = "Signals"
            };
            LevelMetricsTreeElement paths = new LevelMetricsTreeElement()
            {
                id = 2, displayName = "Paths"
            };

            root.AddChild(signals);
            root.AddChild(paths);

            result.Add(root);
            result.Add(signals);
            result.Add(paths);

            int id = 3;

            for (int i = 0; i < script.editorSignals.Count; i++)
            {
                int objectIndex;
                List <Signal.Runtime> signalList = script.editorSignals.ElementAt(i).Value;
                foreach (Signal.Runtime signal in signalList)
                {
                    if (!CheckElementInBranch(signal.objectName, result, out objectIndex))
                    {
                        LevelMetricsTreeElement objectRoot = new LevelMetricsTreeElement();
                        objectRoot.id          = id++;
                        objectRoot.displayName = signal.objectName;
                        signals.AddChild(objectRoot);

                        result.Add(objectRoot);
                        objectIndex = result.Count - 1;
                    }

                    signal.treeElement.Reset();
                    signal.treeElement.displayName = signal.name;
                    signal.treeElement.id          = id++;
                    result[objectIndex].AddChild(signal.treeElement);
                    result.Add(signal.treeElement);

                    for (int d = 0; d < signal.Data.Count; d++)
                    {
                        signal.Data[d].treeElement.Reset();
                        signal.Data[d].treeElement.displayName = string.Format("{0}: {1} at {2}", signal.name, signal.Data[d].count, Utils.FloatToTime(signal.Data[d].time));
                        signal.Data[d].treeElement.id          = id++;
                        signal.treeElement.AddChild(signal.Data[d].treeElement);

                        result.Add(signal.Data[d].treeElement);
                    }
                }
            }

            for (int i = 0; i < script.editorPaths.Count; i++)
            {
                int objectIndex;
                Recordable.Runtime path = script.editorPaths.ElementAt(i).Value;
                if (!CheckElementInBranch(path.objectName, result.Where(x => !CheckParent("Signals", x)).ToList(), out objectIndex))
                {
                    LevelMetricsTreeElement objectRoot = new LevelMetricsTreeElement();
                    objectRoot.id          = id++;
                    objectRoot.displayName = path.objectName;
                    paths.AddChild(objectRoot);

                    result.Add(objectRoot);
                    objectIndex = result.Count - 1;
                }

                path.treeElement.Reset();
                path.treeElement.displayName = path.name;
                path.treeElement.id          = id++;
                result[objectIndex].AddChild(path.treeElement);
                result.Add(path.treeElement);
            }

            return(result);
        }