Files
OpenVR-AdvancedSettings-frame/src/tabcontrollers/FixFloorTabController.h
T
ykeara 55b6d5de66 Added Knuckles FloorFix feature (prelim) (#100)
* added early knuckles support to floor fix.

* removed commented out code

* formatted
2019-03-15 14:52:48 -05:00

82 lines
2.1 KiB
C++

#pragma once
#include <QObject>
#include <openvr.h>
class QQuickWindow;
// application namespace
namespace advsettings
{
// forward declaration
class OverlayController;
class FixFloorTabController : public QObject
{
Q_OBJECT
Q_PROPERTY(
bool canUndo READ canUndo WRITE setCanUndo NOTIFY canUndoChanged )
private:
OverlayController* parent;
QQuickWindow* widget;
float controllerUpOffsetCorrection
= 0.062f; // Controller touchpad facing upwards
float controllerDownOffsetCorrection
= 0.006f; // Controller touchpad facing downwards
float knucklesUpOffsetCorrection = 0.0285f; // touchpad facing up PRELIM
float knucklesDownOffsetCorrection = 0.031f; // touchpad facing down PRELIM
int state
= 0; // 0 .. idle, 1 .. floor fix in progress, 2 .. recenter in progress
vr::TrackedDeviceIndex_t referenceController
= vr::k_unTrackedDeviceIndexInvalid;
unsigned measurementCount = 0;
double tempOffsetX = 0.0;
double tempOffsetY = 0.0;
double tempOffsetZ = 0.0;
double tempRoll = 0.0;
float floorOffsetX = 0.0f;
float floorOffsetY = 0.0f;
float floorOffsetZ = 0.0f;
QString statusMessage = "";
float statusMessageTimeout = 0.0f;
bool m_canUndo = false;
enum ControllerType : int
{
Controller_Unknown = 0,
Controller_Wand = 1,
Controller_Knuckles = 2,
};
int getControllerType( vr::TrackedDeviceIndex_t controllerRole );
public:
void initStage1();
void initStage2( OverlayController* parent, QQuickWindow* widget );
void eventLoopTick( vr::TrackedDevicePose_t* devicePoses );
Q_INVOKABLE QString currentStatusMessage();
Q_INVOKABLE float currentStatusMessageTimeout();
bool canUndo() const;
public slots:
void fixFloorClicked();
void recenterClicked();
void undoFixFloorClicked();
void setCanUndo( bool value, bool notify = true );
signals:
void statusMessageSignal();
void measureStartSignal();
void measureEndSignal();
void canUndoChanged( bool value );
};
} // namespace advsettings