Showing the changes to libraries/script-engine/src/ScriptValueUtils.cpp (1 of 11 files). Show all
Unified · Split
| @@ -188,6 +188,7 @@ ScriptValue vec3ColorToScriptValue(ScriptEngine* engine, const glm::vec3& vec3) · 187 unmodified lines | |||
| 188 | return value; | 188 | return value; |
| 189 | } | 189 | } |
| 190 | 190 | ||
| 191 | // V8TODO: add similar checks to rest of the conversions | ||
| 191 | bool vec3FromScriptValue(const ScriptValue& object, glm::vec3& vec3) { | 192 | bool vec3FromScriptValue(const ScriptValue& object, glm::vec3& vec3) { |
| 192 | if (object.isNumber()) { | 193 | if (object.isNumber()) { |
| 193 | vec3 = glm::vec3(object.toVariant().toFloat()); | 194 | vec3 = glm::vec3(object.toVariant().toFloat()); |
| @@ -197,6 +198,8 @@ bool vec3FromScriptValue(const ScriptValue& object, glm::vec3& vec3) { · 3 unmodified lines | |||
| 197 | vec3.x = qColor.red(); | 198 | vec3.x = qColor.red(); |
| 198 | vec3.y = qColor.green(); | 199 | vec3.y = qColor.green(); |
| 199 | vec3.z = qColor.blue(); | 200 | vec3.z = qColor.blue(); |
| 201 | } else { | ||
| 202 | return false; | ||
| 200 | } | 203 | } |
| 201 | } else if (object.isArray()) { | 204 | } else if (object.isArray()) { |
| 202 | QVariantList list = object.toVariant().toList(); | 205 | QVariantList list = object.toVariant().toList(); |
| @@ -204,8 +207,10 @@ bool vec3FromScriptValue(const ScriptValue& object, glm::vec3& vec3) { · 1 unmodified line | |||
| 204 | vec3.x = list[0].toFloat(); | 207 | vec3.x = list[0].toFloat(); |
| 205 | vec3.y = list[1].toFloat(); | 208 | vec3.y = list[1].toFloat(); |
| 206 | vec3.z = list[2].toFloat(); | 209 | vec3.z = list[2].toFloat(); |
| 210 | } else { | ||
| 211 | return false; | ||
| 207 | } | 212 | } |
| 208 | } else { | 213 | } else if (object.isObject()) { |
| 209 | ScriptValue x = object.property("x"); | 214 | ScriptValue x = object.property("x"); |
| 210 | if (!x.isValid()) { | 215 | if (!x.isValid()) { |
| 211 | x = object.property("r"); | 216 | x = object.property("r"); |
| @@ -230,9 +235,15 @@ bool vec3FromScriptValue(const ScriptValue& object, glm::vec3& vec3) { · 18 unmodified lines | |||
| 230 | z = object.property("blue"); | 235 | z = object.property("blue"); |
| 231 | } | 236 | } |
| 232 | 237 | ||
| 238 | if (!x.isValid() || !y.isValid() || !z.isValid()) { | ||
| 239 | return false; | ||
| 240 | } | ||
| 241 | |||
| 233 | vec3.x = x.toVariant().toFloat(); | 242 | vec3.x = x.toVariant().toFloat(); |
| 234 | vec3.y = y.toVariant().toFloat(); | 243 | vec3.y = y.toVariant().toFloat(); |
| 235 | vec3.z = z.toVariant().toFloat(); | 244 | vec3.z = z.toVariant().toFloat(); |
| 245 | } else { | ||
| 246 | return false; | ||
| 236 | } | 247 | } |
| 237 | return true; | 248 | return true; |
| 238 | } | 249 | } |
| @@ -446,7 +457,18 @@ ScriptValue quatToScriptValue(ScriptEngine* engine, const glm::quat& quat) { · 207 unmodified lines | |||
| 446 | return obj; | 457 | return obj; |
| 447 | } | 458 | } |
| 448 | 459 | ||
| 460 | // V8TODO: add similar check to other conversions | ||
| 449 | bool quatFromScriptValue(const ScriptValue& object, glm::quat& quat) { | 461 | bool quatFromScriptValue(const ScriptValue& object, glm::quat& quat) { |
| 462 | if (!object.isObject()) { | ||
| 463 | return false; | ||
| 464 | } | ||
| 465 | QVariant x = object.property("x").toVariant(); | ||
| 466 | QVariant y = object.property("y").toVariant(); | ||
| 467 | QVariant z = object.property("z").toVariant(); | ||
| 468 | QVariant w = object.property("w").toVariant(); | ||
| 469 | if (!x.isValid() || !y.isValid() || !z.isValid() || !w.isValid()) { | ||
| 470 | return false; | ||
| 471 | } | ||
| 450 | quat.x = object.property("x").toVariant().toFloat(); | 472 | quat.x = object.property("x").toVariant().toFloat(); |
| 451 | quat.y = object.property("y").toVariant().toFloat(); | 473 | quat.y = object.property("y").toVariant().toFloat(); |
| 452 | quat.z = object.property("z").toVariant().toFloat(); | 474 | quat.z = object.property("z").toVariant().toFloat(); |