Provide basic conversions to/from SharedObjectPointer (still have to work out

how to handle reference counting correctly).
This commit is contained in:
Andrzej Kapolka 2014-07-15 17:58:31 -07:00
parent a13d8559e6
commit 2d4134afaf
3 changed files with 13 additions and 2 deletions

View file

@ -129,10 +129,19 @@ QList<const QMetaObject*> Bitstream::getMetaObjectSubClasses(const QMetaObject*
return getMetaObjectSubClasses().values(metaObject);
}
void Bitstream::configureScriptEngine(QScriptEngine* engine) {
QScriptValue sharedObjectPointerToScriptValue(QScriptEngine* engine, const SharedObjectPointer& pointer) {
return pointer ? engine->newQObject(pointer.data()) : engine->nullValue();
}
void sharedObjectPointerFromScriptValue(const QScriptValue& object, SharedObjectPointer& pointer) {
pointer = qobject_cast<SharedObject*>(object.toQObject());
}
void Bitstream::registerTypes(QScriptEngine* engine) {
foreach (const QMetaObject* metaObject, getMetaObjects()) {
engine->globalObject().setProperty(metaObject->className(), engine->newQMetaObject(metaObject));
}
qScriptRegisterMetaType(engine, sharedObjectPointerToScriptValue, sharedObjectPointerFromScriptValue);
}
Bitstream::Bitstream(QDataStream& underlying, MetadataType metadataType, GenericsMode genericsMode, QObject* parent) :

View file

@ -323,7 +323,7 @@ public:
/// Configures the supplied script engine with our registered meta-objects, allowing all of them to be instantiated from
/// scripts.
static void configureScriptEngine(QScriptEngine* engine);
static void registerTypes(QScriptEngine* engine);
enum MetadataType { NO_METADATA, HASH_METADATA, FULL_METADATA };

View file

@ -20,6 +20,7 @@
#include <AudioInjector.h>
#include <AudioRingBuffer.h>
#include <AvatarData.h>
#include <Bitstream.h>
#include <CollisionInfo.h>
#include <ModelsScriptingInterface.h>
#include <NetworkAccessManager.h>
@ -229,6 +230,7 @@ void ScriptEngine::init() {
registerMenuItemProperties(&_engine);
registerAnimationTypes(&_engine);
registerAvatarTypes(&_engine);
Bitstream::registerTypes(&_engine);
qScriptRegisterMetaType(&_engine, ParticlePropertiesToScriptValue, ParticlePropertiesFromScriptValue);
qScriptRegisterMetaType(&_engine, ParticleIDtoScriptValue, ParticleIDfromScriptValue);