mirror of
https://github.com/love2d/love.git
synced 2026-08-16 08:11:02 +02:00
Add error handling in love.sensor.getData and only pass 3 values on love.sensorupdate.
This commit is contained in:
@@ -465,13 +465,11 @@ Message *Event::convert(const SDL_Event &e)
|
||||
const char *sensorType = "unknown";
|
||||
sensor::Sensor::getConstant(sensor::sdl::Sensor::convert(SDL_SensorGetType(sensor)), sensorType);
|
||||
vargs.emplace_back(sensorType, strlen(sensorType));
|
||||
// Both accelerometer and gyroscope only pass up to 3 values.
|
||||
// https://github.com/libsdl-org/SDL/blob/SDL2/include/SDL_sensor.h#L81-L127
|
||||
vargs.emplace_back(e.sensor.data[0]);
|
||||
vargs.emplace_back(e.sensor.data[1]);
|
||||
vargs.emplace_back(e.sensor.data[2]);
|
||||
vargs.emplace_back(e.sensor.data[3]);
|
||||
vargs.emplace_back(e.sensor.data[4]);
|
||||
// NOTE: LOVE event loop only pass up to 6 additional message for now
|
||||
vargs.emplace_back(e.sensor.data[5]);
|
||||
msg = new Message("sensorupdate", vargs);
|
||||
|
||||
break;
|
||||
|
||||
@@ -104,10 +104,16 @@ std::vector<float> Sensor::getData(SensorType type)
|
||||
throw love::Exception("\"%s\" sensor is not enabled", name);
|
||||
}
|
||||
|
||||
std::vector<float> values;
|
||||
values.resize(3);
|
||||
std::vector<float> values(3);
|
||||
|
||||
if (SDL_SensorGetData(sensors[type], values.data(), values.size()) != 0)
|
||||
{
|
||||
const char *name = nullptr;
|
||||
getConstant(type, name);
|
||||
|
||||
throw love::Exception("Could not get \"%s\" SDL sensor data (%s)", name, SDL_GetError());
|
||||
}
|
||||
|
||||
SDL_SensorGetData(sensors[type], values.data(), 3);
|
||||
return values;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user