Example #1
0
        /* method to generate the controls packet sent to the Central Program */
        private String gamepad_packet_generator(GamepadReading input, long packetNumber)
        {
            String packetMeta = "CNTR|" + packetNumber.ToString() + "|" + input.Timestamp + "|";
            String packetEnd  = "END|";
            String buttonString;

            String[] parsedButtons = null;
            String   returnString  = "";

            buttonString  = input.Buttons.ToString();
            parsedButtons = buttonString.Split(new char[] { ',' });
            foreach (String s in parsedButtons)
            {
                returnString += s.Trim() + "|";
            }

            if (input.RightTrigger >= 0.0)
            {
                returnString += getRightTrigger(input, parsedButtons, "RightTrigger,");
            }
            if (input.LeftTrigger >= 0.0)
            {
                returnString += getLeftTrigger(input, parsedButtons, "LeftTrigger,");
            }

            returnString += getServos(input.RightThumbstickX, input.RightThumbstickY);
            returnString += getRStick("LeftThumbstickX", input.LeftThumbstickX);
            returnString += getRStick("LeftThumbstickY", input.LeftThumbstickY);

            return(packetMeta + returnString + packetEnd);
        }
Example #2
0
        public CarMoveCommand(GamepadReading gamepadReading)
        {
            var deadzone = 0.25;

            var leftThumbstickX = gamepadReading.LeftThumbstickX;

            if ((leftThumbstickX > 0 && leftThumbstickX <= deadzone) ||
                (leftThumbstickX < 0 && leftThumbstickX >= (deadzone * -1)))
            {
                leftThumbstickX = 0.0;
            }

            var rightTrigger = gamepadReading.RightTrigger <= deadzone ? 0.0 : gamepadReading.RightTrigger;
            var leftTrigger  = gamepadReading.LeftTrigger <= deadzone ? 0.0 : gamepadReading.LeftTrigger;

            var rightLeftTrigger = (rightTrigger > 0.0) && (leftTrigger > 0.0);

            if (!rightLeftTrigger &&
                rightTrigger > 0.0)
            {
                Speed           = rightTrigger;
                ForwardBackward = true;
            }
            else if (!rightLeftTrigger &&
                     leftTrigger > 0.0)
            {
                Speed           = leftTrigger;
                ForwardBackward = false;
            }
            else
            {
                Speed           = 0.0;
                ForwardBackward = true;
            }

            RightLeft = leftThumbstickX;

            if (RightLeft <= -0.985)
            {
                LeftCircle = true;
            }
            else if (RightLeft >= 0.985)
            {
                RightCircle = true;
            }

            if (RightLeft != 0.0 && Speed == 0.0)
            {
                if (RightLeft < 0)
                {
                    LeftCircle = true;
                    Speed      = 1;
                }
                else if (RightLeft > 0)
                {
                    RightCircle = true;
                    Speed       = 1;
                }
            }
        }
        /// <summary>
        /// Reads gamepad input.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void GamePad_Tick(object sender, Object e)
        {
            reading = mainGamepad.GetCurrentReading();

            if (currentGameState == GameState.InGame)
            {
                if (reading.Buttons == GamepadButtons.DPadUp && Snake[0].Direction != MovementDirection.Down)
                {
                    Snake[0].Direction = MovementDirection.Up;
                }

                else if (reading.Buttons == GamepadButtons.DPadDown && Snake[0].Direction != MovementDirection.Up)
                {
                    Snake[0].Direction = MovementDirection.Down;
                }

                else if (reading.Buttons == GamepadButtons.DPadLeft && Snake[0].Direction != MovementDirection.Right)
                {
                    Snake[0].Direction = MovementDirection.Left;
                }

                else if (reading.Buttons == GamepadButtons.DPadRight && Snake[0].Direction != MovementDirection.Left)
                {
                    Snake[0].Direction = MovementDirection.Right;
                }
            }

            if (reading.Buttons == GamepadButtons.Menu)
            {
                currentGameState = (currentGameState == GameState.Paused) ? GameState.InGame : GameState.Paused;
            }
        }
Example #4
0
        /// <summary>
        /// Querries all current input states.
        /// </summary>
        public IEnumerable <InputStateBase> GetInputStates()
        {
            for (int loop = 0; loop < MAX_GAMEPAD_COUNT; loop++)
            {
                Gamepad actGamepad  = m_gamepads[loop];
                bool    isConnected = actGamepad != null;

                // Handle connected state
                if (!isConnected)
                {
                    m_states[loop].NotifyConnected(false);
                    continue;
                }
                m_states[loop].NotifyConnected(true);

                GamepadReading gpReading = actGamepad.GetCurrentReading();
                m_states[loop].NotifyState(new GamepadReportedState()
                {
                    Buttons          = (GamepadButton)gpReading.Buttons,
                    LeftThumbstickX  = (float)gpReading.LeftThumbstickX,
                    LeftThumbstickY  = (float)gpReading.LeftThumbstickY,
                    LeftTrigger      = (float)gpReading.LeftTrigger,
                    RightThumbstickX = (float)gpReading.RightThumbstickX,
                    RightThumbstickY = (float)gpReading.RightThumbstickY,
                    RightTrigger     = (float)gpReading.RightTrigger
                });
            }

            // Now return all input states
            for (int loop = 0; loop < m_states.Length; loop++)
            {
                yield return(m_states[loop]);
            }
        }
        public void ReadGamePadInput()
        {
            if (gamepad != null)
            {
                GamepadReading reading = gamepad.GetCurrentReading();

                if (reading.Buttons != GamepadButtons.None)
                {
                    if (buttonMapping.ContainsKey(reading.Buttons))
                    {
                        OnUserInputReceived(buttonMapping[reading.Buttons]);
                    }
                }
                else
                {
                    // Use 0.4 so the stick don't have to be exactly to right or left, but is more forgiving
                    if (reading.RightThumbstickX < -0.6)
                    {
                        OnUserInputReceived(UserInput.MoveLeft);
                    }
                    else if (reading.RightThumbstickX > 0.6)
                    {
                        OnUserInputReceived(UserInput.MoveRight);
                    }
                    else if (reading.RightThumbstickY > 0.6)
                    {
                        OnUserInputReceived(UserInput.MoveUp);
                    }
                    else if (reading.RightThumbstickY < -0.6)
                    {
                        OnUserInputReceived(UserInput.MoveDown);
                    }
                }
            }
        }
Example #6
0
        public CarControlCommand(GamepadReading gamepadReading)
        {
            var directionControlUpDownStepMaxSpeed = 6;

            var deadzone = 0.25;

            var leftThumbstickY = gamepadReading.LeftThumbstickY;

            if ((leftThumbstickY > 0 && leftThumbstickY <= deadzone) ||
                (leftThumbstickY < 0 && leftThumbstickY >= (deadzone * -1)))
            {
                leftThumbstickY = 0.0;
            }

            var directionControlUpDown = leftThumbstickY;

            if (directionControlUpDown > 0)
            {
                DirectionControlUp = true;
            }
            else if (directionControlUpDown < 0)
            {
                DirectionControlDown = true;
            }

            DirectionControlUpDownStepSpeed = (ushort)Math.Round(Math.Abs(directionControlUpDown) * directionControlUpDownStepMaxSpeed, 1);
        }
Example #7
0
        public void GamepadTimerEvent(object sender, object e)
        {
            if (myGamepads.Count() > PlayerNum - 1 && myGamepads.Count() > 0)
            {
                Gamepad        gamepad = myGamepads[PlayerNum - 1];
                GamepadReading reading = gamepad.GetCurrentReading();
                textBlockButtons.Text = reading.Buttons.ToString();

                if (!gp_lastreading.Equals(reading))
                {
                    if ((reading.Buttons == GamepadButtons.A) && (gp_lastreading.Buttons != GamepadButtons.A))
                    {
                        ButtonAnswerClick(buttonA, null);
                    }
                    if ((reading.Buttons == GamepadButtons.B) && (gp_lastreading.Buttons != GamepadButtons.B))
                    {
                        ButtonAnswerClick(buttonB, null);
                    }
                    if ((reading.Buttons == GamepadButtons.X) && (gp_lastreading.Buttons != GamepadButtons.X))
                    {
                        ButtonAnswerClick(buttonX, null);
                    }
                    if ((reading.Buttons == GamepadButtons.Y) && (gp_lastreading.Buttons != GamepadButtons.Y))
                    {
                        ButtonAnswerClick(buttonY, null);
                    }

                    gp_lastreading = reading;
                }
            }
        }
Example #8
0
        /// <summary>
        /// Prints the gamepad readings to the UI
        /// </summary>
        /// <param name="reading">The reading.</param>
        private void WriteGamepadReadings(GamepadReading reading)
        {
            var propertyStringBuilder = new StringBuilder();
            var valueStringBuilder    = new StringBuilder();

            valueStringBuilder.AppendLine(this.gamepad.CurrentSlotId.ToString());
            propertyStringBuilder.AppendLine(string.Format("Slot:"));

            valueStringBuilder.AppendLine(reading.Buttons.ToString());
            propertyStringBuilder.AppendLine("Buttons:");

            valueStringBuilder.AppendLine(reading.LeftTrigger.ToString());
            propertyStringBuilder.AppendLine("LeftTrigger:");

            valueStringBuilder.AppendLine(reading.RightTrigger.ToString());
            propertyStringBuilder.AppendLine("RightTrigger:");

            valueStringBuilder.AppendLine(reading.LeftThumbstickX.ToString());
            propertyStringBuilder.AppendLine("LeftThumbstickX:");

            valueStringBuilder.AppendLine(reading.LeftThumbstickY.ToString());
            propertyStringBuilder.AppendLine("LeftThumbstickY:");

            valueStringBuilder.AppendLine(reading.RightThumbstickX.ToString());
            propertyStringBuilder.AppendLine("RightThumbstickX:");

            valueStringBuilder.AppendLine(reading.RightThumbstickY.ToString());
            propertyStringBuilder.AppendLine("RightThumbstickY:");

            var task  = Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { measurementId.Text = propertyStringBuilder.ToString(); }).AsTask();
            var task2 = Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { measurementValue.Text = valueStringBuilder.ToString(); }).AsTask();

            Task.WaitAll(task, task2);
        }
Example #9
0
        /* Method for dealing with button actions of connected controller */
        private async void gamepad_Controls()
        {
            Gamepad.GamepadAdded   += gamepad_Added;
            Gamepad.GamepadRemoved += gamepad_Removed;

            long cntrCounter = 0;

            while (true)
            {
                await Dispatcher.RunAsync(
                    CoreDispatcherPriority.Normal, () =>
                {
                    if (gamepad == null)
                    {
                        return;
                    }

                    String inputString;
                    GamepadReading input = gamepad.GetCurrentReading();

                    if (input.Equals(gamepadDelta))
                    {
                        return;
                    }

                    inputString = gamepad_packet_generator(input, cntrCounter);

                    writer.MeasureString(inputString);
                    writer.WriteString(inputString);

                    gamepadDelta = input;
                });

                try
                {
                    await writer.StoreAsync();
                }
                catch (Exception exception)
                {
                    switch (SocketError.GetStatus(exception.HResult))
                    {
                    case SocketErrorStatus.HostNotFound:
                        socket = null;
                        writer = null;
                        centralprogramStatusTextBlock.Text = "MULE Controls Status: Disconnected";
                        return;

                    default:
                        socket = null;
                        writer = null;
                        centralprogramStatusTextBlock.Text = "MULE Controls Status: Disconnected";
                        return;
                    }
                }
                await Task.Delay(TimeSpan.FromMilliseconds(100));

                cntrCounter++;
            }
        }
 // Update is called once per frame
 void Update()
 {
     if (controller != null)
     {
         //oldButton = reading;
         reading = controller.GetCurrentReading();
     }
 }
Example #11
0
        // Update is called once per frame
        void Update()
        {
            if (!IsStarted)
            {
                return;
            }
            // Yボタン入力でフラグを管理
            bool sideChange = false;

#if WINDOWS_UWP
            reading =
                ControlEventGetter.Instance.reading;
            if (reading.Buttons.HasFlag(GamepadButtons.Y))
            {
                sideChange = true;
            }
#else
            if (Input.GetButtonDown("Attack_SideChange"))
            {
                sideChange = true;
            }
#endif
            if (sideChange)
            {
                isSideUnder = !isSideUnder;
            }
            // プレイヤー位置を取得、その場に実態生成
            Vector3    playerPos  = player.transform.position;
            GameObject instPillar = Instantiate(pillar);
            // スケールY値に変数の値を加算
            instPillar.transform.localScale =
                new Vector3(instPillar.transform.localScale.x,
                            pillarHeightParamt,
                            instPillar.transform.localScale.z);
            // ポジション変更のための変数用意
            float pillarPos = (pillarHeightParamt / 2);
            if (isSideUnder)
            {
                // 下方向ならポジションをマイナスするため*=-1
                pillarPos *= -1;
            }
            // 変数を加算した値にポジション変更
            instPillar.transform.position = new Vector3(playerPos.x, playerPos.y + pillarPos, playerPos.z);
            // どの方向に出されたかを子オブジェクトに持たせる
            instPillar.transform.GetComponent <Pillar>().SetSideUnderFlag(isSideUnder);
            // 親オブジェクトにthisオブジェクトを登録
            instPillar.transform.SetParent(this.gameObject.transform);
            // 死に時間設定
            instPillar.GetComponent <KTB.AutoDestroy>().SetDestroyLimit(everyPillarLifeLimit);
            // カメラの方向に向きを合わせるを向かせる
            if (camera == null)
            {
                return;
            }
            instPillar.transform.eulerAngles += new Vector3(0, camera.transform.eulerAngles.y, 0);
            // カメラの参照をPillarに! by KTB
            //instPillar.GetComponent<Pillar>().Camera = OpeningSceneManager.GetComponent<gami.OpeningCameraMover>().mainCamera;
        }
Example #12
0
        /// <summary>
        /// Prints the gamepad readings to the UI
        /// </summary>
        /// <param name="reading">The reading.</param>
        private void WriteGamepadReadings(GamepadReading reading)
        {
            var propertyStringBuilder = new StringBuilder();
            var valueStringBuilder    = new StringBuilder();

            valueStringBuilder.AppendLine(this.gamepad.CurrentSlotId.ToString());
            propertyStringBuilder.AppendLine(string.Format("Slot:"));

            valueStringBuilder.AppendLine(reading.Buttons.ToString());
            propertyStringBuilder.AppendLine("Buttons:");

            valueStringBuilder.AppendLine(reading.LeftTrigger.ToString());
            propertyStringBuilder.AppendLine("LeftTrigger:");

            valueStringBuilder.AppendLine(reading.RightTrigger.ToString());
            propertyStringBuilder.AppendLine("RightTrigger:");

            valueStringBuilder.AppendLine(reading.LeftThumbstickX.ToString());
            propertyStringBuilder.AppendLine("LeftThumbstickX:");

            valueStringBuilder.AppendLine(reading.LeftThumbstickY.ToString());
            propertyStringBuilder.AppendLine("LeftThumbstickY:");

            valueStringBuilder.AppendLine(reading.RightThumbstickX.ToString());
            propertyStringBuilder.AppendLine("RightThumbstickX:");

            valueStringBuilder.AppendLine(reading.RightThumbstickY.ToString());
            propertyStringBuilder.AppendLine("RightThumbstickY:");

            // Config values
            EliteGamepadConfiguration config = this.gamepad.gamepad.GetConfiguration(this.gamepad.CurrentSlotId);

            valueStringBuilder.AppendLine(config.LeftTrigger.Min.ToString());
            propertyStringBuilder.AppendLine("LeftTriggerMin:");

            valueStringBuilder.AppendLine(config.LeftTrigger.Max.ToString());
            propertyStringBuilder.AppendLine("LeftTriggerMax:");

            valueStringBuilder.AppendLine(config.RightTrigger.Min.ToString());
            propertyStringBuilder.AppendLine("RightTriggerMin:");

            valueStringBuilder.AppendLine(config.RightTrigger.Max.ToString());
            propertyStringBuilder.AppendLine("RightTriggerMax:");

            double value = normalizeTriggerValue(reading.LeftTrigger, config.LeftTrigger.Min / 10, config.LeftTrigger.Max / 10);

            valueStringBuilder.AppendLine(value.ToString());
            propertyStringBuilder.AppendLine("VibrationValueLeft");

            value = normalizeTriggerValue(reading.RightTrigger, config.RightTrigger.Min / 10, config.RightTrigger.Max / 10);
            valueStringBuilder.AppendLine(value.ToString());
            propertyStringBuilder.AppendLine("VibrationValueRight");

            var task  = Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { measurementId.Text = propertyStringBuilder.ToString(); }).AsTask();
            var task2 = Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { measurementValue.Text = valueStringBuilder.ToString(); }).AsTask();

            Task.WaitAll(task, task2);
        }
Example #13
0
 private void LeeMando()
 {
     if (myGamepads.Count != 0)
     {
         mainGamepad = myGamepads[0];
         prereading  = reading;
         reading     = mainGamepad.GetCurrentReading();
     }
 }
Example #14
0
        public bool GetState(TBXInputButton button, GamepadReading gamepadState)
        {
            switch (button)
            {
            case TBXInputButton.ButtonA:
                return(GamepadButtons.A == (gamepadState.Buttons & GamepadButtons.A));

            case TBXInputButton.ButtonB:
                return(GamepadButtons.B == (gamepadState.Buttons & GamepadButtons.B));

            case TBXInputButton.ButtonX:
                return(GamepadButtons.X == (gamepadState.Buttons & GamepadButtons.X));

            case TBXInputButton.ButtonY:
                return(GamepadButtons.Y == (gamepadState.Buttons & GamepadButtons.Y));

            case TBXInputButton.LeftStick:
                return(GamepadButtons.LeftThumbstick == (gamepadState.Buttons & GamepadButtons.LeftThumbstick));

            case TBXInputButton.RightStick:
                return(GamepadButtons.RightThumbstick == (gamepadState.Buttons & GamepadButtons.RightThumbstick));

            case TBXInputButton.DpadUp:
                return(GamepadButtons.DPadUp == (gamepadState.Buttons & GamepadButtons.DPadUp));

            case TBXInputButton.DpadRight:
                return(GamepadButtons.DPadRight == (gamepadState.Buttons & GamepadButtons.DPadRight));

            case TBXInputButton.DpadDown:
                return(GamepadButtons.DPadDown == (gamepadState.Buttons & GamepadButtons.DPadDown));

            case TBXInputButton.DpadLeft:
                return(GamepadButtons.DPadLeft == (gamepadState.Buttons & GamepadButtons.DPadLeft));

            case TBXInputButton.Back:
                return(GamepadButtons.View == (gamepadState.Buttons & GamepadButtons.View));

            case TBXInputButton.Start:
                return(GamepadButtons.Menu == (gamepadState.Buttons & GamepadButtons.Menu));

            case TBXInputButton.RightBumper:
                return(GamepadButtons.RightShoulder == (gamepadState.Buttons & GamepadButtons.RightShoulder));

            case TBXInputButton.LeftBumper:
                return(GamepadButtons.LeftShoulder == (gamepadState.Buttons & GamepadButtons.LeftShoulder));

            case TBXInputButton.LeftTrigger:
                return(gamepadState.LeftTrigger > 0);

            case TBXInputButton.RightTrigger:
                return(gamepadState.RightTrigger > 0);

            default:
                TBLogging.LogWarning("Could not find requested Windows Input type.");
                return(false);
            }
        }
Example #15
0
        public GamepadButtonDownResult UpdateGamepadButtonState(GamepadReading gamepadReading, List <GamepadButtons> gamepadButtonsPreventClickable)
        {
            var clickable = true;

            if (gamepadButtonsPreventClickable != null)
            {
                foreach (var button in gamepadButtonsPreventClickable)
                {
                    clickable = (gamepadReading.Buttons & _gamepadButtonOne) == _gamepadButtonOne;

                    if (!clickable)
                    {
                        break;
                    }
                }
            }

            var gamepadButtonDownResult = new GamepadButtonDownResult();

            var buttonDown = false;

            if (!_gamepadButtonTwo.HasValue)
            {
                buttonDown = (gamepadReading.Buttons & _gamepadButtonOne) == _gamepadButtonOne;
            }
            else
            {
                buttonDown = (gamepadReading.Buttons & (_gamepadButtonOne | _gamepadButtonTwo.Value)) == (_gamepadButtonOne | _gamepadButtonTwo.Value);
            }

            gamepadButtonDownResult.ButtonDown = buttonDown;

            if (!buttonDown && _buttonDownCalled)
            {
                _buttonDownCalled = false;
            }

            if (buttonDown &&
                !_buttonDownCalled &&
                !_buttonDownCalledTime.HasValue &&
                clickable)
            {
                _buttonDownCalledTime = DateTime.Now;
            }
            else if (_buttonDownCalledTime.HasValue &&
                     DateTime.Now >= _buttonDownCalledTime.Value.Add(_buttonDownTime) &&
                     !_buttonDownCalled)
            {
                gamepadButtonDownResult.ButtonClicked = true;

                _buttonDownCalled     = true;
                _buttonDownCalledTime = null;
            }

            return(gamepadButtonDownResult);
        }
Example #16
0
 private String getLeftTrigger(GamepadReading input, String[] parsedButtons, String label)
 {
     foreach (String s in parsedButtons)
     {
         if (s.Trim().Equals("LeftShoulder"))
         {
             return("");
         }
     }
     return(label + input.LeftTrigger.ToString() + "|");
 }
Example #17
0
        private async void gamepad_Added(object sender, Gamepad e)
        {
            gamepad      = e;
            gamepadDelta = e.GetCurrentReading();

            await Dispatcher.RunAsync(
                CoreDispatcherPriority.Normal, () =>
            {
                controllerStatusTextBlock.Text = "XBOX Controller Status: Connected";
            });
        }
        private async Task GetPadInput()
        {
            GamepadReading pad = Gamepad.Gamepads.FirstOrDefault().GetCurrentReading();

            right = pad.RightTrigger;
            left  = pad.LeftTrigger;

            buttonPressed = pad.Buttons.ToString();

            await Task.Delay(50);
        }
        public bool GetFireGamepad()
        {
            readyGamePad();
            if (Gamepad.Gamepads.Count > 0)
            {
                GamepadReading reading = Gamepad.Gamepads[0].GetCurrentReading();
                return(reading.Buttons == GamepadButtons.A);
            }

            return(manager.joyPad.FirePressed);
        }
Example #20
0
        private string GetStateLog(GamepadReading reading)
        {
            var stateLog = $"Left Joystick: {reading.LeftThumbstickX.ToString()}, {reading.LeftThumbstickY}\n";

            stateLog += $"Right Joystick: {reading.RightThumbstickX}, {reading.RightThumbstickY}\n";
            stateLog += $"Left Trigger: {reading.LeftTrigger}\n";
            stateLog += $"Right Trigger: {reading.RightTrigger}\n";
            stateLog += $"Buttons: {reading.Buttons}";

            return(stateLog);
        }
Example #21
0
        private void GetControllers()
        {
            lock (this)
            {
                if (DriveController != null || ArmController != null)
                {
                    return;
                }
                while (Gamepad.Gamepads.Count < 1)
                {
                    ;
                }
                Task.Delay(100).Wait();
                Gamepad g1 = Gamepad.Gamepads[0];
                if (Gamepad.Gamepads.Count > 1)
                {
                    Gamepad g2 = Gamepad.Gamepads[1];

                    while (true)
                    {
                        GamepadReading r1 = g1.GetCurrentReading();
                        GamepadReading r2 = g2.GetCurrentReading();
                        Debug.WriteLine($"{r1.Buttons}, {r2.Buttons}");
                        if (r1.Buttons != 0)
                        {
                            ArmController   = g2;
                            DriveController = g1;
                            break;
                        }
                        else if (r2.Buttons != 0)
                        {
                            ArmController   = g1;
                            DriveController = g2;
                            break;
                        }
                    }
                }
                else
                {
                    ArmController = g1;
                    for (int i = 0; i < 200; i++)
                    {
                        if (g1.GetCurrentReading().Buttons != 0)
                        {
                            ArmController   = null;
                            DriveController = g1;
                            break;
                        }
                        Task.Delay(10).Wait();
                    }
                }
            }
        }
Example #22
0
        private void DoArm()
        {
            if (ArmController != null)
            {
                GamepadReading reading = ArmController.GetCurrentReading();
                if (reading.LeftThumbstickX == 0 &&
                    reading.LeftThumbstickY == 0 &&
                    reading.RightThumbstickX == 0 &&
                    reading.RightThumbstickY == 0)
                {
                    return;
                }
                double fArmUpper = ((-reading.RightThumbstickY + 1) / 2) * 500 + 70;
                if (fArmUpper > 255)
                {
                    fArmUpper = 255;
                }

                double fArmLower = ((-reading.RightThumbstickX + 1) / 2) * 650 - 70;
                if (fArmLower > 255)
                {
                    fArmLower = 255;
                }

                double fPan = ((reading.LeftThumbstickY + 1) / 2) * 400;
                if (fPan > 255)
                {
                    fPan = 255;
                }
                double fPitch = ((reading.LeftThumbstickX + 1) / 2) * 400 + 15;
                if (fPitch > 255)
                {
                    fPitch = 255;
                }
                byte ArmUpper = (byte)fArmUpper;
                byte ArmLower = (byte)fArmLower;
                byte Pan      = (byte)fPan;
                byte Pitch    = (byte)fPitch;
                //Debug.WriteLine($"{actuator}");
                //Debug.WriteLine($"{Pan}");
                //Debug.WriteLine($"{reading.LeftThumbstickX}, {reading.LeftThumbstickY}, {reading.RightThumbstickX}, {reading.RightThumbstickY}, {reading.RightTrigger}, {reading.LeftTrigger}");
                packet[(int)PacketIndex.ArmLower]  = ArmLower;
                packet[(int)PacketIndex.ArmUpper]  = ArmUpper;
                packet[(int)PacketIndex.ClawPan]   = Pan;
                packet[(int)PacketIndex.ClawPitch] = Pitch;
                //Debug.WriteLine($"{ArmLower} {ArmUpper}");
                //Debug.WriteLine($"{Pitch}");
            }
            else
            {
                // Do nothing to arm
            }
        }
Example #23
0
 private void LeeMando()
 {
     //No hay GamePads en la lista, no añade ninguno
     if (myGamepads.Count != 0)
     {
         //Selecciona el principal como el primero de la lista
         mainGamepad = myGamepads[0];
         prereading  = reading;
         //Prerading es el reading anterior. Al principio es NULL
         reading = mainGamepad.GetCurrentReading();
     }
 }
Example #24
0
        private static bool GetGamepadButtonState(GamepadReading reading, InputTypes button)
        {
            if (!LibretroGamepadToWindowsGamepadButtonMapping.ContainsKey(button))
            {
                return(false);
            }

            var nativeButton = LibretroGamepadToWindowsGamepadButtonMapping[button];
            var output       = (reading.Buttons & nativeButton) == nativeButton;

            return(output);
        }
Example #25
0
        /// <summary>
        /// Whether gamepad processing should be skipped due to the current and previous reading being the same.
        /// </summary>
        /// <param name="reading">The reading.</param>
        /// <returns>True if the reading is new and should be processed; otherwise, false.</returns>
        private bool ShouldSkipGamepadProcessing(GamepadReading reading)
        {
            var newTimestamp = reading.Timestamp;

            if (this.lastTimestamp == reading.Timestamp)
            {
                return(true);
            }

            this.lastTimestamp = newTimestamp;
            return(false);
        }
Example #26
0
		private async Task GetTCodeFromGamepadreading()
		{
			await Task.Run(() =>
			{
				while (IsRunning)
				{
					if (_selectedGamePad == null) 
					{
						Dispose();
						return;
					}
					_tcodeFactory.Init();
					GamepadReading reading = _selectedGamePad.GetCurrentReading();
					var axisValues = new HashSet<ChannelValueModel>();
					_tcodeFactory.Calculate(GamepadAxisNames.LeftXAxis, CalculateDeadZone(reading.LeftThumbstickX), axisValues);
					_tcodeFactory.Calculate(GamepadAxisNames.LeftYAxis, CalculateDeadZone(reading.LeftThumbstickY), axisValues);
					_tcodeFactory.Calculate(GamepadAxisNames.RightXAxis, CalculateDeadZone(reading.RightThumbstickX), axisValues);
					_tcodeFactory.Calculate(GamepadAxisNames.RightYAxis, CalculateDeadZone(reading.RightThumbstickY), axisValues);
					_tcodeFactory.Calculate(GamepadAxisNames.RightTrigger, reading.RightTrigger, axisValues);
					_tcodeFactory.Calculate(GamepadAxisNames.LeftTrigger, reading.LeftTrigger, axisValues);
					// Binary inputs
					_tcodeFactory.Calculate(GamepadAxisNames.A, GamepadButtons.A == (reading.Buttons & GamepadButtons.A), axisValues);
					_tcodeFactory.Calculate(GamepadAxisNames.B, GamepadButtons.B == (reading.Buttons & GamepadButtons.B), axisValues);
					_tcodeFactory.Calculate(GamepadAxisNames.X, GamepadButtons.X == (reading.Buttons & GamepadButtons.X), axisValues);
					_tcodeFactory.Calculate(GamepadAxisNames.Y, GamepadButtons.Y == (reading.Buttons & GamepadButtons.Y), axisValues);
					_tcodeFactory.Calculate(GamepadAxisNames.RightBumper, GamepadButtons.RightShoulder == (reading.Buttons & GamepadButtons.RightShoulder), axisValues);
					_tcodeFactory.Calculate(GamepadAxisNames.LeftBumper, GamepadButtons.LeftShoulder == (reading.Buttons & GamepadButtons.LeftShoulder), axisValues);
					_tcodeFactory.Calculate(GamepadAxisNames.Start, GamepadButtons.View == (reading.Buttons & GamepadButtons.View), axisValues);
					_tcodeFactory.Calculate(GamepadAxisNames.Select, GamepadButtons.Menu == (reading.Buttons & GamepadButtons.Menu), axisValues);
					_tcodeFactory.Calculate(GamepadAxisNames.DPadUp, GamepadButtons.DPadUp == (reading.Buttons & GamepadButtons.DPadUp), axisValues);
					_tcodeFactory.Calculate(GamepadAxisNames.DPadDown, GamepadButtons.DPadDown == (reading.Buttons & GamepadButtons.DPadDown), axisValues);
					_tcodeFactory.Calculate(GamepadAxisNames.DPadLeft, GamepadButtons.DPadLeft == (reading.Buttons & GamepadButtons.DPadLeft), axisValues);
					_tcodeFactory.Calculate(GamepadAxisNames.DPadRight, GamepadButtons.DPadRight == (reading.Buttons & GamepadButtons.DPadRight), axisValues);
					_tcodeFactory.Calculate(GamepadAxisNames.RightAxisButton, GamepadButtons.RightThumbstick == (reading.Buttons & GamepadButtons.RightThumbstick), axisValues);
					_tcodeFactory.Calculate(GamepadAxisNames.LeftAxisButton, GamepadButtons.LeftThumbstick == (reading.Buttons & GamepadButtons.LeftThumbstick), axisValues);

					EventHandler<DataReceivedEventArgs> handler = DataRecieved;
					if (handler != null)
					{
						var eventArgs = new DataReceivedEventArgs();
						if (_device.GetType() == typeof(TcpHandler) || _device.GetType() == typeof(UdpHandler))
						{
							eventArgs.GamepadData = axisValues;
						} 
						else
						{
							eventArgs.Data = _tcodeFactory.FormatTCode(axisValues);
						}
						handler(this, eventArgs);
					}
				}
			});
		}
Example #27
0
 private string GamePadReadingToString(GamepadReading reading)
 {
     return(string.Format("LeftStickX={0}\n" +
                          "LeftstickY={1}\n" +
                          "LeftTrigger={2}\n" +
                          "RightStickX={3}\n" +
                          "RightStickY={4}\n" +
                          "RightTrigger={5}\n" +
                          "Buttons={6}\n\n",
                          reading.LeftThumbstickX, reading.LeftThumbstickY, reading.LeftTrigger,
                          reading.RightThumbstickX, reading.RightThumbstickY, reading.RightTrigger,
                          reading.Buttons));
 }
Example #28
0
        void Update()
        {
#if WINDOWS_UWP
            oldButton = reading;
            reading   = ControlEventGetter.Instance.reading;
#endif
            //Debug.Log("circleRadius : " + Mathf.Sqrt((this.transform.position.x-mainCamera.transform.position.x)* (this.transform.position.x - mainCamera.transform.position.x)+ (this.transform.position.z - mainCamera.transform.position.z)* (this.transform.position.z - mainCamera.transform.position.z)));
            ControllerEvent();
            AccelAction();
            // 移動
            TransformPos();
            //mainCamera.transform.LookAt(this.transform);
        }
Example #29
0
 private void LeeMando()
 {
     if (myGamepads.Count != 0)
     {
         mainGamepad = myGamepads[0];
         prereading  = reading;
         reading     = mainGamepad.GetCurrentReading();
         //Muestra en IU
         GamePadLog.Text = "Botones: " + reading.Buttons.ToString() + "\n"
                           + " @@@ " + reading.RightThumbstickX.ToString()
                           + " , " + reading.LeftThumbstickX.ToString();
     }
 }
        void Update()
        {
#if WINDOWS_UWP
            oldButton = reading;
            reading   = ControlEventGetter.Instance.reading;
#endif
            if (!IsAutoPilot)
            {
                ControllerEvent();
                GearAutoAccelAction();
                // 今現在向いている方向に進む
                this.transform.Translate(new Vector3(0, 0, speed));
            }
        }
Example #31
0
 void HandleInputReportRecieved(HidDevice sender, HidInputReportReceivedEventArgs args)
     => _currentReading = args.Report.ToGamepadReading();
Example #32
0
        /// <summary>
        /// Whether gamepad processing should be skipped due to the current and previous reading being the same.
        /// </summary>
        /// <param name="reading">The reading.</param>
        /// <returns>True if the reading is new and should be processed; otherwise, false.</returns>
        private bool ShouldSkipGamepadProcessing(GamepadReading reading)
        {
            var newTimestamp = reading.Timestamp;
            if (this.lastTimestamp == reading.Timestamp)
            {
                return true;
            }

            this.lastTimestamp = newTimestamp;
            return false;
        }
Example #33
0
        /// <summary>
        /// Processes the gamepad readings for sending the assigned key.
        /// </summary>
        /// <param name="reading">The reading.</param>
        private void ProcessGamepadReadings(GamepadReading reading)
        {
            var values = (GamepadButtons[])Enum.GetValues(typeof(GamepadButtons));

            var tasks = new HashSet<Task>();
            foreach (var value in values.Where(v => (reading.Buttons & v) != 0))
            {
                VirtualKey key;
                if (this.assignedButtons.TryGetValue(value, out key) && !this.buttonsDown.Contains(value))
                {
                    this.buttonsDown.Add(value);
                    this.SendKeyDown(key);
                }

                switch (reading.Buttons & value)
                {
                    case GamepadButtons.Aux1:
                        tasks.Add(Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { aux1_identifier.BorderBrush = new SolidColorBrush(Color.FromArgb(0xFF, 0x10, 0x7C, 0x10)); }).AsTask());
                        break;
                    case GamepadButtons.Aux2:
                        tasks.Add(Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { aux2_identifier.BorderBrush = new SolidColorBrush(Color.FromArgb(0xFF, 0x10, 0x7C, 0x10)); }).AsTask());
                        break;
                    case GamepadButtons.Aux3:
                        tasks.Add(Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { aux3_identifier.BorderBrush = new SolidColorBrush(Color.FromArgb(0xFF, 0x10, 0x7C, 0x10)); }).AsTask());
                        break;
                    case GamepadButtons.Aux4:
                        tasks.Add(Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { aux4_identifier.BorderBrush = new SolidColorBrush(Color.FromArgb(0xFF, 0x10, 0x7C, 0x10)); }).AsTask());
                        break;
                    default:
                        break;
                }
            }

            foreach (var value in values.Where(v => (reading.Buttons & v) == 0))
            {
                if (this.buttonsDown.Contains(value))
                {
                    VirtualKey key;
                    if (this.assignedButtons.TryGetValue(value, out key))
                    {
                        this.buttonsDown.Add(value);
                        this.SendKeyUp(key);
                    }

                    this.buttonsDown.Remove(value);
                }

                if (this.buttonsDown.Contains(value))
                {
                    this.buttonsDown.Remove(value);
                }

                switch (value)
                {
                    case GamepadButtons.Aux1:
                        tasks.Add(Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { aux1_identifier.BorderBrush = new SolidColorBrush(Color.FromArgb(0xFF, 0x3A, 0x3A, 0x3A)); }).AsTask());
                        break;
                    case GamepadButtons.Aux2:
                        tasks.Add(Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { aux2_identifier.BorderBrush = new SolidColorBrush(Color.FromArgb(0xFF, 0x3A, 0x3A, 0x3A)); }).AsTask());
                        break;
                    case GamepadButtons.Aux3:
                        tasks.Add(Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { aux3_identifier.BorderBrush = new SolidColorBrush(Color.FromArgb(0xFF, 0x3A, 0x3A, 0x3A)); }).AsTask());
                        break;
                    case GamepadButtons.Aux4:
                        tasks.Add(Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { aux4_identifier.BorderBrush = new SolidColorBrush(Color.FromArgb(0xFF, 0x3A, 0x3A, 0x3A)); }).AsTask());
                        break;
                    default:
                        break;
                }
            }

            // Wait for UI to update
            Task.WaitAll(tasks.ToArray<Task>());
        }
Example #34
0
        /// <summary>
        /// Prints the gamepad readings to the UI
        /// </summary>
        /// <param name="reading">The reading.</param>
        private void WriteGamepadReadings(GamepadReading reading)
        {
            var propertyStringBuilder = new StringBuilder();
            var valueStringBuilder = new StringBuilder();

            valueStringBuilder.AppendLine(this.gamepad.CurrentSlotId.ToString());
            propertyStringBuilder.AppendLine(string.Format("Slot:"));

            valueStringBuilder.AppendLine(reading.Buttons.ToString());
            propertyStringBuilder.AppendLine("Buttons:");

            valueStringBuilder.AppendLine(reading.LeftTrigger.ToString());
            propertyStringBuilder.AppendLine("LeftTrigger:");

            valueStringBuilder.AppendLine(reading.RightTrigger.ToString());
            propertyStringBuilder.AppendLine("RightTrigger:");

            valueStringBuilder.AppendLine(reading.LeftThumbstickX.ToString());
            propertyStringBuilder.AppendLine("LeftThumbstickX:");

            valueStringBuilder.AppendLine(reading.LeftThumbstickY.ToString());
            propertyStringBuilder.AppendLine("LeftThumbstickY:");

            valueStringBuilder.AppendLine(reading.RightThumbstickX.ToString());
            propertyStringBuilder.AppendLine("RightThumbstickX:");

            valueStringBuilder.AppendLine(reading.RightThumbstickY.ToString());
            propertyStringBuilder.AppendLine("RightThumbstickY:");

            var task = Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { measurementId.Text = propertyStringBuilder.ToString(); }).AsTask();
            var task2 = Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { measurementValue.Text = valueStringBuilder.ToString(); }).AsTask();
            Task.WaitAll(task, task2);
        }