Пример #1
0
        /// <summary>
        /// TreeViewの項目を作る
        /// </summary>
        private CanvasTreeViewItem CreateItem(string name, string valueString = null)
        {
            var item = new CanvasTreeViewItem(name, valueString)
            {
                id = _idCount++
            };

            return(item);
        }
Пример #2
0
        /// <summary>
        /// TreeViewの項目を作る(Object指定)
        /// </summary>
        private CanvasTreeViewItem CreateItem <T>(string name, string valueString, T unityObject)
            where T : Object
        {
            var item = new CanvasTreeViewItem(name, valueString, unityObject, typeof(T))
            {
                id = _idCount++
            };

            return(item);
        }
Пример #3
0
        /// <summary>
        /// 各セルのGUIを描画する
        /// </summary>
        private void CellGUI(Rect rect, CanvasTreeViewItem item, CanvasColumnType columnType, RowGUIArgs args)
        {
            switch (columnType)
            {
            case CanvasColumnType.Name:
                args.rowRect = rect;
                base.RowGUI(args);
                break;

            case CanvasColumnType.Note:
                var canvas = item.unityObject as Canvas;
                if (canvas != null)
                {
                    if (IsInactiveSubCanvas(canvas))
                    {
                        var redTextStyle = new GUIStyle(EditorStyles.label)
                        {
                            normal = new GUIStyleState
                            {
                                textColor = Color.red,
                            }
                        };
                        EditorGUI.LabelField(rect, new GUIContent("Inactive Sub-canvas"), redTextStyle);
                    }
                    else if (canvas.gameObject.activeInHierarchy == false)
                    {
                        EditorGUI.LabelField(rect, new GUIContent("Inactive Canvas"));
                    }
                }

                break;

            case CanvasColumnType.Object:
                if (item.hasUnityObject)
                {
                    var obj           = item.unityObject;
                    var objectContent = EditorGUIUtility.ObjectContent(obj, item.objectType);
                    var objectStyle   = new GUIStyle(EditorStyles.textField)
                    {
                        imagePosition = obj ? ImagePosition.ImageLeft : ImagePosition.TextOnly
                    };
                    var originalSize = EditorGUIUtility.GetIconSize();
                    EditorGUIUtility.SetIconSize(new Vector2(10, 10));
                    if (GUI.Button(rect, objectContent, objectStyle) && obj)
                    {
                        EditorGUIUtility.PingObject(obj);
                        Selection.activeObject = obj;
                    }

                    EditorGUIUtility.SetIconSize(originalSize);
                }

                break;
            }
        }
        protected override IList <TreeViewItem> BuildRows(TreeViewItem root)
        {
            //Debug.Log(sortCol + " " + sortColumn.sortedAscending);
            profilerState.lastFrame = profilerState.profilerWindow.GetActiveVisibleFrameIndex();

            var rows = new List <TreeViewItem>();

            if (property == null || !property.frameDataReady)
            {
                return(rows);
            }
            m_AllCanvasesItem = new RootTreeViewItem();
            SetExpanded(m_AllCanvasesItem.id, true);
            root.AddChild(m_AllCanvasesItem);
            UISystemProfilerInfo[] UISystemData = property.GetUISystemProfilerInfo();
            int[] allBatchesInstanceIDs         = property.GetUISystemBatchInstanceIDs();

            if (UISystemData != null)
            {
                Dictionary <int, TreeViewItem> map = new Dictionary <int, TreeViewItem>();
                int batchIndex = 0;
                foreach (var data in UISystemData)
                {
                    TreeViewItem parent;
                    if (!map.TryGetValue(data.parentId, out parent))
                    {
                        parent = m_AllCanvasesItem;
                        m_AllCanvasesItem.totalBatchCount  += data.totalBatchCount;
                        m_AllCanvasesItem.totalVertexCount += data.totalVertexCount;
                        m_AllCanvasesItem.gameObjectCount  += data.instanceIDsCount;
                    }
                    string           name;
                    BaseTreeViewItem canvasTreeViewItem;
                    if (data.isBatch)
                    {
                        name = "Batch " + batchIndex++;
                        canvasTreeViewItem = new BatchTreeViewItem(data, parent.depth + 1, name, allBatchesInstanceIDs);
                    }
                    else
                    {
                        name = property.GetUISystemProfilerNameByOffset(data.objectNameOffset);
                        canvasTreeViewItem         = new CanvasTreeViewItem(data, parent.depth + 1, name);
                        batchIndex                 = 0;
                        map[data.objectInstanceId] = canvasTreeViewItem;
                    }
                    if (!IsExpanded(parent.id))
                    {
                        if (!parent.hasChildren)
                        {
                            parent.children = CreateChildListForCollapsedParent();
                        }
                        continue;
                    }
                    parent.AddChild(canvasTreeViewItem);
                }

                m_Comparer.Col = Column.Element;
                if (multiColumnHeader.sortedColumnIndex != -1)
                {
                    m_Comparer.Col = (Column)multiColumnHeader.sortedColumnIndex;
                }
                m_Comparer.isAscending = multiColumnHeader.GetColumn((int)m_Comparer.Col).sortedAscending;

                SetupRows(m_AllCanvasesItem, rows);
            }
            return(rows);
        }