mirror of
https://gitgud.io/AbstractConcept/rimworld-animation-studio.git
synced 2024-08-15 00:43:27 +00:00
71 lines
2.1 KiB
C#
71 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;
|
|
}
|
|
}
|
|
}
|