public BindingSource Listen(BindingListenOptions listenOptions, InputDevice device)
        {
            if (!listenOptions.IncludeUnknownControllers || device.IsKnown)
            {
                return(null);
            }
            if (detectPhase == DetectPhase.WaitForControlRelease && (bool)detectFound && !IsPressed(detectFound, device))
            {
                UnknownDeviceBindingSource result = new UnknownDeviceBindingSource(detectFound);
                Reset();
                return(result);
            }
            UnknownDeviceControl control = ListenForControl(listenOptions, device);

            if ((bool)control)
            {
                if (detectPhase == DetectPhase.WaitForControlPress)
                {
                    detectFound = control;
                    detectPhase = DetectPhase.WaitForControlRelease;
                }
            }
            else if (detectPhase == DetectPhase.WaitForInitialRelease)
            {
                detectPhase = DetectPhase.WaitForControlPress;
            }
            return(null);
        }
 private UnknownDeviceControl ListenForControl(BindingListenOptions listenOptions, InputDevice device)
 {
     if (device.IsUnknown)
     {
         UnknownDeviceControl firstPressedButton = device.GetFirstPressedButton();
         if ((bool)firstPressedButton)
         {
             return(firstPressedButton);
         }
         UnknownDeviceControl firstPressedAnalog = device.GetFirstPressedAnalog();
         if ((bool)firstPressedAnalog)
         {
             return(firstPressedAnalog);
         }
     }
     return(UnknownDeviceControl.None);
 }
Пример #3
0
        public BindingSource Listen(BindingListenOptions listenOptions, InputDevice device)
        {
            if (!listenOptions.IncludeUnknownControllers || device.IsKnown)
            {
                return(null);
            }

            if (detectPhase == DetectPhase.WaitForControlRelease && detectFound)
            {
                if (!IsPressed(detectFound, device))
                {
                    var bindingSource = new UnknownDeviceBindingSource(detectFound);
                    Reset();
                    return(bindingSource);
                }
            }

            var control = ListenForControl(listenOptions, device);

            if (control)
            {
                if (detectPhase == DetectPhase.WaitForControlPress)
                {
                    detectFound = control;
                    detectPhase = DetectPhase.WaitForControlRelease;
                }
            }
            else
            {
                if (detectPhase == DetectPhase.WaitForInitialRelease)
                {
                    detectPhase = DetectPhase.WaitForControlPress;
                }
            }

            return(null);
        }
		public BindingSource Listen( BindingListenOptions listenOptions, InputDevice device )
		{
			if (!listenOptions.IncludeUnknownControllers || device.IsKnown)
			{
				return null;
			}

			if (detectPhase == DetectPhase.WaitForControlRelease && detectFound)
			{
				if (!IsPressed( detectFound, device ))
				{
					var bindingSource = new UnknownDeviceBindingSource( detectFound );
					Reset();
					return bindingSource;
				}
			}

			var control = ListenForControl( listenOptions, device );
			if (control)
			{
				if (detectPhase == DetectPhase.WaitForControlPress)
				{
					detectFound = control;
					detectPhase = DetectPhase.WaitForControlRelease;
				}
			}
			else
			{
				if (detectPhase == DetectPhase.WaitForInitialRelease)
				{
					detectPhase = DetectPhase.WaitForControlPress;
				}
			}

			return null;
		}
Пример #5
0
        bool IsPressed(UnknownDeviceControl control, InputDevice device)
        {
            var value = control.GetValue(device);

            return(Utility.AbsoluteIsOverThreshold(value, 0.5f));
        }
Пример #6
0
 public void Reset()
 {
     detectFound = UnknownDeviceControl.None;
     detectPhase = DetectPhase.WaitForInitialRelease;
     TakeSnapshotOnUnknownDevices();
 }
		public UnknownDeviceBindingSource( UnknownDeviceControl control )
		{
			Control = control;
		}
		internal override void Load( BinaryReader reader )
		{
			// Have to do this because it's a struct property? Weird.
			var temp = new UnknownDeviceControl();
			temp.Load( reader );
			Control = temp;
		}
		internal UnknownDeviceBindingSource()
		{
			Control = UnknownDeviceControl.None;
		}
		bool IsPressed( UnknownDeviceControl control, InputDevice device )
		{
			var value = control.GetValue( device );
			return Utility.AbsoluteIsOverThreshold( value, 0.5f );
		}
		public void Reset()
		{
			detectFound = UnknownDeviceControl.None;
			detectPhase = DetectPhase.WaitForInitialRelease;
			TakeSnapshotOnUnknownDevices();
		}