summaryrefslogtreecommitdiffstats
path: root/src/Runtime/Source/engine
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@qt.io>2019-05-15 13:55:24 +0300
committerMiikka Heikkinen <miikka.heikkinen@qt.io>2019-05-17 08:58:22 +0000
commitdc093d844948715ab2d77eb5eb38dd81b2655521 (patch)
tree3f3184a3fe0631f8562df630e96618b824f4f0db /src/Runtime/Source/engine
parent09b3156579460b5d1b30ab6b17bd26b8a2f04c08 (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.cpp38
-rw-r--r--src/Runtime/Source/engine/Qt3DSRuntimeView.h15
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;