Add love.sensorupdate

This commit is contained in:
Miku AuahDark
2022-12-05 15:14:50 +08:00
parent 1fa9159f04
commit 0f13628f8e
3 changed files with 38 additions and 2 deletions
+33
View File
@@ -32,6 +32,7 @@
#include "audio/Audio.h"
#include "common/config.h"
#include "timer/Timer.h"
#include "sensor/sdl/Sensor.h"
#include <cmath>
@@ -178,6 +179,7 @@ Message *Event::convert(const SDL_Event &e)
vargs.reserve(4);
love::filesystem::Filesystem *filesystem = nullptr;
love::sensor::Sensor *sensorInstance = nullptr;
love::keyboard::Keyboard::Key key = love::keyboard::Keyboard::KEY_UNKNOWN;
love::keyboard::Keyboard::Scancode scancode = love::keyboard::Keyboard::SCANCODE_UNKNOWN;
@@ -446,6 +448,37 @@ Message *Event::convert(const SDL_Event &e)
msg = new Message("localechanged");
break;
#endif
case SDL_SENSORUPDATE:
sensorInstance = Module::getInstance<sensor::Sensor>(M_SENSOR);
if (sensorInstance)
{
std::vector<void*> sensors = sensorInstance->getHandles();
for (void *s: sensors)
{
SDL_Sensor *sensor = (SDL_Sensor *) s;
SDL_SensorID id = SDL_SensorGetInstanceID(sensor);
if (e.sensor.which == id)
{
// Found sensor
const char *sensorType = "unknown";
sensor::Sensor::getConstant(sensor::sdl::Sensor::convert(SDL_SensorGetType(sensor)), sensorType);
vargs.emplace_back(sensorType, strlen(sensorType));
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;
}
}
}
break;
default:
break;
}