mirror of
https://github.com/WarmUpTill/SceneSwitcher.git
synced 2026-03-22 09:54:54 -05:00
Add variable support to OpenVR condition
This commit is contained in:
parent
dff599df4c
commit
b607940c8c
|
|
@ -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<std::mutex> 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<std::mutex> 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<MacroConditionOpenVR> 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<double> &)),
|
||||
this, SLOT(MinXChanged(const NumberVariable<double> &)));
|
||||
QWidget::connect(
|
||||
_minY,
|
||||
SIGNAL(NumberVariableChanged(const NumberVariable<double> &)),
|
||||
this, SLOT(MinYChanged(const NumberVariable<double> &)));
|
||||
QWidget::connect(
|
||||
_minZ,
|
||||
SIGNAL(NumberVariableChanged(const NumberVariable<double> &)),
|
||||
this, SLOT(MinZChanged(const NumberVariable<double> &)));
|
||||
QWidget::connect(
|
||||
_maxX,
|
||||
SIGNAL(NumberVariableChanged(const NumberVariable<double> &)),
|
||||
this, SLOT(MaxXChanged(const NumberVariable<double> &)));
|
||||
QWidget::connect(
|
||||
_maxY,
|
||||
SIGNAL(NumberVariableChanged(const NumberVariable<double> &)),
|
||||
this, SLOT(MaxYChanged(const NumberVariable<double> &)));
|
||||
QWidget::connect(
|
||||
_maxZ,
|
||||
SIGNAL(NumberVariableChanged(const NumberVariable<double> &)),
|
||||
this, SLOT(MaxZChanged(const NumberVariable<double> &)));
|
||||
|
||||
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<double> &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<double> &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<double> &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<double> &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<double> &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<double> &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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
#pragma once
|
||||
#include <macro.hpp>
|
||||
#include <variable-spinbox.hpp>
|
||||
|
||||
#include <QDoubleSpinBox>
|
||||
#include <QComboBox>
|
||||
#include <QPushButton>
|
||||
#include <QTimer>
|
||||
|
|
@ -18,7 +18,8 @@ public:
|
|||
return std::make_shared<MacroConditionOpenVR>(m);
|
||||
}
|
||||
|
||||
double _minX = 0, _minY = 0, _minZ = 0, _maxX = 0, _maxY = 0, _maxZ = 0;
|
||||
NumberVariable<double> _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<double> &pos);
|
||||
void MinYChanged(const NumberVariable<double> &pos);
|
||||
void MinZChanged(const NumberVariable<double> &pos);
|
||||
void MaxXChanged(const NumberVariable<double> &pos);
|
||||
void MaxYChanged(const NumberVariable<double> &pos);
|
||||
void MaxZChanged(const NumberVariable<double> &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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user