Brak opisu
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.

ShortcutUtility.cs 3.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. using UnityEngine.UIElements;
  2. using UnityEditor.ShortcutManagement;
  3. namespace UnityEditor.U2D.Animation
  4. {
  5. internal static class ShortcutIds
  6. {
  7. public const string toggleToolText = "2D/Animation/Toggle Tool Text";
  8. public const string restoreBindPose = "2D/Animation/Restore Bind Pose";
  9. public const string toggleCharacterMode = "2D/Animation/Toggle Character Mode";
  10. public const string previewPose = "2D/Animation/Preview Pose";
  11. public const string editBone = "2D/Animation/Edit Bone";
  12. public const string createBone = "2D/Animation/Create Bone";
  13. public const string splitBone = "2D/Animation/Split Bone";
  14. public const string autoGeometry = "2D/Animation/Auto Geometry";
  15. public const string editGeometry = "2D/Animation/Edit Geometry";
  16. public const string createVertex = "2D/Animation/Create Vertex";
  17. public const string createEdge = "2D/Animation/Create Edge";
  18. public const string splitEdge = "2D/Animation/Split Edge";
  19. public const string autoWeights = "2D/Animation/Auto Weights";
  20. public const string weightSlider = "2D/Animation/Weight Slider";
  21. public const string weightBrush = "2D/Animation/Weight Brush";
  22. public const string boneInfluence = "2D/Animation/Bone Influence";
  23. public const string spriteInfluence = "2D/Animation/Sprite Influence";
  24. public const string pastePanelWeights = "2D/Animation/Paste Panel Weights";
  25. public const string visibilityPanel = "2D/Animation/Visibility Panel";
  26. }
  27. internal class ShortcutUtility
  28. {
  29. public System.Action OnShortcutChanged;
  30. private string[] m_ShortcutIds;
  31. public ShortcutUtility(params string[] shortcutIds)
  32. {
  33. m_ShortcutIds = shortcutIds;
  34. ShortcutManager.instance.shortcutBindingChanged += OnBindingChanged;
  35. ShortcutManager.instance.activeProfileChanged += OnProfileChanged;
  36. }
  37. ~ShortcutUtility()
  38. {
  39. ShortcutManager.instance.shortcutBindingChanged -= OnBindingChanged;
  40. ShortcutManager.instance.activeProfileChanged -= OnProfileChanged;
  41. }
  42. private void OnBindingChanged(ShortcutBindingChangedEventArgs args)
  43. {
  44. foreach (var id in m_ShortcutIds)
  45. {
  46. if (args.shortcutId == id)
  47. {
  48. OnShortcutChanged?.Invoke();
  49. break;
  50. }
  51. }
  52. }
  53. private void OnProfileChanged(ActiveProfileChangedEventArgs args)
  54. {
  55. OnShortcutChanged?.Invoke();
  56. }
  57. public void AddShortcutToButtonTooltip(VisualElement rootElement, string buttonName, string shortcutBindingId)
  58. {
  59. var button = rootElement.Q<Button>(buttonName);
  60. var binding = ShortcutManager.instance.GetShortcutBinding(shortcutBindingId);
  61. var bindingString = binding.ToString();
  62. if(!string.IsNullOrEmpty(bindingString))
  63. button.tooltip += $" ({bindingString})";
  64. }
  65. }
  66. }