Exemple #1
0
 public Driver()
 {
     gcn1DZ = new ControllerDeadZones();
     gcn2DZ = new ControllerDeadZones();
     gcn3DZ = new ControllerDeadZones();
     gcn4DZ = new ControllerDeadZones();
 }
        public static void setJoystick(GCNState input, int joystickID, ControllerDeadZones deadZones)
        {
            int            multiplier = 302;
            X360Controller controller = Controllers[joystickID - 1];

            //32767
            //analog stick
            controller.LeftStickX = (short)(multiplier * (128 - input.analogX));
            controller.LeftStickY = (short)(multiplier * (128 - input.analogY));

            //c stick
            controller.RightStickX = (short)(multiplier * (128 - input.cstickX));
            controller.RightStickY = (short)(multiplier * (128 - input.cstickY));

            //triggers
            controller.LeftTrigger  = (byte)input.analogL;
            controller.RightTrigger = (byte)input.analogR;

            controller.Buttons = 0;

            //dpad button mode for DDR pad support
            if (input.up)
            {
                controller.Buttons |= X360Buttons.Up;
            }
            if (input.down)
            {
                controller.Buttons |= X360Buttons.Down;
            }
            if (input.left)
            {
                controller.Buttons |= X360Buttons.Left;
            }
            if (input.right)
            {
                controller.Buttons |= X360Buttons.Right;
            }

            //buttons
            if (input.A)
            {
                controller.Buttons |= X360Buttons.A;
            }
            if (input.B)
            {
                controller.Buttons |= X360Buttons.X;
            }
            if (input.X)
            {
                controller.Buttons |= X360Buttons.B;
            }
            if (input.Y)
            {
                controller.Buttons |= X360Buttons.Y;
            }
            if (input.Z)
            {
                controller.Buttons |= X360Buttons.Logo;
            }
            if (input.R)
            {
                controller.Buttons |= X360Buttons.RightBumper;
            }
            if (input.L)
            {
                controller.Buttons |= X360Buttons.LeftBumper;
            }
            if (input.start)
            {
                controller.Buttons |= X360Buttons.Start;
            }

            scp.Report(joystickID, controller.GetReport());
        }
        public static void setJoystick(ref vJoy joystick, GCNState input, uint joystickID, ControllerDeadZones deadZones)
        {
            bool res;
            int  multiplier = 127;

            //32767
            //analog stick
            if (!deadZones.analogStick.inDeadZone(input.analogX, input.analogY))
            {
                res = joystick.SetAxis(multiplier * input.analogX, joystickID, HID_USAGES.HID_USAGE_X);
                res = joystick.SetAxis(multiplier * (255 - input.analogY), joystickID, HID_USAGES.HID_USAGE_Y);
            }
            else
            {
                res = joystick.SetAxis(multiplier * 129, joystickID, HID_USAGES.HID_USAGE_X);
                res = joystick.SetAxis(multiplier * 129, joystickID, HID_USAGES.HID_USAGE_Y);
            }

            //c stick
            if (!deadZones.cStick.inDeadZone(input.cstickX, input.cstickY))
            {
                res = joystick.SetAxis(multiplier * input.cstickX, joystickID, HID_USAGES.HID_USAGE_RX);
                res = joystick.SetAxis(multiplier * (255 - input.cstickY), joystickID, HID_USAGES.HID_USAGE_RY);
            }
            else
            {
                res = joystick.SetAxis(multiplier * 129, joystickID, HID_USAGES.HID_USAGE_RX);
                res = joystick.SetAxis(multiplier * 129, joystickID, HID_USAGES.HID_USAGE_RY);
            }

            //triggers
            if (!deadZones.LTrigger.inDeadZone(input.analogL))
            {
                res = joystick.SetAxis(multiplier * input.analogL, joystickID, HID_USAGES.HID_USAGE_Z);
            }
            else
            {
                res = joystick.SetAxis(0, joystickID, HID_USAGES.HID_USAGE_Z);
            }
            if (!deadZones.RTrigger.inDeadZone(input.analogR))
            {
                res = joystick.SetAxis(multiplier * input.analogR, joystickID, HID_USAGES.HID_USAGE_RZ);
            }
            else
            {
                res = joystick.SetAxis(0, joystickID, HID_USAGES.HID_USAGE_RZ);
            }

            //dpad button mode for DDR pad support
            res = joystick.SetBtn(input.up, joystickID, 9);
            res = joystick.SetBtn(input.down, joystickID, 10);
            res = joystick.SetBtn(input.left, joystickID, 11);
            res = joystick.SetBtn(input.right, joystickID, 12);

            //buttons
            res = joystick.SetBtn(input.A, joystickID, 1);
            res = joystick.SetBtn(input.B, joystickID, 2);
            res = joystick.SetBtn(input.X, joystickID, 3);
            res = joystick.SetBtn(input.Y, joystickID, 4);
            res = joystick.SetBtn(input.Z, joystickID, 5);
            res = joystick.SetBtn(input.R, joystickID, 6);
            res = joystick.SetBtn(input.L, joystickID, 7);
            res = joystick.SetBtn(input.start, joystickID, 8);
        }