Esempio n. 1
0
        // 表示更新
        // e.UserState: ゲームパッド入力値
        private void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            GamepadInput padInput = (GamepadInput)e.UserState;

            // アナログスティック
            for (int i = 0; i < 4; i++)
            {
                tb_stick[i].Text = padInput.val[i].ToString();
            }
            // スタートボタン
            if (padInput.startButton)
            {
                buttonControl_Click(null, null);
            }
        }
Esempio n. 2
0
        // ゲームパッド入力処理
        // return: 押されたボタン
        public GamepadInput Get()
        {
            GamepadInput ret = new GamepadInput();

            if (!available)
            {
                return(ret);
            }

            // キャプチャするデバイスを取得
            try
            {
                joystick.Acquire();
                joystick.Poll();
            }
            catch
            {
                joystick?.Dispose();
                joystick = null;
                MessageBox.Show("ゲームパッドが抜けました");
                available = false;
                return(ret);
            }

            // ゲームパッドのデータ取得
            var jState = joystick.GetCurrentState();

            // 取得できない場合、処理終了
            if (jState == null)
            {
                return(ret);
            }

            // アナログスティックの値
            ret.val[0] = jState.X;
            ret.val[1] = jState.Y;
            ret.val[2] = jState.Z;
            ret.val[3] = jState.RotationZ;

            // スタートボタンの立下り
            bool button = jState.Buttons[START_BUTTON - 1];

            ret.startButton = (!startButtonOld && button) ? true : false;
            startButtonOld  = button;

            return(ret);
        }