mirror of
https://github.com/love2d/love.git
synced 2026-08-18 11:44:15 +02:00
Add love.sensorupdate
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user