using UnityEngine; using UnityEngine.Serialization; namespace QFSW.QC { [System.Serializable] public struct ModifierKeyCombo { [FormerlySerializedAs("key")] public KeyCode Key; [FormerlySerializedAs("ctrl")] public bool Ctrl; [FormerlySerializedAs("alt")] public bool Alt; [FormerlySerializedAs("shift")] public bool Shift; public bool ModifiersActive { get { bool ctrlDown = !Ctrl ^ (InputHelper.GetKey(KeyCode.LeftControl) || InputHelper.GetKey(KeyCode.RightControl) || InputHelper.GetKey(KeyCode.LeftCommand) || InputHelper.GetKey(KeyCode.RightCommand)); bool altDown = !Alt ^ (InputHelper.GetKey(KeyCode.LeftAlt) || InputHelper.GetKey(KeyCode.RightAlt)); bool shiftDown = !Shift ^ (InputHelper.GetKey(KeyCode.LeftShift) || InputHelper.GetKey(KeyCode.RightShift)); return ctrlDown && altDown && shiftDown; } } public bool IsHeld() { return ModifiersActive && InputHelper.GetKey(Key); } public bool IsPressed() { return ModifiersActive && InputHelper.GetKeyDown(Key); } public static implicit operator ModifierKeyCombo(KeyCode key) { return new ModifierKeyCombo { Key = key }; } } }