public JoystickGlobal(Device device) { this.device = device; }
public override object CreateGlobal() { var directInput = new DirectInput(); var handle = Process.GetCurrentProcess().MainWindowHandle; devices = new List<Device>(); var diDevices = directInput.GetDevices(DeviceClass.GameController, DeviceEnumerationFlags.AttachedOnly); var creator = new Func<DeviceInstance, JoystickGlobal>(d => { var controller = new Joystick(directInput, d.InstanceGuid); controller.SetCooperativeLevel(handle, CooperativeLevel.Exclusive | CooperativeLevel.Background); controller.Acquire(); var device = new Device(controller); devices.Add(device); return new JoystickGlobal(device); }); return new GlobalIndexer<JoystickGlobal, int, string>(index => creator(diDevices[index]), index => creator(diDevices.Single(di => di.InstanceName == index))); }