1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-01-06 09:55:35 +00:00
OpenMW/apps/openmw/mwinput/sensormanager.hpp
2023-07-08 11:28:56 +02:00

56 lines
1.0 KiB
C++

#ifndef MWINPUT_MWSENSORMANAGER_H
#define MWINPUT_MWSENSORMANAGER_H
#include <array>
#include <SDL_sensor.h>
#include <osg/Matrixf>
#include <osg/Vec3f>
#include <components/sdlutil/events.hpp>
#include <components/settings/settings.hpp>
namespace SDLUtil
{
class InputWrapper;
}
namespace MWWorld
{
class Player;
}
namespace MWInput
{
class SensorManager : public SDLUtil::SensorListener
{
public:
SensorManager();
virtual ~SensorManager();
void init();
void update(float dt);
void sensorUpdated(const SDL_SensorEvent& arg) override;
void displayOrientationChanged() override;
void processChangedSettings(const Settings::CategorySettingVector& changed);
bool isGyroAvailable() const;
std::array<float, 3> getGyroValues() const;
private:
void updateSensors();
void correctGyroscopeAxes();
osg::Matrixf mRotation;
osg::Vec3f mGyroValues;
float mGyroUpdateTimer;
SDL_Sensor* mGyroscope;
};
}
#endif