Files
OpenVR-AdvancedSettings-frame/src/tabcontrollers/FixFloorTabController.h
T

71 lines
1.7 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
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;
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