diff --git a/src/macro-external/openvr/macro-condition-openvr.cpp b/src/macro-external/openvr/macro-condition-openvr.cpp index 21a7e93e..59d0e654 100644 --- a/src/macro-external/openvr/macro-condition-openvr.cpp +++ b/src/macro-external/openvr/macro-condition-openvr.cpp @@ -13,10 +13,10 @@ bool MacroConditionOpenVR::_registered = MacroConditionFactory::Register( "AdvSceneSwitcher.condition.openvr"}); static vr::IVRSystem *openvrSystem; -std::mutex openvrMutex; -std::condition_variable openvrCV; +static std::mutex openvrMutex; +static std::condition_variable openvrCV; -void processOpenVREvents() +static void processOpenVREvents() { std::unique_lock lock(openvrMutex); vr::VREvent_t event; @@ -33,7 +33,7 @@ void processOpenVREvents() blog(LOG_INFO, "stop handling openVR events"); } -void initOpenVR(vr::EVRInitError &err) +static void initOpenVR(vr::EVRInitError &err) { openvrSystem = vr::VR_Init(&err, vr::VRApplication_Background); if (openvrSystem) { @@ -48,7 +48,7 @@ struct TrackingData { bool valid = false; }; -TrackingData getOpenVRPos(vr::EVRInitError &err) +static TrackingData getOpenVRPos(vr::EVRInitError &err) { TrackingData data; std::unique_lock lock(openvrMutex); @@ -87,41 +87,51 @@ bool MacroConditionOpenVR::CheckCondition() bool MacroConditionOpenVR::Save(obs_data_t *obj) const { MacroCondition::Save(obj); - obs_data_set_double(obj, "minX", _minX); - obs_data_set_double(obj, "minY", _minY); - obs_data_set_double(obj, "minZ", _minZ); - obs_data_set_double(obj, "maxX", _maxX); - obs_data_set_double(obj, "maxY", _maxY); - obs_data_set_double(obj, "maxZ", _maxZ); + _minX.Save(obj, "minX"); + _minY.Save(obj, "minY"); + _minZ.Save(obj, "minZ"); + _maxX.Save(obj, "maxX"); + _maxY.Save(obj, "maxY"); + _maxZ.Save(obj, "maxZ"); + obs_data_set_int(obj, "version", 1); return true; } bool MacroConditionOpenVR::Load(obs_data_t *obj) { MacroCondition::Load(obj); - _minX = obs_data_get_double(obj, "minX"); - _minY = obs_data_get_double(obj, "minY"); - _minZ = obs_data_get_double(obj, "minZ"); - _maxX = obs_data_get_double(obj, "maxX"); - _maxY = obs_data_get_double(obj, "maxY"); - _maxZ = obs_data_get_double(obj, "maxZ"); + if (!obs_data_has_user_value(obj, "version")) { + _minX = obs_data_get_double(obj, "minX"); + _minY = obs_data_get_double(obj, "minY"); + _minZ = obs_data_get_double(obj, "minZ"); + _maxX = obs_data_get_double(obj, "maxX"); + _maxY = obs_data_get_double(obj, "maxY"); + _maxZ = obs_data_get_double(obj, "maxZ"); + } else { + _minX.Load(obj, "minX"); + _minY.Load(obj, "minY"); + _minZ.Load(obj, "minZ"); + _maxX.Load(obj, "maxX"); + _maxY.Load(obj, "maxY"); + _maxZ.Load(obj, "maxZ"); + } return true; } MacroConditionOpenVREdit::MacroConditionOpenVREdit( QWidget *parent, std::shared_ptr entryData) - : QWidget(parent) + : QWidget(parent), + _minX(new VariableDoubleSpinBox()), + _minY(new VariableDoubleSpinBox()), + _minZ(new VariableDoubleSpinBox()), + _maxX(new VariableDoubleSpinBox()), + _maxY(new VariableDoubleSpinBox()), + _maxZ(new VariableDoubleSpinBox()), + _xPos(new QLabel("-")), + _yPos(new QLabel("-")), + _zPos(new QLabel("-")), + _errLabel(new QLabel()) { - _minX = new QDoubleSpinBox(); - _minY = new QDoubleSpinBox(); - _minZ = new QDoubleSpinBox(); - _maxX = new QDoubleSpinBox(); - _maxY = new QDoubleSpinBox(); - _maxZ = new QDoubleSpinBox(); - _xPos = new QLabel("-"); - _yPos = new QLabel("-"); - _zPos = new QLabel("-"); - _errLabel = new QLabel(); _errLabel->setVisible(false); _minX->setPrefix("Min X: "); @@ -145,18 +155,30 @@ MacroConditionOpenVREdit::MacroConditionOpenVREdit( _maxY->setMaximum(99); _maxZ->setMaximum(99); - QWidget::connect(_minX, SIGNAL(valueChanged(double)), this, - SLOT(MinXChanged(double))); - QWidget::connect(_minY, SIGNAL(valueChanged(double)), this, - SLOT(MinYChanged(double))); - QWidget::connect(_minZ, SIGNAL(valueChanged(double)), this, - SLOT(MinZChanged(double))); - QWidget::connect(_maxX, SIGNAL(valueChanged(double)), this, - SLOT(MaxXChanged(double))); - QWidget::connect(_maxY, SIGNAL(valueChanged(double)), this, - SLOT(MaxYChanged(double))); - QWidget::connect(_maxZ, SIGNAL(valueChanged(double)), this, - SLOT(MaxZChanged(double))); + QWidget::connect( + _minX, + SIGNAL(NumberVariableChanged(const NumberVariable &)), + this, SLOT(MinXChanged(const NumberVariable &))); + QWidget::connect( + _minY, + SIGNAL(NumberVariableChanged(const NumberVariable &)), + this, SLOT(MinYChanged(const NumberVariable &))); + QWidget::connect( + _minZ, + SIGNAL(NumberVariableChanged(const NumberVariable &)), + this, SLOT(MinZChanged(const NumberVariable &))); + QWidget::connect( + _maxX, + SIGNAL(NumberVariableChanged(const NumberVariable &)), + this, SLOT(MaxXChanged(const NumberVariable &))); + QWidget::connect( + _maxY, + SIGNAL(NumberVariableChanged(const NumberVariable &)), + this, SLOT(MaxYChanged(const NumberVariable &))); + QWidget::connect( + _maxZ, + SIGNAL(NumberVariableChanged(const NumberVariable &)), + this, SLOT(MaxZChanged(const NumberVariable &))); QGridLayout *controlsLayout = new QGridLayout; controlsLayout->addWidget(_minX, 0, 0); @@ -206,7 +228,7 @@ MacroConditionOpenVREdit::MacroConditionOpenVREdit( _loading = false; } -void MacroConditionOpenVREdit::MinXChanged(double pos) +void MacroConditionOpenVREdit::MinXChanged(const NumberVariable &pos) { if (_loading || !_entryData) { return; @@ -216,7 +238,7 @@ void MacroConditionOpenVREdit::MinXChanged(double pos) _entryData->_minX = pos; } -void MacroConditionOpenVREdit::MinYChanged(double pos) +void MacroConditionOpenVREdit::MinYChanged(const NumberVariable &pos) { if (_loading || !_entryData) { return; @@ -226,7 +248,7 @@ void MacroConditionOpenVREdit::MinYChanged(double pos) _entryData->_minY = pos; } -void MacroConditionOpenVREdit::MinZChanged(double pos) +void MacroConditionOpenVREdit::MinZChanged(const NumberVariable &pos) { if (_loading || !_entryData) { return; @@ -236,7 +258,7 @@ void MacroConditionOpenVREdit::MinZChanged(double pos) _entryData->_minZ = pos; } -void MacroConditionOpenVREdit::MaxXChanged(double pos) +void MacroConditionOpenVREdit::MaxXChanged(const NumberVariable &pos) { if (_loading || !_entryData) { return; @@ -246,7 +268,7 @@ void MacroConditionOpenVREdit::MaxXChanged(double pos) _entryData->_maxX = pos; } -void MacroConditionOpenVREdit::MaxYChanged(double pos) +void MacroConditionOpenVREdit::MaxYChanged(const NumberVariable &pos) { if (_loading || !_entryData) { return; @@ -256,7 +278,7 @@ void MacroConditionOpenVREdit::MaxYChanged(double pos) _entryData->_maxY = pos; } -void MacroConditionOpenVREdit::MaxZChanged(double pos) +void MacroConditionOpenVREdit::MaxZChanged(const NumberVariable &pos) { if (_loading || !_entryData) { return; @@ -293,8 +315,10 @@ void MacroConditionOpenVREdit::UpdateEntryData() return; } - _minX->setValue(_entryData->_minX); - _minY->setValue(_entryData->_minY); - _maxX->setValue(_entryData->_maxX); - _maxY->setValue(_entryData->_maxY); + _minX->SetValue(_entryData->_minX); + _minY->SetValue(_entryData->_minY); + _minZ->SetValue(_entryData->_minZ); + _maxX->SetValue(_entryData->_maxX); + _maxY->SetValue(_entryData->_maxY); + _maxZ->SetValue(_entryData->_maxZ); } diff --git a/src/macro-external/openvr/macro-condition-openvr.hpp b/src/macro-external/openvr/macro-condition-openvr.hpp index 46ec9b68..60a65eef 100644 --- a/src/macro-external/openvr/macro-condition-openvr.hpp +++ b/src/macro-external/openvr/macro-condition-openvr.hpp @@ -1,7 +1,7 @@ #pragma once #include +#include -#include #include #include #include @@ -18,7 +18,8 @@ public: return std::make_shared(m); } - double _minX = 0, _minY = 0, _minZ = 0, _maxX = 0, _maxY = 0, _maxZ = 0; + NumberVariable _minX = 0.0, _minY = 0.0, _minZ = 0.0, + _maxX = 0.0, _maxY = 0.0, _maxZ = 0.0; private: static bool _registered; @@ -42,21 +43,21 @@ public: } private slots: - void MinXChanged(double pos); - void MinYChanged(double pos); - void MinZChanged(double pos); - void MaxXChanged(double pos); - void MaxYChanged(double pos); - void MaxZChanged(double pos); + void MinXChanged(const NumberVariable &pos); + void MinYChanged(const NumberVariable &pos); + void MinZChanged(const NumberVariable &pos); + void MaxXChanged(const NumberVariable &pos); + void MaxYChanged(const NumberVariable &pos); + void MaxZChanged(const NumberVariable &pos); void UpdateOpenVRPos(); protected: - QDoubleSpinBox *_minX; - QDoubleSpinBox *_minY; - QDoubleSpinBox *_minZ; - QDoubleSpinBox *_maxX; - QDoubleSpinBox *_maxY; - QDoubleSpinBox *_maxZ; + VariableDoubleSpinBox *_minX; + VariableDoubleSpinBox *_minY; + VariableDoubleSpinBox *_minZ; + VariableDoubleSpinBox *_maxX; + VariableDoubleSpinBox *_maxY; + VariableDoubleSpinBox *_maxZ; QLabel *_xPos; QLabel *_yPos; QLabel *_zPos;