Static.cs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. using UnityEditor;
  2. using UnityEngine;
  3. namespace EnhancedHierarchy.Icons {
  4. public sealed class Static : IconBase {
  5. public override IconPosition Side { get { return IconPosition.All; } }
  6. public override Texture2D PreferencesPreview { get { return Utility.GetBackground(Styles.staticToggleStyle, false); } }
  7. //public override string PreferencesTooltip { get { return "Some tag for the tooltip here"; } }
  8. public override void DoGUI(Rect rect) {
  9. using(new GUIBackgroundColor(EnhancedHierarchy.CurrentGameObject.isStatic ? Styles.backgroundColorEnabled : Styles.backgroundColorDisabled)) {
  10. GUI.changed = false;
  11. GUI.Toggle(rect, EnhancedHierarchy.CurrentGameObject.isStatic, Styles.staticContent, Styles.staticToggleStyle);
  12. if (!GUI.changed)
  13. return;
  14. var isStatic = !EnhancedHierarchy.CurrentGameObject.isStatic;
  15. var selectedObjects = GetSelectedObjectsAndCurrent();
  16. var changeMode = AskChangeModeIfNecessary(selectedObjects, Preferences.StaticAskMode.Value, "Change Static Flags",
  17. "Do you want to " + (!isStatic ? "enable" : "disable") + " the static flags for all child objects as well?");
  18. switch (changeMode) {
  19. case ChildrenChangeMode.ObjectOnly:
  20. foreach (var obj in selectedObjects) {
  21. Undo.RegisterCompleteObjectUndo(obj, "Static Flags Changed");
  22. obj.isStatic = isStatic;
  23. }
  24. break;
  25. case ChildrenChangeMode.ObjectAndChildren:
  26. foreach (var obj in selectedObjects) {
  27. Undo.RegisterFullObjectHierarchyUndo(obj, "Static Flags Changed");
  28. var transforms = obj.GetComponentsInChildren<Transform>(true);
  29. foreach (var transform in transforms)
  30. transform.gameObject.isStatic = isStatic;
  31. }
  32. break;
  33. }
  34. }
  35. }
  36. }
  37. }