No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

HorizontalToggleTools.cs 3.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. using System;
  2. using UnityEngine;
  3. namespace UnityEditor.U2D.Animation
  4. {
  5. internal class HorizontalToggleTools
  6. {
  7. private static class Styles
  8. {
  9. public static GUIContent visibilityCollapseIcon = new GUIContent(EditorIconUtility.LoadIconResource("Visibility_Tool", EditorIconUtility.LightIconPath, EditorIconUtility.DarkIconPath), TextContent.visibilityIconTooltip);
  10. public static GUIContent visibilityIcon = new GUIContent(TextContent.visibilityIconText, EditorIconUtility.LoadIconResource("Visibility_Tool", EditorIconUtility.LightIconPath, EditorIconUtility.DarkIconPath), TextContent.visibilityIconTooltip);
  11. public static GUIContent spriteSheetIcon = new GUIContent(TextContent.spriteSheetIconText, EditorIconUtility.LoadIconResource("Sprite_Mode", EditorIconUtility.LightIconPath, EditorIconUtility.DarkIconPath), TextContent.spriteSheetIconTooltip);
  12. public static GUIContent spriteSheetCollapseIcon = new GUIContent(EditorIconUtility.LoadIconResource("Sprite_Mode", EditorIconUtility.LightIconPath, EditorIconUtility.DarkIconPath), TextContent.spriteSheetIconTooltip);
  13. }
  14. private SkinningCache skinningCache { get; set; }
  15. private VisibilityTool visibilityTool
  16. {
  17. get { return skinningCache.GetTool(Tools.Visibility) as VisibilityTool; }
  18. }
  19. private SwitchModeTool switchmodeTool
  20. {
  21. get { return skinningCache.GetTool(Tools.SwitchMode) as SwitchModeTool; }
  22. }
  23. private GUIContent spriteSheetIcon
  24. {
  25. get { return collapseToolbar ? Styles.spriteSheetCollapseIcon : Styles.spriteSheetIcon; }
  26. }
  27. internal Action<BaseTool> onActivateTool = (b) => {};
  28. public bool collapseToolbar { get; set; }
  29. internal HorizontalToggleTools(SkinningCache s)
  30. {
  31. skinningCache = s;
  32. }
  33. internal void DoGUI(Rect drawArea, BaseTool currentTool, bool isDisabled)
  34. {
  35. using (new EditorGUI.DisabledScope(isDisabled))
  36. {
  37. GUILayout.BeginArea(drawArea);
  38. EditorGUILayout.BeginHorizontal();
  39. DoModeToggle();
  40. GUILayout.FlexibleSpace();
  41. DoVisibilityToggle(currentTool);
  42. EditorGUILayout.EndHorizontal();
  43. GUILayout.EndArea();
  44. }
  45. }
  46. private void DoModeToggle()
  47. {
  48. if (skinningCache.hasCharacter)
  49. {
  50. EditorGUI.BeginChangeCheck();
  51. var isActive = GUILayout.Toggle(switchmodeTool.isActive , spriteSheetIcon, EditorStyles.toolbarButton);
  52. if (EditorGUI.EndChangeCheck())
  53. {
  54. using (skinningCache.UndoScope(TextContent.setMode))
  55. {
  56. if (isActive)
  57. switchmodeTool.Activate();
  58. else
  59. switchmodeTool.Deactivate();
  60. }
  61. }
  62. }
  63. }
  64. void DoVisibilityToggle(BaseTool currentTool)
  65. {
  66. EditorGUI.BeginChangeCheck();
  67. GUILayout.Toggle(visibilityTool.isActive, visbilityIcon, EditorStyles.toolbarButton);
  68. if (EditorGUI.EndChangeCheck())
  69. ToggleVisibilityTool(currentTool);
  70. }
  71. GUIContent visbilityIcon { get { return collapseToolbar ? Styles.visibilityCollapseIcon : Styles.visibilityIcon; } }
  72. internal void ToggleVisibilityTool(BaseTool currentTool)
  73. {
  74. onActivateTool(visibilityTool);
  75. }
  76. }
  77. }