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<unsigned int> scriptable::ScriptableMesh::findNearbyVertexIndices(const glm::vec3& origin, float epsilon) const { - QVector<unsigned int> result; +QVector<glm::uint32> scriptable::ScriptableMesh::findNearbyVertexIndices(const glm::vec3& origin, float epsilon) const { + QVector<glm::uint32> result; if (!isValid()) { return result; } @@ -74,14 +74,14 @@ QVector<unsigned int> scriptable::ScriptableMesh::findNearbyVertexIndices(const return result; } -QVector<unsigned int> scriptable::ScriptableMesh::getIndices() const { +QVector<glm::uint32> 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<glm::uint32>(mesh->getIndexBuffer()); } - return QVector<unsigned int>(); + return QVector<glm::uint32>(); } 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<scriptable::ScriptableModel*>(model); } - // Functions exposed to scripts need to use QVector<unsigned int> instead of QVector<glm::uint32> as a workaround to QScriptEngine meta types - QVector<unsigned int> getIndices() const; - QVector<unsigned int> findNearbyVertexIndices(const glm::vec3& origin, float epsilon = 1e-6) const; + QVector<glm::uint32> getIndices() const; + QVector<glm::uint32> 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<unsigned int> scriptable::ScriptableMeshPart::findNearbyPartVertexIndices(const glm::vec3& origin, float epsilon) const { - QSet<unsigned int> result; +QVector<glm::uint32> scriptable::ScriptableMeshPart::findNearbyPartVertexIndices(const glm::vec3& origin, float epsilon) const { + QSet<glm::uint32> 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<unsigned int> scriptable::ScriptableMeshPart::getIndices() const { +QVector<glm::uint32> 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<glm::uint32>(mesh->getIndexBuffer()); } - return QVector<unsigned int>(); + return QVector<glm::uint32>(); } 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<unsigned int>& indices) { +bool scriptable::ScriptableMeshPart::setIndices(const QVector<glm::uint32>& 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<unsigned int>& 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<unsigned int> scriptable::ScriptableMeshPart::getFace(unsigned int faceIndex) const { +QVector<glm::uint32> scriptable::ScriptableMeshPart::getFace(glm::uint32 faceIndex) const { switch (getTopology()) { case graphics::Mesh::Topology::POINTS: case graphics::Mesh::Topology::LINES: @@ -440,7 +440,7 @@ QVector<unsigned int> scriptable::ScriptableMeshPart::getFace(unsigned int faceI if (faceIndex < getNumFaces()) { return getIndices().mid(faceIndex * getTopologyLength(), getTopologyLength()); } - default: return QVector<unsigned int>(); + default: return QVector<glm::uint32>(); } } 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<unsigned int> instead of QVector<glm::uint32> as a workaround to QScriptEngine meta types - QVector<unsigned int> getIndices() const; - bool setIndices(const QVector<unsigned int>& indices); - QVector<unsigned int> findNearbyPartVertexIndices(const glm::vec3& origin, float epsilon = 1e-6) const; + QVector<glm::uint32> getIndices() const; + bool setIndices(const QVector<glm::uint32>& indices); + QVector<glm::uint32> 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<unsigned int> getFace(glm::uint32 faceIndex) const; + QVector<glm::uint32> 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<glm::vec4>(); int qVectorVec3MetaTypeId = qRegisterMetaType<QVector<glm::vec3>>(); int qVectorQuatMetaTypeId = qRegisterMetaType<QVector<glm::quat>>(); int qVectorBoolMetaTypeId = qRegisterMetaType<QVector<bool>>(); +int qVectorGLMUint32MetaTypeId = qRegisterMetaType<QVector<unsigned int>>("QVector<glm::uint32>"); int quatMetaTypeId = qRegisterMetaType<glm::quat>(); int pickRayMetaTypeId = qRegisterMetaType<PickRay>(); int collisionMetaTypeId = qRegisterMetaType<Collision>();