コード例 #1
0
        public override void DoGUI(Rect rect)
        {
            using (ProfilerSample.Get()) {
                rect.yMin++;
                rect.xMin++;

                GUI.changed = false;
                GUI.Button(rect, lastContent, EditorStyles.label);

                if (!GUI.changed)
                {
                    return;
                }

                var selectedObjects = GetSelectedObjectsAndCurrent();
                var changeMode      = AskChangeModeIfNecessary(selectedObjects, Preferences.IconAskMode.Value, "Change Icons", "Do you want to change children icons as well?");

                switch (changeMode)
                {
                case ChildrenChangeMode.ObjectOnly:
                    foreach (var obj in selectedObjects)
                    {
                        Undo.RegisterCompleteObjectUndo(obj, "Icon Changed");
                    }
                    break;

                case ChildrenChangeMode.ObjectAndChildren:
                    foreach (var obj in selectedObjects)
                    {
                        Undo.RegisterFullObjectHierarchyUndo(obj, "Icon Changed");
                    }
                    break;
                }

                ReflectionHelper.ShowIconSelector(EnhancedHierarchy.CurrentGameObject, rect, true, icon => {
                    foreach (var obj in selectedObjects)
                    {
                        switch (changeMode)
                        {
                        case ChildrenChangeMode.ObjectOnly:
                            ReflectionHelper.SetObjectIcon(obj, icon);
                            break;

                        case ChildrenChangeMode.ObjectAndChildren:
                            var transforms = obj.GetComponentsInChildren <Transform>(true);

                            ReflectionHelper.SetObjectIcon(obj, icon);

                            foreach (var transform in transforms)
                            {
                                ReflectionHelper.SetObjectIcon(transform.gameObject, icon);
                            }
                            break;
                        }
                    }
                });
            }
        }
コード例 #2
0
        public override void DoGUI(Rect rect)
        {
            if (!EnhancedHierarchy.IsRepaintEvent || !EnhancedHierarchy.IsGameObject || !audioSource || Width <= 1f)
            {
                return;
            }

            using (ProfilerSample.Get()) {
                if (!icon)
                {
                    icon = EditorGUIUtility.ObjectContent(null, typeof(AudioSource)).image;
                }

                rect.yMax -= 1f;
                rect.yMin += 1f;

                GUI.DrawTexture(rect, icon, ScaleMode.StretchToFill);
            }
        }
コード例 #3
0
        public override void DoGUI(Rect rect)
        {
            using (ProfilerSample.Get()) {
                rect.yMin++;
                rect.xMin++;

                GUI.changed = false;
                GUI.Button(rect, lastContent, EditorStyles.label);

                if (!GUI.changed)
                {
                    return;
                }

                var affectedObjsList = GetSelectedObjectsAndCurrent();
                var affectedObjsEnum = affectedObjsList.AsEnumerable();
                var changeMode       = AskChangeModeIfNecessary(affectedObjsList, Preferences.IconAskMode.Value, "Change Icons", "Do you want to change children icons as well?");

                switch (changeMode)
                {
                case ChildrenChangeMode.ObjectAndChildren:
                    affectedObjsEnum = affectedObjsEnum.SelectMany(go => go.GetComponentsInChildren <Transform>(true).Select(t => t.gameObject));
                    break;
                }

                affectedObjsEnum = affectedObjsEnum.Distinct();

                var affectedObjsArray = affectedObjsEnum.ToArray();

                foreach (var obj in affectedObjsArray)
                {
                    Undo.RegisterCompleteObjectUndo(obj, "Icon Changed");
                }

                Reflected.ShowIconSelector(affectedObjsArray, rect, true);
            }
        }