예제 #1
0
        public JoystickInfo Read()
        {
            var info = new JoystickInfo();

            if (_pressedKeys[Keys.W])
            {
                info.Y = 0.5f;
            }
            else if (_pressedKeys[Keys.S])
            {
                info.Y = -0.5f;
            }
            else
            {
                info.Y = 0;
            }

            if (_pressedKeys[Keys.A])
            {
                info.Rot = -0.5f;
            }
            else if (_pressedKeys[Keys.D])
            {
                info.Rot = 0.5f;
            }
            else
            {
                info.Rot = 0;
            }

            return(info);
        }
예제 #2
0
        private void DrawJoystick(JoystickInfo info)
        {
            joystickDrawer.Throttle = info.Throttle;
            joystickDrawer.Rot      = info.Rot;
            joystickDrawer.X        = info.X;
            joystickDrawer.Y        = info.Y;

            joystickDrawer.Invalidate();
        }
예제 #3
0
        public JoystickInfo Read()
        {
            joyGetPosEx(_uJoyID, ref _info);
            JoystickInfo info = new JoystickInfo()
            {
                X        = (_info.dwXpos - 32768) / 65536.0f,
                Y        = (-_info.dwYpos + 32768) / 65536.0f,
                Rot      = (_info.dwRpos - 32768) / 65536.0f,
                Throttle = (-_info.dwZpos + 65536) / 65536.0f,
                POV      = (_info.dwPOV == 65535) ? -1 : (_info.dwPOV / 100.0f),
                Buttons  = _info.dwButtons
            };

            return(info);
        }
예제 #4
0
        private void JoystickControl_JoystickMoved(object sender, Joystick.JoystickInfo e)
        {
            float forward = e.Y;
            float rot     = e.Rot;

            sbyte left, right;
            int   maxPWM = (int)numMaxPWM.Value;

            left  = (sbyte)(2 * forward * maxPWM);
            right = (sbyte)(2 * forward * maxPWM);

            left  -= (sbyte)(2 * rot * maxPWM);
            right += (sbyte)(2 * rot * maxPWM);

            lblLeft.Text  = left.ToString();
            lblRight.Text = right.ToString();

            _sender.Send(left, right);
        }