History

first pass creating Qt <-> QtScript interface

Heather Anderson committed 4 years ago

Commit bc6eaf21 parent bd0455463 files · +1707 −294Browse files

Showing the changes to libraries/script-engine/src/ScriptValueUtils.cpp (1 of 63 files). Show all

Unified · Split

libraries/script-engine/src/ScriptValueUtils.cpp+59−32
@@ -99,7 +99,7 @@ ScriptValue vec2ToScriptValue(ScriptEngine* engine, const glm::vec2& vec2) { · 98 unmodified lines
9999 return value;
100100 }
101101
102−void vec2FromScriptValue(const ScriptValue& object, glm::vec2& vec2) {
102+bool vec2FromScriptValue(const ScriptValue& object, glm::vec2& vec2) {
103103 if (object.isNumber()) {
104104 vec2 = glm::vec2(object.toVariant().toFloat());
105105 } else if (object.isArray()) {
@@ -122,6 +122,7 @@ void vec2FromScriptValue(const ScriptValue& object, glm::vec2& vec2) { · 16 unmodified lines
122122 vec2.x = x.toVariant().toFloat();
123123 vec2.y = y.toVariant().toFloat();
124124 }
125+ return true;
125126 }
126127
127128 ScriptValue vec3ToScriptValue(ScriptEngine* engine, const glm::vec3& vec3) {
@@ -174,7 +175,7 @@ ScriptValue vec3ColorToScriptValue(ScriptEngine* engine, const glm::vec3& vec3) · 46 unmodified lines
174175 return value;
175176 }
176177
177−void vec3FromScriptValue(const ScriptValue& object, glm::vec3& vec3) {
178+bool vec3FromScriptValue(const ScriptValue& object, glm::vec3& vec3) {
178179 if (object.isNumber()) {
179180 vec3 = glm::vec3(object.toVariant().toFloat());
180181 } else if (object.isString()) {
@@ -220,6 +221,7 @@ void vec3FromScriptValue(const ScriptValue& object, glm::vec3& vec3) { · 39 unmodified lines
220221 vec3.y = y.toVariant().toFloat();
221222 vec3.z = z.toVariant().toFloat();
222223 }
224+ return true;
223225 }
224226
225227 ScriptValue u8vec3ToScriptValue(ScriptEngine* engine, const glm::u8vec3& vec3) {
@@ -272,7 +274,7 @@ ScriptValue u8vec3ColorToScriptValue(ScriptEngine* engine, const glm::u8vec3& ve · 46 unmodified lines
272274 return value;
273275 }
274276
275−void u8vec3FromScriptValue(const ScriptValue& object, glm::u8vec3& vec3) {
277+bool u8vec3FromScriptValue(const ScriptValue& object, glm::u8vec3& vec3) {
276278 if (object.isNumber()) {
277279 vec3 = glm::vec3(object.toVariant().toUInt());
278280 } else if (object.isString()) {
@@ -318,6 +320,7 @@ void u8vec3FromScriptValue(const ScriptValue& object, glm::u8vec3& vec3) { · 39 unmodified lines
318320 vec3.y = y.toVariant().toUInt();
319321 vec3.z = z.toVariant().toUInt();
320322 }
323+ return true;
321324 }
322325
323326 ScriptValue vec4toScriptValue(ScriptEngine* engine, const glm::vec4& vec4) {
@@ -329,11 +332,12 @@ ScriptValue vec4toScriptValue(ScriptEngine* engine, const glm::vec4& vec4) { · 5 unmodified lines
329332 return obj;
330333 }
331334
332−void vec4FromScriptValue(const ScriptValue& object, glm::vec4& vec4) {
335+bool vec4FromScriptValue(const ScriptValue& object, glm::vec4& vec4) {
333336 vec4.x = object.property("x").toVariant().toFloat();
334337 vec4.y = object.property("y").toVariant().toFloat();
335338 vec4.z = object.property("z").toVariant().toFloat();
336339 vec4.w = object.property("w").toVariant().toFloat();
340+ return true;
337341 }
338342
339343 ScriptValue mat4toScriptValue(ScriptEngine* engine, const glm::mat4& mat4) {
@@ -357,7 +361,7 @@ ScriptValue mat4toScriptValue(ScriptEngine* engine, const glm::mat4& mat4) { · 17 unmodified lines
357361 return obj;
358362 }
359363
360−void mat4FromScriptValue(const ScriptValue& object, glm::mat4& mat4) {
364+bool mat4FromScriptValue(const ScriptValue& object, glm::mat4& mat4) {
361365 mat4[0][0] = object.property("r0c0").toVariant().toFloat();
362366 mat4[0][1] = object.property("r1c0").toVariant().toFloat();
363367 mat4[0][2] = object.property("r2c0").toVariant().toFloat();
@@ -374,6 +378,7 @@ void mat4FromScriptValue(const ScriptValue& object, glm::mat4& mat4) { · 10 unmodified lines
374378 mat4[3][1] = object.property("r1c3").toVariant().toFloat();
375379 mat4[3][2] = object.property("r2c3").toVariant().toFloat();
376380 mat4[3][3] = object.property("r3c3").toVariant().toFloat();
381+ return true;
377382 }
378383
379384 ScriptValue qVectorVec3ColorToScriptValue(ScriptEngine* engine, const QVector<glm::vec3>& vector) {
@@ -404,7 +409,7 @@ QVector<glm::vec3> qVectorVec3FromScriptValue(const ScriptValue& array) { · 24 unmodified lines
404409 return newVector;
405410 }
406411
407−void qVectorVec3FromScriptValue(const ScriptValue& array, QVector<glm::vec3>& vector) {
412+bool qVectorVec3FromScriptValue(const ScriptValue& array, QVector<glm::vec3>& vector) {
408413 int length = array.property("length").toInteger();
409414
410415 for (int i = 0; i < length; i++) {
@@ -412,6 +417,7 @@ void qVectorVec3FromScriptValue(const ScriptValue& array, QVector<glm::vec3>& ve · 1 unmodified line
412417 vec3FromScriptValue(array.property(i), newVec3);
413418 vector << newVec3;
414419 }
420+ return true;
415421 }
416422
417423 ScriptValue quatToScriptValue(ScriptEngine* engine, const glm::quat& quat) {
@@ -427,7 +433,7 @@ ScriptValue quatToScriptValue(ScriptEngine* engine, const glm::quat& quat) { · 9 unmodified lines
427433 return obj;
428434 }
429435
430−void quatFromScriptValue(const ScriptValue& object, glm::quat& quat) {
436+bool quatFromScriptValue(const ScriptValue& object, glm::quat& quat) {
431437 quat.x = object.property("x").toVariant().toFloat();
432438 quat.y = object.property("y").toVariant().toFloat();
433439 quat.z = object.property("z").toVariant().toFloat();
@@ -440,6 +446,7 @@ void quatFromScriptValue(const ScriptValue& object, glm::quat& quat) { · 6 unmodified lines
440446 } else {
441447 quat = glm::quat();
442448 }
449+ return true;
443450 }
444451
445452 ScriptValue qVectorQuatToScriptValue(ScriptEngine* engine, const QVector<glm::quat>& vector) {
@@ -482,12 +489,13 @@ ScriptValue qVectorQUuidToScriptValue(ScriptEngine* engine, const QVector<QUuid> · 36 unmodified lines
482489 return array;
483490 }
484491
485−void qVectorQUuidFromScriptValue(const ScriptValue& array, QVector<QUuid>& vector) {
492+bool qVectorQUuidFromScriptValue(const ScriptValue& array, QVector<QUuid>& vector) {
486493 int length = array.property("length").toInteger();
487494
488495 for (int i = 0; i < length; i++) {
489496 vector << array.property(i).toVariant().toUuid();
490497 }
498+ return true;
491499 }
492500
493501 QVector<QUuid> qVectorQUuidFromScriptValue(const ScriptValue& array) {
@@ -523,20 +531,22 @@ ScriptValue qVectorIntToScriptValue(ScriptEngine* engine, const QVector<uint32_t · 29 unmodified lines
523531 return array;
524532 }
525533
526−void qVectorFloatFromScriptValue(const ScriptValue& array, QVector<float>& vector) {
534+bool qVectorFloatFromScriptValue(const ScriptValue& array, QVector<float>& vector) {
527535 int length = array.property("length").toInteger();
528536
529537 for (int i = 0; i < length; i++) {
530538 vector << array.property(i).toVariant().toFloat();
531539 }
540+ return true;
532541 }
533542
534−void qVectorIntFromScriptValue(const ScriptValue& array, QVector<uint32_t>& vector) {
543+bool qVectorIntFromScriptValue(const ScriptValue& array, QVector<uint32_t>& vector) {
535544 int length = array.property("length").toInteger();
536545
537546 for (int i = 0; i < length; i++) {
538547 vector << array.property(i).toVariant().toInt();
539548 }
549+ return true;
540550 }
541551
542552 QVector<glm::quat> qVectorQuatFromScriptValue(const ScriptValue& array) {
@@ -551,7 +561,7 @@ QVector<glm::quat> qVectorQuatFromScriptValue(const ScriptValue& array) { · 8 unmodified lines
551561 return newVector;
552562 }
553563
554−void qVectorQuatFromScriptValue(const ScriptValue& array, QVector<glm::quat>& vector) {
564+bool qVectorQuatFromScriptValue(const ScriptValue& array, QVector<glm::quat>& vector) {
555565 int length = array.property("length").toInteger();
556566
557567 for (int i = 0; i < length; i++) {
@@ -559,6 +569,7 @@ void qVectorQuatFromScriptValue(const ScriptValue& array, QVector<glm::quat>& ve · 1 unmodified line
559569 quatFromScriptValue(array.property(i), newQuat);
560570 vector << newQuat;
561571 }
572+ return true;
562573 }
563574
564575 QVector<bool> qVectorBoolFromScriptValue(const ScriptValue& array) {
@@ -571,12 +582,13 @@ QVector<bool> qVectorBoolFromScriptValue(const ScriptValue& array) { · 6 unmodified lines
571582 return newVector;
572583 }
573584
574−void qVectorBoolFromScriptValue(const ScriptValue& array, QVector<bool>& vector) {
585+bool qVectorBoolFromScriptValue(const ScriptValue& array, QVector<bool>& vector) {
575586 int length = array.property("length").toInteger();
576587
577588 for (int i = 0; i < length; i++) {
578589 vector << array.property(i).toBool();
579590 }
591+ return true;
580592 }
581593
582594 ScriptValue qRectToScriptValue(ScriptEngine* engine, const QRect& rect) {
@@ -588,11 +600,12 @@ ScriptValue qRectToScriptValue(ScriptEngine* engine, const QRect& rect) { · 5 unmodified lines
588600 return obj;
589601 }
590602
591−void qRectFromScriptValue(const ScriptValue& object, QRect& rect) {
603+bool qRectFromScriptValue(const ScriptValue& object, QRect& rect) {
592604 rect.setX(object.property("x").toVariant().toInt());
593605 rect.setY(object.property("y").toVariant().toInt());
594606 rect.setWidth(object.property("width").toVariant().toInt());
595607 rect.setHeight(object.property("height").toVariant().toInt());
608+ return true;
596609 }
597610
598611 ScriptValue qRectFToScriptValue(ScriptEngine* engine, const QRectF& rect) {
@@ -604,11 +617,12 @@ ScriptValue qRectFToScriptValue(ScriptEngine* engine, const QRectF& rect) { · 5 unmodified lines
604617 return obj;
605618 }
606619
607−void qRectFFromScriptValue(const ScriptValue& object, QRectF& rect) {
620+bool qRectFFromScriptValue(const ScriptValue& object, QRectF& rect) {
608621 rect.setX(object.property("x").toVariant().toFloat());
609622 rect.setY(object.property("y").toVariant().toFloat());
610623 rect.setWidth(object.property("width").toVariant().toFloat());
611624 rect.setHeight(object.property("height").toVariant().toFloat());
625+ return true;
612626 }
613627
614628 ScriptValue qColorToScriptValue(ScriptEngine* engine, const QColor& color) {
@@ -639,7 +653,7 @@ ScriptValue aaCubeToScriptValue(ScriptEngine* engine, const AACube& aaCube) { · 24 unmodified lines
639653 return obj;
640654 }
641655
642−void aaCubeFromScriptValue(const ScriptValue& object, AACube& aaCube) {
656+bool aaCubeFromScriptValue(const ScriptValue& object, AACube& aaCube) {
643657 glm::vec3 corner;
644658 corner.x = object.property("x").toVariant().toFloat();
645659 corner.y = object.property("y").toVariant().toFloat();
@@ -647,9 +661,10 @@ void aaCubeFromScriptValue(const ScriptValue& object, AACube& aaCube) { · 1 unmodified line
647661 float scale = object.property("scale").toVariant().toFloat();
648662
649663 aaCube.setBox(corner, scale);
664+ return true;
650665 }
651666
652−void qColorFromScriptValue(const ScriptValue& object, QColor& color) {
667+bool qColorFromScriptValue(const ScriptValue& object, QColor& color) {
653668 if (object.isNumber()) {
654669 color.setRgb(object.toUInt32());
655670
@@ -661,14 +676,16 @@ void qColorFromScriptValue(const ScriptValue& object, QColor& color) { · 5 unmodified lines
661676 color.setRgb(object.property("red").toInt32(), object.property("green").toInt32(), object.property("blue").toInt32(),
662677 alphaValue.isNumber() ? alphaValue.toInt32() : 255);
663678 }
679+ return true;
664680 }
665681
666682 ScriptValue qURLToScriptValue(ScriptEngine* engine, const QUrl& url) {
667683 return engine->newValue(url.toString());
668684 }
669685
670−void qURLFromScriptValue(const ScriptValue& object, QUrl& url) {
686+bool qURLFromScriptValue(const ScriptValue& object, QUrl& url) {
671687 url = object.toString();
688+ return true;
672689 }
673690
674691 ScriptValue pickRayToScriptValue(ScriptEngine* engine, const PickRay& pickRay) {
@@ -680,7 +697,7 @@ ScriptValue pickRayToScriptValue(ScriptEngine* engine, const PickRay& pickRay) { · 5 unmodified lines
680697 return obj;
681698 }
682699
683−void pickRayFromScriptValue(const ScriptValue& object, PickRay& pickRay) {
700+bool pickRayFromScriptValue(const ScriptValue& object, PickRay& pickRay) {
684701 ScriptValue originValue = object.property("origin");
685702 if (originValue.isValid()) {
686703 auto x = originValue.property("x");
@@ -703,6 +720,7 @@ void pickRayFromScriptValue(const ScriptValue& object, PickRay& pickRay) { · 16 unmodified lines
703720 pickRay.direction.z = z.toVariant().toFloat();
704721 }
705722 }
723+ return true;
706724 }
707725
708726 /**jsdoc
@@ -726,8 +744,9 @@ ScriptValue collisionToScriptValue(ScriptEngine* engine, const Collision& collis · 17 unmodified lines
726744 return obj;
727745 }
728746
729−void collisionFromScriptValue(const ScriptValue& object, Collision& collision) {
747+bool collisionFromScriptValue(const ScriptValue& object, Collision& collision) {
730748 // TODO: implement this when we know what it means to accept collision events from JS
749+ return false;
731750 }
732751
733752 ScriptValue quuidToScriptValue(ScriptEngine* engine, const QUuid& uuid) {
@@ -738,14 +757,15 @@ ScriptValue quuidToScriptValue(ScriptEngine* engine, const QUuid& uuid) { · 4 unmodified lines
738757 return obj;
739758 }
740759
741−void quuidFromScriptValue(const ScriptValue& object, QUuid& uuid) {
760+bool quuidFromScriptValue(const ScriptValue& object, QUuid& uuid) {
742761 if (object.isNull()) {
743762 uuid = QUuid();
744− return;
763+ return true;
745764 }
746765 QString uuidAsString = object.toVariant().toString();
747766 QUuid fromString(uuidAsString);
748767 uuid = fromString;
768+ return true;
749769 }
750770
751771 /**jsdoc
@@ -761,9 +781,10 @@ ScriptValue qSizeFToScriptValue(ScriptEngine* engine, const QSizeF& qSizeF) { · 9 unmodified lines
761781 return obj;
762782 }
763783
764−void qSizeFFromScriptValue(const ScriptValue& object, QSizeF& qSizeF) {
784+bool qSizeFFromScriptValue(const ScriptValue& object, QSizeF& qSizeF) {
765785 qSizeF.setWidth(object.property("width").toVariant().toFloat());
766786 qSizeF.setHeight(object.property("height").toVariant().toFloat());
787+ return true;
767788 }
768789
769790 /**jsdoc
@@ -802,16 +823,18 @@ ScriptValue animationDetailsToScriptValue(ScriptEngine* engine, const AnimationD · 32 unmodified lines
802823 return obj;
803824 }
804825
805−void animationDetailsFromScriptValue(const ScriptValue& object, AnimationDetails& details) {
826+bool animationDetailsFromScriptValue(const ScriptValue& object, AnimationDetails& details) {
806827 // nothing for now...
828+ return false;
807829 }
808830
809831 ScriptValue meshToScriptValue(ScriptEngine* engine, MeshProxy* const& in) {
810832 return engine->newQObject(in, ScriptEngine::QtOwnership);
811833 }
812834
813−void meshFromScriptValue(const ScriptValue& value, MeshProxy*& out) {
835+bool meshFromScriptValue(const ScriptValue& value, MeshProxy*& out) {
814836 out = qobject_cast<MeshProxy*>(value.toQObject());
837+ return true;
815838 }
816839
817840 ScriptValue meshesToScriptValue(ScriptEngine* engine, const MeshProxyList& in) {
@@ -822,7 +845,7 @@ ScriptValue meshesToScriptValue(ScriptEngine* engine, const MeshProxyList& in) { · 4 unmodified lines
822845 return result;
823846 }
824847
825−void meshesFromScriptValue(const ScriptValue& value, MeshProxyList& out) {
848+bool meshesFromScriptValue(const ScriptValue& value, MeshProxyList& out) {
826849 ScriptValueIteratorPointer itr(value.newIterator());
827850
828851 qDebug() << "in meshesFromScriptValue, value.length =" << value.property("length").toInt32();
@@ -836,6 +859,7 @@ void meshesFromScriptValue(const ScriptValue& value, MeshProxyList& out) { · 7 unmodified lines
836859 qDebug() << "null meshProxy";
837860 }
838861 }
862+ return true;
839863 }
840864
841865 /**jsdoc
@@ -849,8 +873,8 @@ ScriptValue meshFaceToScriptValue(ScriptEngine* engine, const MeshFace& meshFace · 7 unmodified lines
849873 return obj;
850874 }
851875
852−void meshFaceFromScriptValue(const ScriptValue& object, MeshFace& meshFaceResult) {
853− qVectorIntFromScriptValue(object.property("vertices"), meshFaceResult.vertexIndices);
876+bool meshFaceFromScriptValue(const ScriptValue& object, MeshFace& meshFaceResult) {
877+ return qVectorIntFromScriptValue(object.property("vertices"), meshFaceResult.vertexIndices);
854878 }
855879
856880 ScriptValue qVectorMeshFaceToScriptValue(ScriptEngine* engine, const QVector<MeshFace>& vector) {
@@ -861,7 +885,7 @@ ScriptValue qVectorMeshFaceToScriptValue(ScriptEngine* engine, const QVector<Mes · 4 unmodified lines
861885 return array;
862886 }
863887
864−void qVectorMeshFaceFromScriptValue(const ScriptValue& array, QVector<MeshFace>& result) {
888+bool qVectorMeshFaceFromScriptValue(const ScriptValue& array, QVector<MeshFace>& result) {
865889 int length = array.property("length").toInteger();
866890 result.clear();
867891
@@ -870,18 +894,21 @@ void qVectorMeshFaceFromScriptValue(const ScriptValue& array, QVector<MeshFace>& · 2 unmodified lines
870894 meshFaceFromScriptValue(array.property(i), meshFace);
871895 result << meshFace;
872896 }
897+ return true;
873898 }
874899
875900 ScriptValue stencilMaskModeToScriptValue(ScriptEngine* engine, const StencilMaskMode& stencilMode) {
876901 return engine->newValue((int)stencilMode);
877902 }
878903
879−void stencilMaskModeFromScriptValue(const ScriptValue& object, StencilMaskMode& stencilMode) {
904+bool stencilMaskModeFromScriptValue(const ScriptValue& object, StencilMaskMode& stencilMode) {
880905 stencilMode = StencilMaskMode(object.toVariant().toInt());
906+ return true;
881907 }
882908
883−void promiseFromScriptValue(const ScriptValue& object, std::shared_ptr<MiniPromise>& promise) {
909+bool promiseFromScriptValue(const ScriptValue& object, std::shared_ptr<MiniPromise>& promise) {
884910 Q_ASSERT(false);
911+ return false;
885912 }
886913 ScriptValue promiseToScriptValue(ScriptEngine* engine, const std::shared_ptr<MiniPromise>& promise) {
887914 return engine->newQObject(promise.get());
@@ -891,8 +918,8 @@ ScriptValue EntityItemIDtoScriptValue(ScriptEngine* engine, const EntityItemID& · 3 unmodified lines
891918 return quuidToScriptValue(engine, id);
892919 }
893920
894−void EntityItemIDfromScriptValue(const ScriptValue &object, EntityItemID& id) {
895− quuidFromScriptValue(object, id);
921+bool EntityItemIDfromScriptValue(const ScriptValue& object, EntityItemID& id) {
922+ return quuidFromScriptValue(object, id);
896923 }
897924
898925 QVector<EntityItemID> qVectorEntityItemIDFromScriptValue(const ScriptValue& array) {