Showing the changes to libraries/script-engine/src/ScriptEngine.cpp (1 of 3 files). Show all
Unified · Split
| @@ -270,6 +270,20 @@ static void resultHandlerFromScriptValue(const QScriptValue& value, AnimVariantR · 269 unmodified lines | ||
| 270 | 270 | assert(false); |
| 271 | 271 | } |
| 272 | 272 | |
| 273 | +// Templated qScriptRegisterMetaType fails to compile with raw pointers | |
| 274 | +using ScriptableResourceRawPtr = ScriptableResource*; | |
| 275 | + | |
| 276 | +static QScriptValue scriptableResourceToScriptValue(QScriptEngine* engine, const ScriptableResourceRawPtr& resource) { | |
| 277 | + auto object = engine->newQObject( | |
| 278 | + const_cast<ScriptableResourceRawPtr>(resource), | |
| 279 | + QScriptEngine::ScriptOwnership); | |
| 280 | + return object; | |
| 281 | +} | |
| 282 | + | |
| 283 | +static void scriptableResourceFromScriptValue(const QScriptValue& value, ScriptableResourceRawPtr& resource) { | |
| 284 | + resource = static_cast<ScriptableResourceRawPtr>(value.toQObject()); | |
| 285 | +} | |
| 286 | + | |
| 273 | 287 | void ScriptEngine::init() { |
| 274 | 288 | if (_isInitialized) { |
| 275 | 289 | return; // only initialize once |
| @@ -332,6 +346,8 @@ void ScriptEngine::init() { · 56 unmodified lines | ||
| 332 | 346 | qScriptRegisterMetaType(this, animVarMapToScriptValue, animVarMapFromScriptValue); |
| 333 | 347 | qScriptRegisterMetaType(this, resultHandlerToScriptValue, resultHandlerFromScriptValue); |
| 334 | 348 | |
| 349 | + qScriptRegisterMetaType(this, scriptableResourceToScriptValue, scriptableResourceFromScriptValue); | |
| 350 | + | |
| 335 | 351 | // constants |
| 336 | 352 | globalObject().setProperty("TREE_SCALE", newVariant(QVariant(TREE_SCALE))); |
| 337 | 353 | |