#ifndef MWINPUT_MWSENSORMANAGER_H #define MWINPUT_MWSENSORMANAGER_H #include #include #include #include #include #include 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 getGyroValues() const; private: void updateSensors(); void correctGyroscopeAxes(); osg::Matrixf mRotation; osg::Vec3f mGyroValues; float mGyroUpdateTimer; SDL_Sensor* mGyroscope; }; } #endif