示例#1
0
        public static bool MetaReleased(MetaKey meta, InputLayer layer)
        {
            // FIXME: this is not precise enough for multiple meta combos.
            bool active = true;

            if ((meta & MetaKey.Shift) != 0 &&
                !layer.GetKeyUp(KeyCode.LeftShift) && !layer.GetKeyUp(KeyCode.RightShift))
            {
                active = false;
            }

            if ((meta & MetaKey.Alt) != 0 &&
                !layer.GetKeyUp(KeyCode.LeftAlt) && !layer.GetKeyUp(KeyCode.RightAlt))
            {
                active = false;
            }

            if ((meta & MetaKey.Control) != 0 &&
                !layer.GetKeyUp(KeyCode.LeftControl) && !layer.GetKeyUp(KeyCode.RightControl))
            {
                active = false;
            }

            if ((meta & MetaKey.Super) != 0 &&
                !layer.GetKeyUp(KeyCode.LeftCommand) && !layer.GetKeyUp(KeyCode.RightCommand) &&
                !layer.GetKeyUp(KeyCode.LeftWindows) && !layer.GetKeyUp(KeyCode.RightWindows))
            {
                active = false;
            }

            return(active);
        }
示例#2
0
 /// <summary>
 /// Has the sequence been pressed this frame?
 /// </summary>
 public bool Released(InputLayer layer)
 {
     if (_keyCode != KeyCode.None && layer.GetKeyUp(_keyCode) ||
         !string.IsNullOrEmpty(_keyName) && layer.GetButtonUp(_keyName))
     {
         if (MetaActive(Meta, layer))
         {
             return(true);
         }
     }
     else if (_keyCode != KeyCode.None && layer.GetKey(_keyCode) ||
              !string.IsNullOrEmpty(_keyName) && layer.GetButton(_keyName))
     {
         if (MetaReleased(Meta, layer))
         {
         }
     }
     return(false);
 }