/// <summary> /// Determines if an action was fired on during since last drop call. /// </summary> /// <returns><c>true</c>, if the event happend, <c>false</c> otherwise.</returns> /// <param name="action">Action.</param> public bool IsActionFired(InputActions action) { return(ActionsFired.Contains(action)); }
protected void OnUpdate() { ActionsFired.Clear(); KeyboardState keyboardState = Keyboard.GetState(); MouseState mouseState = Mouse.GetState(); foreach (KeyValuePair <InputActions, InputState> action in Inputs.Info) { // Manage mouse events. if (!action.Value.IsKeyboard && action.Value.MouseKey != MouseKeys.None) { if (CheckMouseState(keyboardState, mouseState, action.Value)) { if (InputEvents.ContainsKey(action.Key)) { InputEvents[action.Key](this, new InputEventArgs() { MousePosition = MousePosition }); } ActionsFired.Add(action.Key); } } else if (action.Value.KeyboardKey != Keys.None) { switch (action.Value.State) { // The type of key state. case KeyState.Up: // Makes sure it is in the good state. if (keyboardState.IsKeyUp(action.Value.KeyboardKey) && (!action.Value.Sensitive || CheckDeadKey(keyboardState, action.Value.DeadKey))) { if (InputEvents.ContainsKey(action.Key)) { InputEvents[action.Key](this, new InputEventArgs()); } // Adds it to the list to be able to query all event fired in this frame. ActionsFired.Add(action.Key); } break; case KeyState.Down: if (keyboardState.IsKeyDown(action.Value.KeyboardKey) && (!action.Value.Sensitive || CheckDeadKey(keyboardState, action.Value.DeadKey))) { if (InputEvents.ContainsKey(action.Key)) { InputEvents[action.Key](this, new InputEventArgs()); } ActionsFired.Add(action.Key); } break; case KeyState.Pressed: if (keyboardState.IsKeyDown(action.Value.KeyboardKey) && OldKeyboard.IsKeyUp(action.Value.KeyboardKey) && (!action.Value.Sensitive || CheckDeadKey(keyboardState, action.Value.DeadKey))) { if (InputEvents.ContainsKey(action.Key)) { InputEvents[action.Key](this, new InputEventArgs()); } ActionsFired.Add(action.Key); } break; case KeyState.Released: if (keyboardState.IsKeyUp(action.Value.KeyboardKey) && OldKeyboard.IsKeyDown(action.Value.KeyboardKey) && (!action.Value.Sensitive || CheckDeadKey(keyboardState, action.Value.DeadKey))) { if (InputEvents.ContainsKey(action.Key)) { InputEvents[action.Key](this, new InputEventArgs()); } ActionsFired.Add(action.Key); } break; } } } OldKeyboard = keyboardState; OldMouse = mouseState; if (IsWindowReady && IsActive) { Cursor.Position = MousePosition; } }