#region Joystick
/// <summary>
/// Obtiene el estado del joystick
/// </summary>
/// <param name="estEntr">Estructura donde se retornara la entrada del joystick</param>
private void GetEntradaJoyStick(ref StEstadoEntrada estEntr)
{
//Si se detecto joystick y ademas no esta bloqueado
if(!bloqueoEntrada.joystick && entradaActiva.joystick)
{
#region obtener el estado del dispositivo
try
{
/* Para algunos dispositivos es necesario efectuar polling con el fin
* de que se refresque el estado actual de los datos recibidos
* desde el dispositivo, en caso de que el dispositivo no lo necesite
* este llamado no causa ningun efecto*/
disJoystick.Poll();
}
catch(NullReferenceException){}
catch(InputException ex)
{
//Se intenta recapturar el dispositivo
if (ex is NotAcquiredException)
{
try
{
if ( disJoystick != null )
{
disJoystick.SetCooperativeLevel( propietario, CooperativeLevelFlags.Exclusive | CooperativeLevelFlags.Foreground);
disJoystick.SetDataFormat(DeviceDataFormat.Joystick);
}
disJoystick.Acquire();
}
catch(Exception ex2)
{
if ( ex2 is OtherApplicationHasPriorityException )
{
Console.WriteLine("Error desconocido, no se ha reconocido el JoyStick"+ex2.ToString());
}
}
}
else
{
if ( disJoystick != null )
{
try
{
disJoystick.SetCooperativeLevel( propietario, CooperativeLevelFlags.Exclusive | CooperativeLevelFlags.Foreground);
disJoystick.SetDataFormat(DeviceDataFormat.Joystick);
disJoystick.Acquire();
}
catch(ObjectDisposedException)
{
entradaActiva.joystick = false;
}
catch{}
}
}
}
#endregion