12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- using System.Collections.Generic;
- using UnityEditor;
- using UnityEngine;
- namespace EnhancedHierarchy.Icons {
- public sealed class Layer : IconBase {
- public override IconPosition Side { get { return IconPosition.All; } }
- public override Texture2D PreferencesPreview { get { return Utility.GetBackground(Styles.layerStyle, true); } }
- //public override string PreferencesTooltip { get { return "Some tag for the tooltip here"; } }
- public override void DoGUI(Rect rect) {
- GUI.changed = false;
- EditorGUI.LabelField(rect, Styles.layerContent);
- var layer = EditorGUI.LayerField(rect, EnhancedHierarchy.CurrentGameObject.layer, Styles.layerStyle);
- if (GUI.changed)
- ChangeLayerAndAskForChildren(GetSelectedObjectsAndCurrent(), layer);
- }
- public static void ChangeLayerAndAskForChildren(List<GameObject> objs, int newLayer) {
- var changeMode = AskChangeModeIfNecessary(objs, Preferences.LayerAskMode, "Change Layer",
- "Do you want to change the layers of the children objects as well?");
- switch (changeMode) {
- case ChildrenChangeMode.ObjectOnly:
- foreach (var obj in objs) {
- Undo.RegisterCompleteObjectUndo(obj, "Layer changed");
- obj.layer = newLayer;
- }
- break;
- case ChildrenChangeMode.ObjectAndChildren:
- foreach (var obj in objs) {
- Undo.RegisterFullObjectHierarchyUndo(obj, "Layer changed");
- obj.layer = newLayer;
- foreach (var transform in obj.GetComponentsInChildren<Transform>(true))
- transform.gameObject.layer = newLayer;
- }
- break;
- }
- }
- }
- }
|