Example #1
0
        protected override string GetToolTipText(Object item)
        {
            var gameObject    = item as GameObject;
            var hierarchyPath = string.Empty;

            if (gameObject != null)
            {
                hierarchyPath = PathUtility.Combine(UnityUtility.GetChildHierarchyPath(null, gameObject), gameObject.transform.name);
            }

            return(hierarchyPath);
        }
Example #2
0
        void OnGUI()
        {
            var e = Event.current;

            if (!initialized)
            {
                Initialize();
            }

            // 削除されたオブジェクトを除外.
            raycastResults = raycastResults.Where(x => !UnityUtility.IsNull(x.gameObject)).ToArray();

            if (Application.isPlaying)
            {
                if (raycastResults.IsEmpty())
                {
                    using (new EditorGUILayout.HorizontalScope(EditorStyles.toolbar, GUILayout.Height(15f)))
                    {
                        GUILayout.Label(infoIconContent, GUILayout.Width(infoIconContent.image.width + 3.5f));

                        GUILayout.Label("Click GameView to search for objects.");
                    }
                }
            }
            else
            {
                using (new EditorGUILayout.HorizontalScope(EditorStyles.toolbar, GUILayout.Height(15f)))
                {
                    GUILayout.Label(infoIconContent, GUILayout.Width(infoIconContent.image.width + 3.5f));

                    GUILayout.Label("Works in play mode.");
                }
            }

            if (raycastResults.Any())
            {
                GUILayout.Space(3f);

                var labelStyle = new GUIStyle(GUI.skin.label);

                labelStyle.alignment = TextAnchor.MiddleLeft;

                var originIconSize = EditorGUIUtility.GetIconSize();

                var iconSize = new Vector2(16f, 16f);

                EditorGUIUtility.SetIconSize(iconSize);

                using (var scrollView = new EditorGUILayout.ScrollViewScope(scrollPosition))
                {
                    foreach (var raycastResult in raycastResults)
                    {
                        var gameObject = raycastResult.gameObject;

                        var thumbnail = (Texture)AssetPreview.GetMiniThumbnail(gameObject);

                        using (new EditorGUILayout.HorizontalScope())
                        {
                            using (new EditorGUILayout.HorizontalScope())
                            {
                                GUILayout.Space(3f);

                                //------ icon ------

                                var hierarchyPath = UnityUtility.GetChildHierarchyPath(null, gameObject);

                                var toolTipText = PathUtility.Combine(hierarchyPath, gameObject.transform.name);

                                var originLabelWidth = EditorGUIUtility.labelWidth;

                                EditorGUIUtility.labelWidth = 0f;

                                var iconContent = new GUIContent(thumbnail, toolTipText);

                                // アイコンが見切れるのでサイズを補正.
                                GUILayout.Label(iconContent, labelStyle, GUILayout.Width(iconSize.x + 3.5f));

                                EditorGUIUtility.labelWidth = originLabelWidth;

                                //------ label ------

                                var labelText = gameObject.name;

                                var labelContent = new GUIContent(labelText, toolTipText);

                                GUILayout.Label(labelContent, labelStyle, GUILayout.Height(18f));

                                GUILayout.FlexibleSpace();

                                //------ depth ------

                                var depthText = raycastResult.depth.ToString();

                                var depthContent = new GUIContent(depthText);

                                GUILayout.Label(depthContent, labelStyle, GUILayout.Height(18f));

                                GUILayout.Space(5f);
                            }

                            //------ mouse action ------

                            var rect = GUILayoutUtility.GetLastRect();

                            if (rect.Contains(e.mousePosition))
                            {
                                switch (e.button)
                                {
                                case 0:
                                    Selection.activeGameObject = gameObject;
                                    break;
                                }
                            }
                        }
                    }

                    EditorGUIUtility.SetIconSize(originIconSize);

                    scrollPosition = scrollView.scrollPosition;
                }

                GUILayout.Space(3f);
            }
        }