示例#1
0
        private static SharpDX.XInput.Controller GetController(PlayerIndex playerIndex)
        {
            SharpDX.XInput.Controller controller = null;
            switch (playerIndex)
            {
            case PlayerIndex.One:
                // TODO: need to research XInput vs. XNA behavior with regards to which player controllers
                // are assigned to in XInput, and if they are reassigned as controllers are added/removed.
                // for now, we won't use playerAny unless you pass (PlayerIndex)0
                //controller = !playerOne.IsConnected && playerAny.IsConnected ? playerAny : playerOne;
                controller = playerOne;
                break;

            case PlayerIndex.Two:
                controller = playerTwo;
                break;

            case PlayerIndex.Three:
                controller = playerThree;
                break;

            case PlayerIndex.Four:
                controller = playerFour;
                break;

            default:
                controller = playerAny;
                break;
            }
            return(controller);
        }
示例#2
0
 internal XBoxController(SharpDX.XInput.Controller dxController)
 {
     this.dxC                         = dxController;
     this.pIndex                      = (int)this.dxC.UserIndex;
     this.SnapDeadZoneCenter          = 50.0;
     this.SnapDeadZoneTolerance       = 10.0;
     this.TriggerLeftPressThreshold   = 10.0;
     this.TriggerRightPressThreshold  = 10.0;
     this.RefreshIntervalMilliseconds = 30;
 }
 public static void Init()
 {
     controller = new SharpDX.XInput.Controller[4];
     for (int i = 0; i < controller.Length; i++)
     {
         controller[i] = new SharpDX.XInput.Controller((SharpDX.XInput.UserIndex)i);
     }
     State     = new SharpDX.XInput.Gamepad[controller.Length];
     PrevState = new SharpDX.XInput.Gamepad[controller.Length];
 }
 internal XBoxController(SharpDX.XInput.Controller dxController)
 {
     this.dxC = dxController;
     this.pIndex = (int)this.dxC.UserIndex;
     this.SnapDeadZoneCenter = 50.0;
     this.SnapDeadZoneTolerance = 10.0;
     this.TriggerLeftPressThreshold = 10.0;
     this.TriggerRightPressThreshold = 10.0;
     this.RefreshIntervalMilliseconds = 30;
 }
 public InputController(PlayerIndex playerIndex)
 {
     this.playerIndex = playerIndex;
     if (playerIndex == PlayerIndex.One)
     {
         controller = new SharpDX.XInput.Controller(SharpDX.XInput.UserIndex.One);
     }
     if (playerIndex == PlayerIndex.Two)
     {
         controller = new SharpDX.XInput.Controller(SharpDX.XInput.UserIndex.Two);
     }
     this.GPS = GamePad.GetState(playerIndex);
 }
示例#6
0
        public static void vibrate(int gp_index, float left_vib, float right_vib)
        {
#if GAMEPAD_VIBRATION
            left_vib  = Math.Min(Math.Max(0.0f, left_vib), 1.0f);
            right_vib = Math.Min(Math.Max(0.0f, right_vib), 1.0f);

            var left_motor  = (ushort)(left_vib * 65535.0f);
            var right_motor = (ushort)(right_vib * 65535.0f);

            var vib = new SharpDX.XInput.Vibration {
                LeftMotorSpeed  = left_motor,
                RightMotorSpeed = right_motor
            };

            var gamepad = new SharpDX.XInput.Controller((SharpDX.XInput.UserIndex)gp_index);

            if (GamePad.GetState((PlayerIndex)gp_index).IsConnected)
            {
                gamepad.SetVibration(vib);
            }
#endif
        }
 public ControllerTuple(SharpDX.XInput.Controller controller, Config config)
 {
     Controller = controller;
     Config     = config;
 }
 public XBoxController(int index)
 {
     this.index      = index;
     this.Controller = new SharpDX.XInput.Controller((SharpDX.XInput.UserIndex)index);
 }
示例#9
0
 //call this on call back when something is beeing plugged in or unplugged
 public void InitializeJoystickIfPossible()
 {
     m_joystick = new SharpDX.XInput.Controller(SharpDX.XInput.UserIndex.One);
     if (JoystickConnected != null)
     {
         JoystickConnected(m_joystick.IsConnected);
     }
     
 }
示例#10
0
 public void xboxdevice()
 {
     ctrl = new SharpDX.XInput.Controller(SharpDX.XInput.UserIndex.One);
 }
示例#11
0
        /// <summary>
        /// Aquire the DInput joystick devices
        /// </summary>
        /// <returns></returns>
        public bool InitDirectInput( )
        {
            log.Debug( "Entry" );

              // Enumerate joysticks in the system.
              int tabs = 0;
              SharpDX.XInput.UserIndex gpDeviceIndex = SharpDX.XInput.UserIndex.Any;

              try {
            // Initialize DirectInput
            log.Debug( "Instantiate DirectInput" );
            var directInput = new DirectInput( );

            log.Debug( "Get Keyboard device" );
            m_Keyboard = new KeyboardCls( new Keyboard( directInput ), this );

            // scan the Input for attached devices
            log.Debug( "Scan GameControl devices" );
            int nJs = 1; // number the Joystick Tabs
            foreach ( DeviceInstance instance in directInput.GetDevices( DeviceClass.GameControl, DeviceEnumerationFlags.AttachedOnly ) ) {

              log.InfoFormat( "GameControl: #{0} Type:{1} Device:{2}", tabs, instance.Type.ToString( ), instance.ProductName );
              // Create the device interface
              log.Debug( "Create the device interface" );
              SharpDX.DirectInput.Joystick jsDevice = null;
              SharpDX.XInput.Controller gpDevice = null;
              JoystickCls js = null; GamepadCls gs = null;
              if ( m_AppSettings.DetectGamepad && ( instance.Usage == SharpDX.Multimedia.UsageId.GenericGamepad ) ) {
            // detect Gamepad only if the user wishes to do so
            for ( SharpDX.XInput.UserIndex i =  SharpDX.XInput.UserIndex.One; i < SharpDX.XInput.UserIndex.Four; i++ ) {
              gpDevice = new SharpDX.XInput.Controller( i );
              if ( gpDevice.IsConnected ) {
                log.InfoFormat( "Scan Input {0} for gamepad - {1}", i, gpDevice.GetCapabilities( SharpDX.XInput.DeviceQueryType.Gamepad ).ToString( ) );
                gpDeviceIndex = i;
                break;
              }
            }
              }
              else {
            jsDevice = new Joystick( directInput, instance.InstanceGuid );
            log.DebugFormat( "Create the device interface for: {0}", jsDevice.Information.ProductName );
              }

              // we have the first tab made as reference so TabPage[0] already exists
              if ( tabs == 0 ) {
            // first panel - The Tab content exists already
            if ( gpDevice != null ) {
              log.Debug( "Add first Gamepad panel" );
              tc1.TabPages[tabs].Text = "Gamepad ";
              UC_GpadPanel uUC_GpadPanelNew = new UC_GpadPanel( ); tc1.TabPages[tabs].Controls.Add( uUC_GpadPanelNew );
              uUC_GpadPanelNew.Size = UC_JoyPanel.Size; uUC_GpadPanelNew.Location = UC_JoyPanel.Location;
              UC_JoyPanel.Enabled = false; UC_JoyPanel.Visible = false; // don't use this one
              log.Debug( "Create Gamepad instance" );
              gs = new GamepadCls( gpDevice, uUC_GpadPanelNew, tabs ); // does all device related activities for that particular item
              gs.SetDeviceName( instance.ProductName );
              tc1.TabPages[tabs].ToolTipText = String.Format( "{0}\n{1}", gs.DevName, " " );
              toolTip1.SetToolTip( tc1.TabPages[tabs], tc1.TabPages[tabs].ToolTipText );
            }
            else {
              log.Debug( "Add first Joystick panel" );
              log.Debug( "Create Joystick instance" );
              tc1.TabPages[tabs].Text = String.Format( "Joystick {0}", nJs++ );
              js = new JoystickCls( jsDevice, this, tabs + 1, UC_JoyPanel, tabs ); // does all device related activities for that particular item
              tc1.TabPages[tabs].ToolTipText = String.Format( "{0}\n{1}", js.DevName, js.DevInstanceGUID );
              toolTip1.SetToolTip( tc1.TabPages[tabs], tc1.TabPages[tabs].ToolTipText );
            }
              }
              else {
            if ( gpDevice != null ) {
              log.Debug( "Add next Gamepad panel" );
              tc1.TabPages.Add( "Gamepad " );
              UC_GpadPanel uUC_GpadPanelNew = new UC_GpadPanel( ); tc1.TabPages[tabs].Controls.Add( uUC_GpadPanelNew );
              uUC_GpadPanelNew.Size = UC_JoyPanel.Size; uUC_GpadPanelNew.Location = UC_JoyPanel.Location;
              log.Debug( "Create Gamepad instance" );
              gs = new GamepadCls( gpDevice, uUC_GpadPanelNew, tabs ); // does all device related activities for that particular item
              gs.SetDeviceName( instance.ProductName );
              tc1.TabPages[tabs].ToolTipText = String.Format( "{0}\n{1}", gs.DevName, " " );
              toolTip1.SetToolTip( tc1.TabPages[tabs], tc1.TabPages[tabs].ToolTipText );
            }
            else {
              log.Debug( "Add next Joystick panel" );
              // setup the further tab contents along the reference one in TabPage[0] (the control named UC_JoyPanel)
              tc1.TabPages.Add( String.Format( "Joystick {0}", nJs++ ) );
              UC_JoyPanel uUC_JoyPanelNew = new UC_JoyPanel( ); tc1.TabPages[tabs].Controls.Add( uUC_JoyPanelNew );
              uUC_JoyPanelNew.Size = UC_JoyPanel.Size; uUC_JoyPanelNew.Location = UC_JoyPanel.Location;
              log.Debug( "Create Joystick instance" );
              js = new JoystickCls( jsDevice, this, tabs + 1, uUC_JoyPanelNew, tabs ); // does all device related activities for that particular item
              tc1.TabPages[tabs].ToolTipText = String.Format( "{0}\n{1}", js.DevName, js.DevInstanceGUID );
              toolTip1.SetToolTip( tc1.TabPages[tabs], tc1.TabPages[tabs].ToolTipText );
            }
              }

              if ( gpDevice != null ) {
            m_Gamepad = gs;
            SetGamepadTab( tc1.TabPages[tabs] );  // indicates the gamepad tab (murks..)
            MyColors.GamepadColor = MyColors.TabColor[tabs]; // save it for future use
              }
              else if ( js != null ) {
            m_Joystick.Add( js ); // add to joystick list
            tc1.TabPages[tabs].Tag = ( m_Joystick.Count - 1 );  // used to find the tab for polling
              }
              tc1.TabPages[tabs].BackColor = MyColors.TabColor[tabs]; // each tab has its own color

              // next tab
              tabs++;
              if ( tabs >= JoystickCls.JSnum_MAX ) break; // cannot load more JSticks than predefined Tabs
            }
            log.DebugFormat( "Added {0} GameControl devices", tabs );

            if ( tabs == 0 ) {
              log.Warn( "Unable to find and/or create any joystick devices." );
              MessageBox.Show( "Unable to create a joystick device. Program will exit.", "No joystick found", MessageBoxButtons.OK, MessageBoxIcon.Information );
              return false;
            }

            // load the profile items from the XML
            log.Debug( "Init ActionTree" );
            InitActionTree( true );

              }
              catch ( Exception ex ) {
            log.Debug( "InitDirectInput failed unexpectedly", ex );
            return false;
              }

              return true;
        }
 public Controller()
 {
     index = SharpDX.XInput.UserIndex.One;
     gamepad = new SharpDX.XInput.Controller(index);
     state = gamepad.GetState();
 }