Showing the changes to libraries/script-engine/src/ModelScriptingInterface.cpp (1 of 260 files). Show all
Unified · Split
| @@ -10,20 +10,20 @@ · 9 unmodified lines | ||
| 10 | 10 | // |
| 11 | 11 | |
| 12 | 12 | #include "ModelScriptingInterface.h" |
| 13 | −#include <QtScript/QScriptEngine> | |
| 14 | −#include <QtScript/QScriptValueIterator> | |
| 15 | −#include <QtScript/QScriptValue> | |
| 16 | 13 | #include <model-networking/SimpleMeshProxy.h> |
| 17 | 14 | #include "ScriptEngine.h" |
| 15 | +#include "ScriptEngineCast.h" | |
| 18 | 16 | #include "ScriptEngineLogging.h" |
| 17 | +#include "ScriptManager.h" | |
| 18 | +#include "ScriptValueUtils.h" | |
| 19 | 19 | #include "OBJWriter.h" |
| 20 | 20 | |
| 21 | 21 | ModelScriptingInterface::ModelScriptingInterface(QObject* parent) : QObject(parent) { |
| 22 | − _modelScriptEngine = qobject_cast<QScriptEngine*>(parent); | |
| 22 | + _modelScriptEngine = qobject_cast<ScriptManager*>(parent)->engine(); | |
| 23 | 23 | |
| 24 | − qScriptRegisterSequenceMetaType<QList<MeshProxy*>>(_modelScriptEngine); | |
| 25 | − qScriptRegisterMetaType(_modelScriptEngine, meshFaceToScriptValue, meshFaceFromScriptValue); | |
| 26 | − qScriptRegisterMetaType(_modelScriptEngine, qVectorMeshFaceToScriptValue, qVectorMeshFaceFromScriptValue); | |
| 24 | + scriptRegisterSequenceMetaType<QList<MeshProxy*>>(_modelScriptEngine.get()); | |
| 25 | + scriptRegisterMetaType(_modelScriptEngine.get(), meshFaceToScriptValue, meshFaceFromScriptValue); | |
| 26 | + scriptRegisterMetaType(_modelScriptEngine.get(), qVectorMeshFaceToScriptValue, qVectorMeshFaceFromScriptValue); | |
| 27 | 27 | } |
| 28 | 28 | |
| 29 | 29 | QString ModelScriptingInterface::meshToOBJ(MeshProxyList in) { |
| @@ -35,7 +35,7 @@ QString ModelScriptingInterface::meshToOBJ(MeshProxyList in) { · 5 unmodified lines | ||
| 35 | 35 | return writeOBJToString(meshes); |
| 36 | 36 | } |
| 37 | 37 | |
| 38 | −QScriptValue ModelScriptingInterface::appendMeshes(MeshProxyList in) { | |
| 38 | +ScriptValuePointer ModelScriptingInterface::appendMeshes(MeshProxyList in) { | |
| 39 | 39 | // figure out the size of the resulting mesh |
| 40 | 40 | size_t totalVertexCount { 0 }; |
| 41 | 41 | size_t totalColorCount { 0 }; |
| @@ -140,16 +140,16 @@ QScriptValue ModelScriptingInterface::appendMeshes(MeshProxyList in) { · 98 unmodified lines | ||
| 140 | 140 | |
| 141 | 141 | |
| 142 | 142 | MeshProxy* resultProxy = new SimpleMeshProxy(result); |
| 143 | − return meshToScriptValue(_modelScriptEngine, resultProxy); | |
| 143 | + return meshToScriptValue(_modelScriptEngine.get(), resultProxy); | |
| 144 | 144 | } |
| 145 | 145 | |
| 146 | −QScriptValue ModelScriptingInterface::transformMesh(glm::mat4 transform, MeshProxy* meshProxy) { | |
| 146 | +ScriptValuePointer ModelScriptingInterface::transformMesh(glm::mat4 transform, MeshProxy* meshProxy) { | |
| 147 | 147 | if (!meshProxy) { |
| 148 | − return QScriptValue(false); | |
| 148 | + return ScriptValuePointer(false); | |
| 149 | 149 | } |
| 150 | 150 | MeshPointer mesh = meshProxy->getMeshPointer(); |
| 151 | 151 | if (!mesh) { |
| 152 | − return QScriptValue(false); | |
| 152 | + return ScriptValuePointer(false); | |
| 153 | 153 | } |
| 154 | 154 | |
| 155 | 155 | const auto inverseTransposeTransform = glm::inverse(glm::transpose(transform)); |
| @@ -158,45 +158,45 @@ QScriptValue ModelScriptingInterface::transformMesh(glm::mat4 transform, MeshPro · 2 unmodified lines | ||
| 158 | 158 | [&](glm::vec3 normal){ return glm::vec3(inverseTransposeTransform * glm::vec4(normal, 0.0f)); }, |
| 159 | 159 | [&](uint32_t index){ return index; }); |
| 160 | 160 | MeshProxy* resultProxy = new SimpleMeshProxy(result); |
| 161 | − return meshToScriptValue(_modelScriptEngine, resultProxy); | |
| 161 | + return meshToScriptValue(_modelScriptEngine.get(), resultProxy); | |
| 162 | 162 | } |
| 163 | 163 | |
| 164 | −QScriptValue ModelScriptingInterface::getVertexCount(MeshProxy* meshProxy) { | |
| 164 | +ScriptValuePointer ModelScriptingInterface::getVertexCount(MeshProxy* meshProxy) { | |
| 165 | 165 | if (!meshProxy) { |
| 166 | − return QScriptValue(false); | |
| 166 | + return ScriptValuePointer(false); | |
| 167 | 167 | } |
| 168 | 168 | MeshPointer mesh = meshProxy->getMeshPointer(); |
| 169 | 169 | if (!mesh) { |
| 170 | − return QScriptValue(false); | |
| 170 | + return ScriptValuePointer(false); | |
| 171 | 171 | } |
| 172 | 172 | |
| 173 | 173 | gpu::BufferView::Index numVertices = (gpu::BufferView::Index)mesh->getNumVertices(); |
| 174 | 174 | |
| 175 | − return numVertices; | |
| 175 | + return _modelScriptEngine->newValue(numVertices); | |
| 176 | 176 | } |
| 177 | 177 | |
| 178 | −QScriptValue ModelScriptingInterface::getVertex(MeshProxy* meshProxy, int vertexIndex) { | |
| 178 | +ScriptValuePointer ModelScriptingInterface::getVertex(MeshProxy* meshProxy, int vertexIndex) { | |
| 179 | 179 | if (!meshProxy) { |
| 180 | − return QScriptValue(false); | |
| 180 | + return ScriptValuePointer(false); | |
| 181 | 181 | } |
| 182 | 182 | MeshPointer mesh = meshProxy->getMeshPointer(); |
| 183 | 183 | if (!mesh) { |
| 184 | − return QScriptValue(false); | |
| 184 | + return ScriptValuePointer(false); | |
| 185 | 185 | } |
| 186 | 186 | |
| 187 | 187 | const gpu::BufferView& vertexBufferView = mesh->getVertexBuffer(); |
| 188 | 188 | gpu::BufferView::Index numVertices = (gpu::BufferView::Index)mesh->getNumVertices(); |
| 189 | 189 | |
| 190 | 190 | if (vertexIndex < 0 || vertexIndex >= numVertices) { |
| 191 | − return QScriptValue(false); | |
| 191 | + return ScriptValuePointer(false); | |
| 192 | 192 | } |
| 193 | 193 | |
| 194 | 194 | glm::vec3 pos = vertexBufferView.get<glm::vec3>(vertexIndex); |
| 195 | − return vec3ToScriptValue(_modelScriptEngine, pos); | |
| 195 | + return vec3ToScriptValue(_modelScriptEngine.get(), pos); | |
| 196 | 196 | } |
| 197 | 197 | |
| 198 | 198 | |
| 199 | −QScriptValue ModelScriptingInterface::newMesh(const QVector<glm::vec3>& vertices, | |
| 199 | +ScriptValuePointer ModelScriptingInterface::newMesh(const QVector<glm::vec3>& vertices, | |
| 200 | 200 | const QVector<glm::vec3>& normals, |
| 201 | 201 | const QVector<MeshFace>& faces) { |
| 202 | 202 | graphics::MeshPointer mesh(std::make_shared<graphics::Mesh>()); |
| @@ -247,5 +247,5 @@ QScriptValue ModelScriptingInterface::newMesh(const QVector<glm::vec3>& vertices · 44 unmodified lines | ||
| 247 | 247 | |
| 248 | 248 | |
| 249 | 249 | MeshProxy* meshProxy = new SimpleMeshProxy(mesh); |
| 250 | − return meshToScriptValue(_modelScriptEngine, meshProxy); | |
| 250 | + return meshToScriptValue(_modelScriptEngine.get(), meshProxy); | |
| 251 | 251 | } |