72 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
		
		
			
		
	
	
			72 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
|  | using System; | ||
|  | using System.Linq; | ||
|  | using UnityEditor.ShortcutManagement; | ||
|  | using UnityEngine; | ||
|  | 
 | ||
|  | namespace UnityEditor.Timeline | ||
|  | { | ||
|  |     [AttributeUsage(AttributeTargets.Class, Inherited = false)] | ||
|  |     class ShortcutAttribute : Attribute | ||
|  |     { | ||
|  |         readonly string m_Identifier; | ||
|  |         readonly string m_EventCommandName; | ||
|  |         readonly string m_MenuShortcut; | ||
|  | 
 | ||
|  |         public ShortcutAttribute(string identifier) | ||
|  |         { | ||
|  |             m_Identifier = identifier; | ||
|  |             m_EventCommandName = identifier; | ||
|  |         } | ||
|  | 
 | ||
|  |         public ShortcutAttribute(string identifier, string commandName) | ||
|  |         { | ||
|  |             m_Identifier = identifier; | ||
|  |             m_EventCommandName = commandName; | ||
|  |         } | ||
|  | 
 | ||
|  |         public ShortcutAttribute(KeyCode key, ShortcutModifiers modifiers = ShortcutModifiers.None) | ||
|  |         { | ||
|  |             m_MenuShortcut = new KeyCombination(key, modifiers).ToMenuShortcutString(); | ||
|  |         } | ||
|  | 
 | ||
|  |         public string GetMenuShortcut() | ||
|  |         { | ||
|  |             if (m_MenuShortcut != null) | ||
|  |                 return m_MenuShortcut; | ||
|  | 
 | ||
|  |             //find the mapped shortcut in the shortcut manager | ||
|  |             var shortcut = ShortcutIntegration.instance.directory.FindShortcutEntry(m_Identifier); | ||
|  |             if (shortcut != null && shortcut.combinations.Any()) | ||
|  |             { | ||
|  |                 return KeyCombination.SequenceToMenuString(shortcut.combinations); | ||
|  |             } | ||
|  | 
 | ||
|  |             return string.Empty; | ||
|  |         } | ||
|  | 
 | ||
|  |         public bool MatchesEvent(Event evt) | ||
|  |         { | ||
|  |             if (evt.type != EventType.ExecuteCommand) | ||
|  |                 return false; | ||
|  |             return evt.commandName == m_EventCommandName; | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     [AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = false)] | ||
|  |     class ShortcutPlatformOverrideAttribute : ShortcutAttribute | ||
|  |     { | ||
|  |         RuntimePlatform platform { get; } | ||
|  | 
 | ||
|  |         public ShortcutPlatformOverrideAttribute(RuntimePlatform platform, KeyCode key, ShortcutModifiers modifiers = ShortcutModifiers.None) | ||
|  |             : base(key, modifiers) | ||
|  |         { | ||
|  |             this.platform = platform; | ||
|  |         } | ||
|  | 
 | ||
|  |         public bool MatchesCurrentPlatform() | ||
|  |         { | ||
|  |             return Application.platform == platform; | ||
|  |         } | ||
|  |     } | ||
|  | } |