mirror of
https://github.com/love2d/love.git
synced 2026-08-20 04:30:09 +02:00
Add love.sensorupdate
This commit is contained in:
@@ -32,6 +32,7 @@
|
|||||||
#include "audio/Audio.h"
|
#include "audio/Audio.h"
|
||||||
#include "common/config.h"
|
#include "common/config.h"
|
||||||
#include "timer/Timer.h"
|
#include "timer/Timer.h"
|
||||||
|
#include "sensor/sdl/Sensor.h"
|
||||||
|
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
|
||||||
@@ -178,6 +179,7 @@ Message *Event::convert(const SDL_Event &e)
|
|||||||
vargs.reserve(4);
|
vargs.reserve(4);
|
||||||
|
|
||||||
love::filesystem::Filesystem *filesystem = nullptr;
|
love::filesystem::Filesystem *filesystem = nullptr;
|
||||||
|
love::sensor::Sensor *sensorInstance = nullptr;
|
||||||
|
|
||||||
love::keyboard::Keyboard::Key key = love::keyboard::Keyboard::KEY_UNKNOWN;
|
love::keyboard::Keyboard::Key key = love::keyboard::Keyboard::KEY_UNKNOWN;
|
||||||
love::keyboard::Keyboard::Scancode scancode = love::keyboard::Keyboard::SCANCODE_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");
|
msg = new Message("localechanged");
|
||||||
break;
|
break;
|
||||||
#endif
|
#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:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -134,6 +134,9 @@ function love.createhandlers()
|
|||||||
love.audio.setPlaybackDevice()
|
love.audio.setPlaybackDevice()
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
sensorupdate = function (sensorType, ...)
|
||||||
|
if love.sensorupdate then return love.sensorupdate(sensorType, ...) end
|
||||||
|
end
|
||||||
}, {
|
}, {
|
||||||
__index = function(self, name)
|
__index = function(self, name)
|
||||||
error("Unknown event: " .. name)
|
error("Unknown event: " .. name)
|
||||||
|
|||||||
@@ -52,11 +52,11 @@ public:
|
|||||||
std::vector<float> getData(SensorType type) override;
|
std::vector<float> getData(SensorType type) override;
|
||||||
std::vector<void*> getHandles() override;
|
std::vector<void*> getHandles() override;
|
||||||
|
|
||||||
|
static SensorType convert(SDL_SensorType type);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::map<SensorType, SDL_Sensor*> sensors;
|
std::map<SensorType, SDL_Sensor*> sensors;
|
||||||
|
|
||||||
static SensorType convert(SDL_SensorType type);
|
|
||||||
|
|
||||||
}; // Sensor
|
}; // Sensor
|
||||||
|
|
||||||
} // sdl
|
} // sdl
|
||||||
|
|||||||
Reference in New Issue
Block a user