From 0bd00c35542e6e3bca60c7457cd7376aed2c3dad Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Mon, 5 Aug 2019 10:31:13 -0700 Subject: [PATCH] Fix not being able to use both QVector and QVector in scripting --- .../src/graphics-scripting/ScriptableMesh.cpp | 8 ++++---- .../src/graphics-scripting/ScriptableMesh.h | 5 ++--- .../graphics-scripting/ScriptableMeshPart.cpp | 20 +++++++++---------- .../graphics-scripting/ScriptableMeshPart.h | 9 ++++----- libraries/shared/src/RegisteredMetaTypes.cpp | 1 + 5 files changed, 21 insertions(+), 22 deletions(-) diff --git a/libraries/graphics-scripting/src/graphics-scripting/ScriptableMesh.cpp b/libraries/graphics-scripting/src/graphics-scripting/ScriptableMesh.cpp index 40685340c8..72d2adb48f 100644 --- a/libraries/graphics-scripting/src/graphics-scripting/ScriptableMesh.cpp +++ b/libraries/graphics-scripting/src/graphics-scripting/ScriptableMesh.cpp @@ -59,8 +59,8 @@ glm::uint32 scriptable::ScriptableMesh::getNumVertices() const { return 0; } -QVector scriptable::ScriptableMesh::findNearbyVertexIndices(const glm::vec3& origin, float epsilon) const { - QVector result; +QVector scriptable::ScriptableMesh::findNearbyVertexIndices(const glm::vec3& origin, float epsilon) const { + QVector result; if (!isValid()) { return result; } @@ -74,14 +74,14 @@ QVector scriptable::ScriptableMesh::findNearbyVertexIndices(const return result; } -QVector scriptable::ScriptableMesh::getIndices() const { +QVector scriptable::ScriptableMesh::getIndices() const { if (auto mesh = getMeshPointer()) { #ifdef SCRIPTABLE_MESH_DEBUG qCDebug(graphics_scripting, "getIndices mesh %p", mesh.get()); #endif return buffer_helpers::bufferToVector(mesh->getIndexBuffer()); } - return QVector(); + return QVector(); } diff --git a/libraries/graphics-scripting/src/graphics-scripting/ScriptableMesh.h b/libraries/graphics-scripting/src/graphics-scripting/ScriptableMesh.h index 61dd9a3e61..dcb1c53759 100644 --- a/libraries/graphics-scripting/src/graphics-scripting/ScriptableMesh.h +++ b/libraries/graphics-scripting/src/graphics-scripting/ScriptableMesh.h @@ -83,9 +83,8 @@ namespace scriptable { public slots: const scriptable::ScriptableModelPointer getParentModel() const { return qobject_cast(model); } - // Functions exposed to scripts need to use QVector instead of QVector as a workaround to QScriptEngine meta types - QVector getIndices() const; - QVector findNearbyVertexIndices(const glm::vec3& origin, float epsilon = 1e-6) const; + QVector getIndices() const; + QVector findNearbyVertexIndices(const glm::vec3& origin, float epsilon = 1e-6) const; glm::uint32 addAttribute(const QString& attributeName, const QVariant& defaultValue = QVariant()); glm::uint32 fillAttribute(const QString& attributeName, const QVariant& value); diff --git a/libraries/graphics-scripting/src/graphics-scripting/ScriptableMeshPart.cpp b/libraries/graphics-scripting/src/graphics-scripting/ScriptableMeshPart.cpp index 092cdede98..192071d3af 100644 --- a/libraries/graphics-scripting/src/graphics-scripting/ScriptableMeshPart.cpp +++ b/libraries/graphics-scripting/src/graphics-scripting/ScriptableMeshPart.cpp @@ -244,8 +244,8 @@ glm::uint32 scriptable::ScriptableMeshPart::fillAttribute(const QString& attribu return isValid() ? parentMesh->fillAttribute(attributeName, value) : 0; } -QVector scriptable::ScriptableMeshPart::findNearbyPartVertexIndices(const glm::vec3& origin, float epsilon) const { - QSet result; +QVector scriptable::ScriptableMeshPart::findNearbyPartVertexIndices(const glm::vec3& origin, float epsilon) const { + QSet result; if (!isValid()) { return result.toList().toVector(); } @@ -328,14 +328,14 @@ scriptable::ScriptableMeshPart::ScriptableMeshPart(scriptable::ScriptableMeshPoi setObjectName(QString("%1.part[%2]").arg(parentMesh ? parentMesh->objectName() : "").arg(partIndex)); } -QVector scriptable::ScriptableMeshPart::getIndices() const { +QVector scriptable::ScriptableMeshPart::getIndices() const { if (auto mesh = getMeshPointer()) { #ifdef SCRIPTABLE_MESH_DEBUG qCDebug(graphics_scripting, "getIndices mesh %p", mesh.get()); #endif return buffer_helpers::bufferToVector(mesh->getIndexBuffer()); } - return QVector(); + return QVector(); } bool scriptable::ScriptableMeshPart::setFirstVertexIndex( glm::uint32 vertexIndex) { @@ -365,11 +365,11 @@ bool scriptable::ScriptableMeshPart::setLastVertexIndex( glm::uint32 vertexIndex return true; } -bool scriptable::ScriptableMeshPart::setIndices(const QVector& indices) { +bool scriptable::ScriptableMeshPart::setIndices(const QVector& indices) { if (!isValid()) { return false; } - unsigned int len = indices.size(); + glm::uint32 len = indices.size(); if (len != getNumIndices()) { context()->throwError(QString("setIndices: currently new indicies must be assign 1:1 across old indicies (indicies.size()=%1, numIndices=%2)") .arg(len).arg(getNumIndices())); @@ -379,14 +379,14 @@ bool scriptable::ScriptableMeshPart::setIndices(const QVector& ind auto indexBuffer = mesh->getIndexBuffer(); // first loop to validate all indices are valid - for (unsigned int i = 0; i < len; i++) { + for (glm::uint32 i = 0; i < len; i++) { if (!isValidIndex(indices.at(i))) { return false; } } const auto first = getFirstVertexIndex(); // now actually apply them - for (unsigned int i = 0; i < len; i++) { + for (glm::uint32 i = 0; i < len; i++) { buffer_helpers::setValue(indexBuffer, first + i, indices.at(i)); } return true; @@ -431,7 +431,7 @@ glm::uint32 scriptable::ScriptableMeshPart::getTopologyLength() const { return 0; } -QVector scriptable::ScriptableMeshPart::getFace(unsigned int faceIndex) const { +QVector scriptable::ScriptableMeshPart::getFace(glm::uint32 faceIndex) const { switch (getTopology()) { case graphics::Mesh::Topology::POINTS: case graphics::Mesh::Topology::LINES: @@ -440,7 +440,7 @@ QVector scriptable::ScriptableMeshPart::getFace(unsigned int faceI if (faceIndex < getNumFaces()) { return getIndices().mid(faceIndex * getTopologyLength(), getTopologyLength()); } - default: return QVector(); + default: return QVector(); } } diff --git a/libraries/graphics-scripting/src/graphics-scripting/ScriptableMeshPart.h b/libraries/graphics-scripting/src/graphics-scripting/ScriptableMeshPart.h index 73e69d66ef..7352fcd0f6 100644 --- a/libraries/graphics-scripting/src/graphics-scripting/ScriptableMeshPart.h +++ b/libraries/graphics-scripting/src/graphics-scripting/ScriptableMeshPart.h @@ -55,10 +55,9 @@ namespace scriptable { bool isValid() const { auto mesh = getMeshPointer(); return mesh && partIndex < mesh->getNumParts(); } public slots: - // Functions exposed to scripts need to use QVector instead of QVector as a workaround to QScriptEngine meta types - QVector getIndices() const; - bool setIndices(const QVector& indices); - QVector findNearbyPartVertexIndices(const glm::vec3& origin, float epsilon = 1e-6) const; + QVector getIndices() const; + bool setIndices(const QVector& indices); + QVector findNearbyPartVertexIndices(const glm::vec3& origin, float epsilon = 1e-6) const; QVariantList queryVertexAttributes(QVariant selector) const; QVariantMap getVertexAttributes(glm::uint32 vertexIndex) const; bool setVertexAttributes(glm::uint32 vertexIndex, const QVariantMap& attributeValues); @@ -66,7 +65,7 @@ namespace scriptable { QVariant getVertexProperty(glm::uint32 vertexIndex, const QString& attributeName) const; bool setVertexProperty(glm::uint32 vertexIndex, const QString& attributeName, const QVariant& attributeValues); - QVector getFace(glm::uint32 faceIndex) const; + QVector getFace(glm::uint32 faceIndex) const; QVariantMap scaleToFit(float unitScale); QVariantMap translate(const glm::vec3& translation); diff --git a/libraries/shared/src/RegisteredMetaTypes.cpp b/libraries/shared/src/RegisteredMetaTypes.cpp index 2369928845..f0fb20f292 100644 --- a/libraries/shared/src/RegisteredMetaTypes.cpp +++ b/libraries/shared/src/RegisteredMetaTypes.cpp @@ -35,6 +35,7 @@ int vec4MetaTypeId = qRegisterMetaType(); int qVectorVec3MetaTypeId = qRegisterMetaType>(); int qVectorQuatMetaTypeId = qRegisterMetaType>(); int qVectorBoolMetaTypeId = qRegisterMetaType>(); +int qVectorGLMUint32MetaTypeId = qRegisterMetaType>("QVector"); int quatMetaTypeId = qRegisterMetaType(); int pickRayMetaTypeId = qRegisterMetaType(); int collisionMetaTypeId = qRegisterMetaType();