Showing the changes to libraries/script-engine/src/ScriptValueUtils.cpp (1 of 5 files). Show all
Unified · Split
| @@ -34,6 +34,12 @@ · 33 unmodified lines | ||
| 34 | 34 | #include "ScriptValueIterator.h" |
| 35 | 35 | #include "ScriptEngineLogging.h" |
| 36 | 36 | |
| 37 | +#define CONVERSIONS_OPTIMIZED_FOR_V8 | |
| 38 | + | |
| 39 | +#ifdef CONVERSIONS_OPTIMIZED_FOR_V8 | |
| 40 | +#include "v8/FastScriptValueUtils.h" | |
| 41 | +#endif | |
| 42 | + | |
| 37 | 43 | bool isListOfStrings(const ScriptValue& arg) { |
| 38 | 44 | if (!arg.isArray()) { |
| 39 | 45 | return false; |
| @@ -59,7 +65,11 @@ void registerMetaTypes(ScriptEngine* engine) { · 19 unmodified lines | ||
| 59 | 65 | scriptRegisterMetaType<QVector3D, qVector3DToScriptValue, qVector3DFromScriptValue>(engine); |
| 60 | 66 | |
| 61 | 67 | scriptRegisterMetaType<glm::vec2, vec2ToScriptValue, vec2FromScriptValue>(engine); |
| 68 | +#ifdef CONVERSIONS_OPTIMIZED_FOR_V8 | |
| 69 | + scriptRegisterMetaType<glm::vec3, vec3ToScriptValueFast, vec3FromScriptValueFast>(engine); | |
| 70 | +#else | |
| 62 | 71 | scriptRegisterMetaType<glm::vec3, vec3ToScriptValue, vec3FromScriptValue>(engine); |
| 72 | +#endif | |
| 63 | 73 | scriptRegisterMetaType<glm::u8vec3, u8vec3ToScriptValue, u8vec3FromScriptValue>(engine); |
| 64 | 74 | scriptRegisterMetaType<glm::vec4, vec4toScriptValue, vec4FromScriptValue>(engine); |
| 65 | 75 | scriptRegisterMetaType<glm::quat, quatToScriptValue, quatFromScriptValue>(engine); |
| @@ -117,7 +127,11 @@ bool qVector2DFromScriptValue(const ScriptValue& object, QVector2D& qVector2D) { · 51 unmodified lines | ||
| 117 | 127 | |
| 118 | 128 | ScriptValue qVector3DToScriptValue(ScriptEngine* engine, const QVector3D& qVector3D) { |
| 119 | 129 | glm::vec3 vec3(qVector3D.x(), qVector3D.y(), qVector3D.z()); |
| 130 | +#ifdef CONVERSIONS_OPTIMIZED_FOR_V8 | |
| 131 | + return vec3ToScriptValueFast(engine, vec3); | |
| 132 | +#else | |
| 120 | 133 | return vec3ToScriptValue(engine, vec3); |
| 134 | +#endif | |
| 121 | 135 | } |
| 122 | 136 | |
| 123 | 137 | bool qVector3DFromScriptValue(const ScriptValue& object, QVector3D& qVector3D) { |
| @@ -456,7 +470,11 @@ ScriptValue qVectorVec3ColorToScriptValue(ScriptEngine* engine, const QVector<gl · 332 unmodified lines | ||
| 456 | 470 | ScriptValue qVectorVec3ToScriptValue(ScriptEngine* engine, const QVector<glm::vec3>& vector) { |
| 457 | 471 | ScriptValue array = engine->newArray(); |
| 458 | 472 | for (int i = 0; i < vector.size(); i++) { |
| 473 | +#ifdef CONVERSIONS_OPTIMIZED_FOR_V8 | |
| 474 | + array.setProperty(i, vec3ToScriptValueFast(engine, vector.at(i))); | |
| 475 | +#else | |
| 459 | 476 | array.setProperty(i, vec3ToScriptValue(engine, vector.at(i))); |
| 477 | +#endif | |
| 460 | 478 | } |
| 461 | 479 | return array; |
| 462 | 480 | } |
| @@ -776,9 +794,17 @@ bool qURLFromScriptValue(const ScriptValue& object, QUrl& url) { · 313 unmodified lines | ||
| 776 | 794 | |
| 777 | 795 | ScriptValue pickRayToScriptValue(ScriptEngine* engine, const PickRay& pickRay) { |
| 778 | 796 | ScriptValue obj = engine->newObject(); |
| 797 | +#ifdef CONVERSIONS_OPTIMIZED_FOR_V8 | |
| 798 | + ScriptValue origin = vec3ToScriptValueFast(engine, pickRay.origin); | |
| 799 | +#else | |
| 779 | 800 | ScriptValue origin = vec3ToScriptValue(engine, pickRay.origin); |
| 801 | +#endif | |
| 780 | 802 | obj.setProperty("origin", origin); |
| 803 | +#ifdef CONVERSIONS_OPTIMIZED_FOR_V8 | |
| 804 | + ScriptValue direction = vec3ToScriptValueFast(engine, pickRay.direction); | |
| 805 | +#else | |
| 781 | 806 | ScriptValue direction = vec3ToScriptValue(engine, pickRay.direction); |
| 807 | +#endif | |
| 782 | 808 | obj.setProperty("direction", direction); |
| 783 | 809 | return obj; |
| 784 | 810 | } |
| @@ -824,9 +850,15 @@ ScriptValue collisionToScriptValue(ScriptEngine* engine, const Collision& collis · 39 unmodified lines | ||
| 824 | 850 | obj.setProperty("type", collision.type); |
| 825 | 851 | obj.setProperty("idA", quuidToScriptValue(engine, collision.idA)); |
| 826 | 852 | obj.setProperty("idB", quuidToScriptValue(engine, collision.idB)); |
| 853 | +#ifdef CONVERSIONS_OPTIMIZED_FOR_V8 | |
| 854 | + obj.setProperty("penetration", vec3ToScriptValueFast(engine, collision.penetration)); | |
| 855 | + obj.setProperty("contactPoint", vec3ToScriptValueFast(engine, collision.contactPoint)); | |
| 856 | + obj.setProperty("velocityChange", vec3ToScriptValueFast(engine, collision.velocityChange)); | |
| 857 | +#else | |
| 827 | 858 | obj.setProperty("penetration", vec3ToScriptValue(engine, collision.penetration)); |
| 828 | 859 | obj.setProperty("contactPoint", vec3ToScriptValue(engine, collision.contactPoint)); |
| 829 | 860 | obj.setProperty("velocityChange", vec3ToScriptValue(engine, collision.velocityChange)); |
| 861 | +#endif | |
| 830 | 862 | return obj; |
| 831 | 863 | } |
| 832 | 864 | |