86 lines
2.5 KiB
C++
86 lines
2.5 KiB
C++
|
|
#pragma once
|
|
|
|
#include <QObject>
|
|
#include <openvr.h>
|
|
|
|
class QQuickWindow;
|
|
// application namespace
|
|
namespace advsettings
|
|
{
|
|
// forward declaration
|
|
class OverlayController;
|
|
|
|
class StatisticsTabController : public QObject
|
|
{
|
|
Q_OBJECT
|
|
Q_PROPERTY( float hmdDistanceMoved READ hmdDistanceMoved )
|
|
Q_PROPERTY( float hmdRotations READ hmdRotations )
|
|
Q_PROPERTY( float leftControllerMaxSpeed READ leftControllerMaxSpeed )
|
|
Q_PROPERTY( float rightControllerMaxSpeed READ rightControllerMaxSpeed )
|
|
Q_PROPERTY( int presentedFrames READ presentedFrames )
|
|
Q_PROPERTY( int droppedFrames READ droppedFrames )
|
|
Q_PROPERTY( int reprojectedFrames READ reprojectedFrames )
|
|
Q_PROPERTY( int timedOut READ timedOut )
|
|
Q_PROPERTY( float totalReprojectedRatio READ totalReprojectedRatio )
|
|
|
|
private:
|
|
OverlayController* parent;
|
|
QQuickWindow* widget;
|
|
|
|
bool rotationResetFlag = false;
|
|
float rotationOffset = 0.0f;
|
|
int rotationDir = 0;
|
|
int64_t rotationCounter = 0;
|
|
float lastYaw = -1.0f;
|
|
unsigned lastPosTimer = 0;
|
|
float lastHmdPos[3];
|
|
bool lastHmdPosValid = false;
|
|
|
|
float m_hmdRotation = 0.0f;
|
|
double m_hmdDistanceMoved = 0.0;
|
|
|
|
float m_leftControllerMaxSpeed = 0.0f;
|
|
float m_rightControllerMaxSpeed = 0.0f;
|
|
|
|
vr::Compositor_CumulativeStats m_cumStats;
|
|
unsigned m_presentedFramesOffset = 0;
|
|
unsigned m_droppedFramesOffset = 0;
|
|
unsigned m_reprojectedFramesOffset = 0;
|
|
unsigned m_timedOutOffset = 0;
|
|
unsigned m_totalRatioPresentedOffset = 0;
|
|
unsigned m_totalRatioReprojectedOffset = 0;
|
|
|
|
public:
|
|
void initStage1();
|
|
void initStage2( OverlayController* parent, QQuickWindow* widget );
|
|
|
|
void eventLoopTick( vr::TrackedDevicePose_t* devicePoses,
|
|
float leftSpeed,
|
|
float rightSpeed );
|
|
|
|
float hmdDistanceMoved() const;
|
|
float hmdRotations() const;
|
|
float rightControllerMaxSpeed() const;
|
|
float leftControllerMaxSpeed() const;
|
|
|
|
unsigned presentedFrames() const;
|
|
unsigned droppedFrames() const;
|
|
unsigned reprojectedFrames() const;
|
|
unsigned timedOut() const;
|
|
float totalReprojectedRatio() const;
|
|
|
|
public slots:
|
|
void statsDistanceResetClicked();
|
|
void statsRotationResetClicked();
|
|
void statsLeftControllerSpeedResetClicked();
|
|
void statsRightControllerSpeedResetClicked();
|
|
void presentedFramesResetClicked();
|
|
void droppedFramesResetClicked();
|
|
void reprojectedFramesResetClicked();
|
|
void timedOutResetClicked();
|
|
void totalRatioResetClicked();
|
|
};
|
|
|
|
} // namespace advsettings
|