summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMahmoud Badri <mahmoud.badri@qt.io>2019-05-13 13:48:04 +0300
committerMahmoud Badri <mahmoud.badri@qt.io>2019-05-13 10:57:41 +0000
commiteab038decfbab99d1f2bcf92c351076e496b3263 (patch)
treeb329579a16c6562752677a25a626519708590bec
parent7da6bc8b295728957d548a6cfe3c78ce07bb0fb5 (diff)
Add missing vec4 for datainput parsing
Task-number: QT3DS-3394 Change-Id: Ib99a65285b248e4efe623a8aba7d7b784b9fa611 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
-rw-r--r--src/Runtime/Source/runtime/Qt3DSApplication.cpp2
-rw-r--r--src/Runtime/Source/runtime/Qt3DSApplication.h1
-rw-r--r--src/Runtime/Source/runtime/Qt3DSQmlEngine.cpp21
3 files changed, 24 insertions, 0 deletions
diff --git a/src/Runtime/Source/runtime/Qt3DSApplication.cpp b/src/Runtime/Source/runtime/Qt3DSApplication.cpp
index 84bf83f7..830f4573 100644
--- a/src/Runtime/Source/runtime/Qt3DSApplication.cpp
+++ b/src/Runtime/Source/runtime/Qt3DSApplication.cpp
@@ -1197,6 +1197,8 @@ struct SApp : public IApplication
diDef.type = DataInputTypeString;
else if (AreEqual(type, "Float"))
diDef.type = DataInputTypeFloat;
+ else if (AreEqual(type, "Vector4"))
+ diDef.type = DataInputTypeVector4;
else if (AreEqual(type, "Vector3"))
diDef.type = DataInputTypeVector3;
else if (AreEqual(type, "Vector2"))
diff --git a/src/Runtime/Source/runtime/Qt3DSApplication.h b/src/Runtime/Source/runtime/Qt3DSApplication.h
index b74191f2..8bc967bf 100644
--- a/src/Runtime/Source/runtime/Qt3DSApplication.h
+++ b/src/Runtime/Source/runtime/Qt3DSApplication.h
@@ -98,6 +98,7 @@ enum DataInputType {
DataInputTypeFloat,
DataInputTypeEvaluator,
DataInputTypeBoolean,
+ DataInputTypeVector4,
DataInputTypeVector3,
DataInputTypeVector2,
DataInputTypeVariant
diff --git a/src/Runtime/Source/runtime/Qt3DSQmlEngine.cpp b/src/Runtime/Source/runtime/Qt3DSQmlEngine.cpp
index 502d7e81..e4aed96e 100644
--- a/src/Runtime/Source/runtime/Qt3DSQmlEngine.cpp
+++ b/src/Runtime/Source/runtime/Qt3DSQmlEngine.cpp
@@ -720,6 +720,27 @@ void CQmlEngineImpl::SetDataInputValue(
reinterpret_cast<const char *>(&valueFloat));
break;
}
+ case ATTRIBUTETYPE_FLOAT4: {
+ QVector4D valueVec;
+ if (diDef.type == qt3ds::runtime::DataInputTypeVector4) {
+ valueVec = value.value<QVector4D>();
+ } else {
+ qWarning() << __FUNCTION__ << "Property type "
+ << ctrlElem.propertyType
+ << " not matching with Datainput " << name
+ << " data type "
+ << diDef.type;
+ break;
+ }
+ // Set the values of vector attribute components separately
+ for (int i = 0; i < 4; i++) {
+ const float val = valueVec[i];
+ SetAttribute(ctrlElem.elementPath.constData(),
+ ctrlElem.attributeName[i].constData(),
+ reinterpret_cast<const char *>(&val));
+ }
+ break;
+ }
case ATTRIBUTETYPE_FLOAT3: {
QVector3D valueVec;
if (diDef.type == qt3ds::runtime::DataInputTypeVector3