Fixed stupid isAccelerometerActive condition

This commit is contained in:
Deve 2018-03-20 20:54:39 +01:00
parent 1dedd915ad
commit 0471202c9c
2 changed files with 50 additions and 22 deletions

View File

@ -48,6 +48,8 @@ CIrrDeviceAndroid::CIrrDeviceAndroid(const SIrrlichtCreationParameters& param)
: CIrrDeviceStub(param), : CIrrDeviceStub(param),
Accelerometer(0), Accelerometer(0),
Gyroscope(0), Gyroscope(0),
AccelerometerActive(false),
GyroscopeActive(false),
IsMousePressed(false), IsMousePressed(false),
GamepadAxisX(0), GamepadAxisX(0),
GamepadAxisY(0), GamepadAxisY(0),
@ -246,15 +248,15 @@ bool CIrrDeviceAndroid::run()
accEvent.AccelerometerEvent.X = event.acceleration.x; accEvent.AccelerometerEvent.X = event.acceleration.x;
accEvent.AccelerometerEvent.Y = event.acceleration.y; accEvent.AccelerometerEvent.Y = event.acceleration.y;
} }
accEvent.AccelerometerEvent.Z = event.acceleration.z;
if (accEvent.AccelerometerEvent.X < 0) if (accEvent.AccelerometerEvent.X < 0)
{ {
accEvent.AccelerometerEvent.X *= -1; accEvent.AccelerometerEvent.X *= -1;
accEvent.AccelerometerEvent.Y *= -1; accEvent.AccelerometerEvent.Y *= -1;
accEvent.AccelerometerEvent.Z *= -1;
} }
accEvent.AccelerometerEvent.Z = event.acceleration.z;
postEventFromUser(accEvent); postEventFromUser(accEvent);
break; break;
@ -1210,12 +1212,19 @@ bool CIrrDeviceAndroid::activateAccelerometer(float updateInterval)
DefaultOrientation = getDefaultOrientation(); DefaultOrientation = getDefaultOrientation();
} }
ASensorEventQueue_enableSensor(SensorEventQueue, Accelerometer); int err = ASensorEventQueue_enableSensor(SensorEventQueue, Accelerometer);
if (err == 0)
{
AccelerometerActive = true;
ASensorEventQueue_setEventRate(SensorEventQueue, Accelerometer, ASensorEventQueue_setEventRate(SensorEventQueue, Accelerometer,
(int32_t)(updateInterval*1000.f*1000.f)); // in microseconds (int32_t)(updateInterval*1000.f*1000.f)); // in microseconds
os::Printer::log("Activated accelerometer", ELL_DEBUG); os::Printer::log("Activated accelerometer", ELL_DEBUG);
return true; }
return AccelerometerActive;
} }
bool CIrrDeviceAndroid::deactivateAccelerometer() bool CIrrDeviceAndroid::deactivateAccelerometer()
@ -1223,15 +1232,20 @@ bool CIrrDeviceAndroid::deactivateAccelerometer()
if (!Accelerometer) if (!Accelerometer)
return false; return false;
ASensorEventQueue_disableSensor(SensorEventQueue, Accelerometer); int err = ASensorEventQueue_disableSensor(SensorEventQueue, Accelerometer);
Accelerometer = 0;
if (err == 0)
{
AccelerometerActive = false;
os::Printer::log("Deactivated accelerometer", ELL_DEBUG); os::Printer::log("Deactivated accelerometer", ELL_DEBUG);
return true; }
return !AccelerometerActive;
} }
bool CIrrDeviceAndroid::isAccelerometerActive() bool CIrrDeviceAndroid::isAccelerometerActive()
{ {
return (Accelerometer != NULL); return AccelerometerActive;
} }
bool CIrrDeviceAndroid::isAccelerometerAvailable() bool CIrrDeviceAndroid::isAccelerometerAvailable()
@ -1250,12 +1264,19 @@ bool CIrrDeviceAndroid::activateGyroscope(float updateInterval)
if (!isGyroscopeAvailable()) if (!isGyroscopeAvailable())
return false; return false;
ASensorEventQueue_enableSensor(SensorEventQueue, Gyroscope); int err = ASensorEventQueue_enableSensor(SensorEventQueue, Gyroscope);
if (err == 0)
{
GyroscopeActive = true;
ASensorEventQueue_setEventRate(SensorEventQueue, Gyroscope, ASensorEventQueue_setEventRate(SensorEventQueue, Gyroscope,
(int32_t)(updateInterval*1000.f*1000.f)); // in microseconds (int32_t)(updateInterval*1000.f*1000.f)); // in microseconds
os::Printer::log("Activated gyroscope", ELL_DEBUG); os::Printer::log("Activated gyroscope", ELL_DEBUG);
return true; }
return GyroscopeActive;
} }
bool CIrrDeviceAndroid::deactivateGyroscope() bool CIrrDeviceAndroid::deactivateGyroscope()
@ -1263,15 +1284,20 @@ bool CIrrDeviceAndroid::deactivateGyroscope()
if (!Gyroscope) if (!Gyroscope)
return false; return false;
ASensorEventQueue_disableSensor(SensorEventQueue, Gyroscope); int err = ASensorEventQueue_disableSensor(SensorEventQueue, Gyroscope);
Gyroscope = 0;
if (err == 0)
{
GyroscopeActive = false;
os::Printer::log("Deactivated gyroscope", ELL_DEBUG); os::Printer::log("Deactivated gyroscope", ELL_DEBUG);
return true; }
return !GyroscopeActive;
} }
bool CIrrDeviceAndroid::isGyroscopeActive() bool CIrrDeviceAndroid::isGyroscopeActive()
{ {
return (Gyroscope != NULL); return GyroscopeActive;
} }
bool CIrrDeviceAndroid::isGyroscopeAvailable() bool CIrrDeviceAndroid::isGyroscopeAvailable()

View File

@ -111,6 +111,8 @@ namespace irr
ASensorEventQueue* SensorEventQueue; ASensorEventQueue* SensorEventQueue;
const ASensor* Accelerometer; const ASensor* Accelerometer;
const ASensor* Gyroscope; const ASensor* Gyroscope;
bool AccelerometerActive;
bool GyroscopeActive;
static bool IsPaused; static bool IsPaused;
static bool IsFocused; static bool IsFocused;