diff options
author | Miikka Heikkinen <miikka.heikkinen@qt.io> | 2019-05-15 13:55:24 +0300 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@qt.io> | 2019-05-17 08:58:22 +0000 |
commit | dc093d844948715ab2d77eb5eb38dd81b2655521 (patch) | |
tree | 3f3184a3fe0631f8562df630e96618b824f4f0db /src/Runtime/Source/engine | |
parent | 09b3156579460b5d1b30ab6b17bd26b8a2f04c08 (diff) |
Add methods to create/delete multiple elements/materials at once
Also modified the notification signals to notify multiple
creations with a single signal.
Task-number: QT3DS-3376
Change-Id: I75bc867601d3f7943733b451ddfad18fab9383ea
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
Diffstat (limited to 'src/Runtime/Source/engine')
-rw-r--r-- | src/Runtime/Source/engine/Qt3DSRuntimeView.cpp | 38 | ||||
-rw-r--r-- | src/Runtime/Source/engine/Qt3DSRuntimeView.h | 15 |
2 files changed, 29 insertions, 24 deletions
diff --git a/src/Runtime/Source/engine/Qt3DSRuntimeView.cpp b/src/Runtime/Source/engine/Qt3DSRuntimeView.cpp index 3e95f46d..eb17a9b2 100644 --- a/src/Runtime/Source/engine/Qt3DSRuntimeView.cpp +++ b/src/Runtime/Source/engine/Qt3DSRuntimeView.cpp @@ -211,10 +211,11 @@ public: float dataInputMax(const QString &name) const override; float dataInputMin(const QString &name) const override; - void createElement(const QString &parentElementPath, const QString &slideName, - const QHash<QString, QVariant> &properties) override; - void deleteElement(const QString &elementPath) override; - void createMaterial(const QString &elementPath, const QString &materialDefinition) override; + void createElements(const QString &parentElementPath, const QString &slideName, + const QVector<QHash<QString, QVariant>> &properties) override; + void deleteElements(const QStringList &elementPaths) override; + void createMaterials(const QString &elementPath, + const QStringList &materialDefinitions) override; void SetAttribute(const char *elementPath, const char *attributeName, const char *value) override; bool GetAttribute(const char *elementPath, const char *attributeName, void *value) override; @@ -309,10 +310,10 @@ bool CRuntimeView::InitializeGraphics(const QSurfaceFormat &format, bool delayed QObject::connect(m_Presentation->signalProxy(), &QPresentationSignalProxy::SigPresentationReady, signalProxy(), &QRuntimeViewSignalProxy::SigPresentationReady); - QObject::connect(m_Presentation->signalProxy(), &QPresentationSignalProxy::SigElementCreated, - signalProxy(), &QRuntimeViewSignalProxy::SigElementCreated); - QObject::connect(m_Presentation->signalProxy(), &QPresentationSignalProxy::SigMaterialCreated, - signalProxy(), &QRuntimeViewSignalProxy::SigMaterialCreated); + QObject::connect(m_Presentation->signalProxy(), &QPresentationSignalProxy::SigElementsCreated, + signalProxy(), &QRuntimeViewSignalProxy::SigElementsCreated); + QObject::connect(m_Presentation->signalProxy(), &QPresentationSignalProxy::SigMaterialsCreated, + signalProxy(), &QRuntimeViewSignalProxy::SigMaterialsCreated); m_TimeProvider.Reset(); return true; @@ -619,34 +620,35 @@ float CRuntimeView::dataInputMin(const QString &name) const return 0; } -void CRuntimeView::createElement(const QString &parentElementPath, const QString &slideName, - const QHash<QString, QVariant> &properties) +void CRuntimeView::createElements(const QString &parentElementPath, const QString &slideName, + const QVector<QHash<QString, QVariant>> &properties) { if (m_Application) { Q3DStudio::CQmlEngine &theBridgeEngine = static_cast<Q3DStudio::CQmlEngine &>(m_RuntimeFactoryCore->GetScriptEngineQml()); - theBridgeEngine.createElement(parentElementPath, slideName, properties, - &m_RuntimeFactory->GetQt3DSRenderContext().GetRenderer()); + theBridgeEngine.createElements(parentElementPath, slideName, properties, + &m_RuntimeFactory->GetQt3DSRenderContext().GetRenderer()); } } -void CRuntimeView::deleteElement(const QString &elementPath) +void CRuntimeView::deleteElements(const QStringList &elementPaths) { if (m_Application) { Q3DStudio::CQmlEngine &theBridgeEngine = static_cast<Q3DStudio::CQmlEngine &>(m_RuntimeFactoryCore->GetScriptEngineQml()); - theBridgeEngine.deleteElement(elementPath, - &m_RuntimeFactory->GetQt3DSRenderContext().GetRenderer()); + theBridgeEngine.deleteElements(elementPaths, + &m_RuntimeFactory->GetQt3DSRenderContext().GetRenderer()); } } -void CRuntimeView::createMaterial(const QString &elementPath, const QString &materialDefinition) +void CRuntimeView::createMaterials(const QString &elementPath, + const QStringList &materialDefinitions) { if (m_Application) { Q3DStudio::CQmlEngine &theBridgeEngine = static_cast<Q3DStudio::CQmlEngine &>(m_RuntimeFactoryCore->GetScriptEngineQml()); - theBridgeEngine.createMaterial( - elementPath, materialDefinition, + theBridgeEngine.createMaterials( + elementPath, materialDefinitions, &m_RuntimeFactory->GetQt3DSRenderContext().GetCustomMaterialSystem(), &m_RuntimeFactory->GetQt3DSRenderContext().GetDynamicObjectSystem(), &m_RuntimeFactory->GetQt3DSRenderContext().GetRenderer()); diff --git a/src/Runtime/Source/engine/Qt3DSRuntimeView.h b/src/Runtime/Source/engine/Qt3DSRuntimeView.h index f728f220..38d30fa7 100644 --- a/src/Runtime/Source/engine/Qt3DSRuntimeView.h +++ b/src/Runtime/Source/engine/Qt3DSRuntimeView.h @@ -44,6 +44,8 @@ #include "Qt3DSPresentation.h" #include "Qt3DSRenderRuntimeBinding.h" #include <QtCore/qobject.h> +#include <QtCore/qvector.h> +#include <QtCore/qstringlist.h> #include <QtGui/qsurfaceformat.h> typedef void (*qml_Function)(void *inUserData); @@ -56,8 +58,8 @@ Q_SIGNALS: void SigSlideExited(const QString &elementPath, unsigned int index, const QString &name); void SigCustomSignal(const QString &elementPath, const QString &name); void SigPresentationReady(); - void SigElementCreated(const QString &elementName, const QString &error); - void SigMaterialCreated(const QString &name, const QString &error); + void SigElementsCreated(const QStringList &elementPaths, const QString &error); + void SigMaterialsCreated(const QStringList &materialNames, const QString &error); }; namespace qt3ds { @@ -192,10 +194,11 @@ public: virtual QList<QString> dataInputs() const = 0; virtual float dataInputMax(const QString &name) const = 0; virtual float dataInputMin(const QString &name) const = 0; - virtual void createElement(const QString &parentElementPath, const QString &slideName, - const QHash<QString, QVariant> &properties) = 0; - virtual void deleteElement(const QString &elementPath) = 0; - virtual void createMaterial(const QString &elementPath, const QString &materialDefinition) = 0; + virtual void createElements(const QString &parentElementPath, const QString &slideName, + const QVector<QHash<QString, QVariant>> &properties) = 0; + virtual void deleteElements(const QStringList &elementPaths) = 0; + virtual void createMaterials(const QString &elementPath, + const QStringList &materialDefinitions) = 0; virtual void SetAttribute(const char *elementPath, const char *attributeName, const char *value) = 0; virtual bool GetAttribute(const char *elementPath, const char *attributeName, void *value) = 0; |