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