diff options
-rw-r--r-- | src/Runtime/api/studio3d/q3dsdatainput.cpp | 20 | ||||
-rw-r--r-- | src/Runtime/api/studio3d/q3dsdatainput.h | 9 | ||||
-rw-r--r-- | src/Runtime/api/studio3d/q3dsdatainput_p.h | 1 | ||||
-rw-r--r-- | src/Runtime/api/studio3d/q3dspresentation.cpp | 9 | ||||
-rw-r--r-- | src/Runtime/api/studio3d/q3dspresentation.h | 1 | ||||
-rw-r--r-- | src/Runtime/api/studio3dqml/q3dsrenderer.cpp | 14 |
6 files changed, 20 insertions, 34 deletions
diff --git a/src/Runtime/api/studio3d/q3dsdatainput.cpp b/src/Runtime/api/studio3d/q3dsdatainput.cpp index b084ee4d..d2d82008 100644 --- a/src/Runtime/api/studio3d/q3dsdatainput.cpp +++ b/src/Runtime/api/studio3d/q3dsdatainput.cpp @@ -118,26 +118,6 @@ bool Q3DSDataInput::isValid() const return false; } -void Q3DSDataInput::setMin(float min) -{ - if (!d_ptr->m_presentation) - return; - - d_ptr->m_presentation->setDataInputValue(d_ptr->m_name, min, ValueRole::Min); - d_ptr->m_min = min; - emit minChanged(); -} - -void Q3DSDataInput::setMax(float max) -{ - if (!d_ptr->m_presentation) - return; - - d_ptr->m_presentation->setDataInputValue(d_ptr->m_name, max, ValueRole::Max); - d_ptr->m_max = max; - emit maxChanged(); -} - void Q3DSDataInput::setValue(const QVariant &value) { // Since properties controlled by data inputs can change without the current value being diff --git a/src/Runtime/api/studio3d/q3dsdatainput.h b/src/Runtime/api/studio3d/q3dsdatainput.h index d57b5f18..4504e5d2 100644 --- a/src/Runtime/api/studio3d/q3dsdatainput.h +++ b/src/Runtime/api/studio3d/q3dsdatainput.h @@ -46,8 +46,8 @@ class Q_STUDIO3D_EXPORT Q3DSDataInput : public QObject Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) Q_PROPERTY(QVariant value READ value WRITE setValue NOTIFY valueChanged) - Q_PROPERTY(float max READ max WRITE setMax NOTIFY maxChanged) - Q_PROPERTY(float min READ min WRITE setMin NOTIFY minChanged) + Q_PROPERTY(float max READ max CONSTANT) + Q_PROPERTY(float min READ min CONSTANT) public: explicit Q3DSDataInput(QObject *parent = nullptr); explicit Q3DSDataInput(const QString &name, QObject *parent = nullptr); @@ -71,14 +71,10 @@ public: public Q_SLOTS: void setName(const QString &name); void setValue(const QVariant &value); - void setMin(float min); - void setMax(float max); Q_SIGNALS: void nameChanged(); void valueChanged(); - void minChanged(); - void maxChanged(); protected: explicit Q3DSDataInput(Q3DSDataInputPrivate *d, Q3DSPresentation *presentation, @@ -88,6 +84,7 @@ protected: private: Q_DISABLE_COPY(Q3DSDataInput) friend class Q3DSPresentationPrivate; + friend class Q3DSRenderer; }; QT_END_NAMESPACE diff --git a/src/Runtime/api/studio3d/q3dsdatainput_p.h b/src/Runtime/api/studio3d/q3dsdatainput_p.h index 8f5be06f..6107add9 100644 --- a/src/Runtime/api/studio3d/q3dsdatainput_p.h +++ b/src/Runtime/api/studio3d/q3dsdatainput_p.h @@ -75,6 +75,7 @@ protected: float m_min = 0; friend class Q3DSPresentationPrivate; + friend class Q3DSRenderer; }; QT_END_NAMESPACE diff --git a/src/Runtime/api/studio3d/q3dspresentation.cpp b/src/Runtime/api/studio3d/q3dspresentation.cpp index 8370dbb6..5b55608d 100644 --- a/src/Runtime/api/studio3d/q3dspresentation.cpp +++ b/src/Runtime/api/studio3d/q3dspresentation.cpp @@ -672,14 +672,17 @@ void Q3DSPresentationPrivate::requestResponseHandler(CommandType commandType, vo // Check and append to QML-side list if the (UIA) presentation has additional datainputs // that are not explicitly defined in QML code. auto receivedDI = response->at(i).value<Q3DSDataInput *>(); + // For QML behind async command queue, we cache min/max values in addition + // to name, in order to be able to return values initially set in UIA file (in QML + // getters). if (!m_dataInputs.contains(receivedDI->name())) { - // For QML behind async command queue, we cache min/max values in addition - // to name, in order to be able to return values initially set in UIA file (in QML - // setter/getters). auto newDI = new Q3DSDataInput(receivedDI->name(), nullptr); newDI->d_ptr->m_min = receivedDI->d_ptr->m_min; newDI->d_ptr->m_max = receivedDI->d_ptr->m_max; registerDataInput(newDI); + } else { + m_dataInputs[receivedDI->name()]->d_ptr->m_min = receivedDI->d_ptr->m_min; + m_dataInputs[receivedDI->name()]->d_ptr->m_max = receivedDI->d_ptr->m_max; } } delete response; diff --git a/src/Runtime/api/studio3d/q3dspresentation.h b/src/Runtime/api/studio3d/q3dspresentation.h index 6a2a8926..bcdd9c53 100644 --- a/src/Runtime/api/studio3d/q3dspresentation.h +++ b/src/Runtime/api/studio3d/q3dspresentation.h @@ -130,7 +130,6 @@ Q_SIGNALS: void slideExited(const QString &elementPath, unsigned int index, const QString &name); // Indicates that data input and output definitions in the Studio project have been parsed // and datainputs/dataoutputs are available through dataInputs() / getDataInputs(). - // and datainputs are available through dataInputs() / getDataInputs(). void dataInputsReady(); void dataOutputsReady(); void customSignalEmitted(const QString &elementPath, const QString &name); diff --git a/src/Runtime/api/studio3dqml/q3dsrenderer.cpp b/src/Runtime/api/studio3dqml/q3dsrenderer.cpp index a3d7b2d8..bbfee502 100644 --- a/src/Runtime/api/studio3dqml/q3dsrenderer.cpp +++ b/src/Runtime/api/studio3dqml/q3dsrenderer.cpp @@ -37,6 +37,7 @@ #include <QtStudio3D/private/q3dsviewersettings_p.h> #include <QtStudio3D/private/q3dspresentation_p.h> #include <QtStudio3D/private/studioutils_p.h> +#include <QtStudio3D/private/q3dsdatainput_p.h> #include <QtCore/qdebug.h> #include <QtGui/qwindow.h> @@ -413,11 +414,16 @@ void Q3DSRenderer::processCommands() } case CommandType_RequestDataInputs: { QVariantList *requestData = new QVariantList(); - if (m_presentation) { - const auto diList = m_presentation->dataInputs(); + if (m_runtime) { + const auto diList = m_runtime->dataInputs(); - for (const auto &it : diList) - requestData->append(QVariant::fromValue(it)); + for (const auto &it : diList) { + Q3DSDataInput *newIt = new Q3DSDataInput(it, nullptr); + newIt->d_ptr->m_max = m_runtime->dataInputMax(it); + newIt->d_ptr->m_min = m_runtime->dataInputMin(it); + + requestData->append(QVariant::fromValue(newIt)); + } } Q_EMIT requestResponse(cmd.m_elementPath, cmd.m_commandType, requestData); |