//* ────________________________________* //* methods ───────────────────────────────-* //* -----------------------------------------------------------------------* /// <summary>ボタン入力を検出します。</summary> /// <remarks> /// 注意: このメソッドを呼び出すと、自動的に登録されているクラスに対して /// <c>update()</c>が実行されます。レガシ ゲームパッドが高位入力管理クラスにて /// アクティブの状態でこのメソッドを呼び出すと、高位入力側の判定が /// 1フレーム分欠落します。 /// </remarks> /// /// <param name="gameTime">前フレームが開始してからの経過時間。</param> /// <returns> /// 検出されたキー一覧。検出しなかった場合、<c>null</c>。 /// </returns> public IEnumerable <Keys> detectInput(GameTime gameTime) { input.update(gameTime); Keys[] now = input.nowInputState.GetPressedKeys(); Keys[] prev = input.prevInputState.GetPressedKeys(); return(now.Length > prev.Length ? now.Except(prev) : null); }
//* -----------------------------------------------------------------------* /// <summary>ボタン入力を検出します。</summary> /// <remarks> /// 注意: このメソッドを呼び出すと、自動的に登録されているクラスに対して /// <c>update()</c>が実行されます。レガシ ゲームパッドが高位入力管理クラスにて /// アクティブの状態でこのメソッドを呼び出すと、高位入力側の判定が /// 1フレーム分欠落します。 /// </remarks> /// /// <param name="gameTime">前フレームが開始してからの経過時間。</param> /// <returns> /// ボタン入力が検出されたデバイスの管理クラス。検出しなかった場合、<c>null</c>。 /// </returns> public CXNAInput <_T> detectInput(GameTime gameTime) { CXNAInput <_T> result = null; for (int i = inputList.Count; --i >= 0 && result == null;) { CXNAInput <_T> input = inputList[i]; input.update(gameTime); if (isInput(input.nowInputState, input.prevInputState)) { result = input; } } return(result); }
//* ────________________________________* //* methods ───────────────────────────────-* //* -----------------------------------------------------------------------* /// <summary>ボタン入力を検出します。</summary> /// <remarks> /// 注意: このメソッドを呼び出すと、自動的に登録されているクラスに対して /// <c>update()</c>が実行されます。レガシ ゲームパッドが高位入力管理クラスにて /// アクティブの状態でこのメソッドを呼び出すと、高位入力側の判定が /// 1フレーム分欠落します。 /// </remarks> /// /// <param name="gameTime">前フレームが開始してからの経過時間。</param> /// <returns>検出されたボタン。</returns> public EMouseButtons detectInput(GameTime gameTime) { EMouseButtons result = EMouseButtons.None; input.update(gameTime); MouseState now = input.nowInputState; MouseState prev = input.prevInputState; if (now != prev) { // TODO : 醜い。整理すべし if (Math.Abs(now.X - prev.X) > 0 || Math.Abs(now.Y - prev.Y) > 0) { result = EMouseButtons.position; } if (Math.Abs(now.ScrollWheelValue - prev.ScrollWheelValue) > 0) { result = EMouseButtons.scrollWheel; } if (now.LeftButton == ButtonState.Pressed && now.LeftButton != prev.LeftButton) { result = EMouseButtons.leftButton; } if (now.MiddleButton == ButtonState.Pressed && now.MiddleButton != prev.MiddleButton) { result = EMouseButtons.middleButton; } if (now.RightButton == ButtonState.Pressed && now.RightButton != prev.RightButton) { result = EMouseButtons.rightButton; } if (now.XButton1 == ButtonState.Pressed && now.XButton1 != prev.XButton1) { result = EMouseButtons.xButton1; } if (now.XButton2 == ButtonState.Pressed && now.XButton2 != prev.XButton2) { result = EMouseButtons.xButton2; } } return(result); }