RendererToggle.cs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. using System.Linq;
  2. using UnityEditor;
  3. using UnityEngine;
  4. namespace EnhancedHierarchy.Icons {
  5. public sealed class RendererToggle : IconBase {
  6. private Renderer renderer;
  7. public override IconPosition Side { get { return IconPosition.All; } }
  8. public override string Name { get { return "Renderer"; } }
  9. public override Texture2D PreferencesPreview { get { return Utility.GetBackground(Styles.rendererToggleStyle, true); } }
  10. //public override string PreferencesTooltip { get { return "Some tag for the tooltip here"; } }
  11. public override void Init() {
  12. renderer = EnhancedHierarchy.Components.FirstOrDefault(c => c is Renderer)as Renderer;
  13. }
  14. public override float Width { get { return renderer ? base.Width : 0; } }
  15. public override void DoGUI(Rect rect) {
  16. if (!renderer)
  17. return;
  18. using(new GUIBackgroundColor(renderer.enabled ? Styles.backgroundColorEnabled : Styles.backgroundColorDisabled)) {
  19. GUI.changed = false;
  20. GUI.Toggle(rect, renderer, Styles.rendererContent, Styles.rendererToggleStyle);
  21. if (!GUI.changed)
  22. return;
  23. var objs = GetSelectedObjectsAndCurrent().SelectMany(go => go.GetComponents<Renderer>());
  24. var active = !renderer.enabled;
  25. Undo.RecordObjects(objs.ToArray(), renderer.enabled ? "Disabled renderer" : "Enabled renderer");
  26. foreach (var obj in objs)
  27. obj.enabled = active;
  28. }
  29. }
  30. }
  31. }