mirror of
https://thingvellir.net/git/overte
synced 2025-03-27 23:52:03 +01:00
Add registerGetterSetter to remove need for getEngine()
This commit is contained in:
parent
65fd2a7724
commit
9e684a0bc8
3 changed files with 26 additions and 13 deletions
|
@ -3407,16 +3407,13 @@ ScriptEngine* Application::loadScript(const QString& scriptName, bool loadScript
|
|||
|
||||
scriptEngine->registerGlobalObject("Overlays", &_overlays);
|
||||
|
||||
QScriptEngine &qScriptEngine = scriptEngine->getEngine();
|
||||
QScriptValue getLocationFunction = qScriptEngine.newFunction(LocationScriptingInterface::locationGetter);
|
||||
QScriptValue setLocationFunction = qScriptEngine.newFunction(LocationScriptingInterface::locationSetter, 1);
|
||||
qScriptEngine.globalObject().setProperty("location", getLocationFunction, QScriptValue::PropertyGetter);
|
||||
qScriptEngine.globalObject().setProperty("location", setLocationFunction, QScriptValue::PropertySetter);
|
||||
QScriptValue windowValue = scriptEngine->registerGlobalObject("Window", WindowScriptingInterface::getInstance());
|
||||
scriptEngine->registerGetterSetter("location", LocationScriptingInterface::locationGetter,
|
||||
LocationScriptingInterface::locationSetter, windowValue);
|
||||
|
||||
QScriptValue windowValue = qScriptEngine.newQObject(WindowScriptingInterface::getInstance());
|
||||
qScriptEngine.globalObject().setProperty("Window", windowValue);
|
||||
windowValue.setProperty("location", getLocationFunction, QScriptValue::PropertyGetter);
|
||||
windowValue.setProperty("location", setLocationFunction, QScriptValue::PropertySetter);
|
||||
// register `location` on the global object.
|
||||
scriptEngine->registerGetterSetter("location", LocationScriptingInterface::locationGetter,
|
||||
LocationScriptingInterface::locationSetter);
|
||||
|
||||
scriptEngine->registerGlobalObject("Menu", MenuScriptingInterface::getInstance());
|
||||
scriptEngine->registerGlobalObject("Settings", SettingsScriptingInterface::getInstance());
|
||||
|
|
|
@ -248,10 +248,26 @@ void ScriptEngine::init() {
|
|||
_particlesScriptingInterface.getParticlePacketSender()->setProcessCallIntervalHint(SCRIPT_DATA_CALLBACK_USECS);
|
||||
}
|
||||
|
||||
void ScriptEngine::registerGlobalObject(const QString& name, QObject* object) {
|
||||
QScriptValue ScriptEngine::registerGlobalObject(const QString& name, QObject* object) {
|
||||
if (object) {
|
||||
QScriptValue value = _engine.newQObject(object);
|
||||
_engine.globalObject().setProperty(name, value);
|
||||
return value;
|
||||
}
|
||||
return QScriptValue::NullValue;
|
||||
}
|
||||
|
||||
void ScriptEngine::registerGetterSetter(const QString& name, QScriptEngine::FunctionSignature getter,
|
||||
QScriptEngine::FunctionSignature setter, QScriptValue object) {
|
||||
QScriptValue setterFunction = _engine.newFunction(setter, 1);
|
||||
QScriptValue getterFunction = _engine.newFunction(getter);
|
||||
|
||||
if (object.isNull()) {
|
||||
object.setProperty(name, setterFunction, QScriptValue::PropertySetter);
|
||||
object.setProperty(name, getterFunction, QScriptValue::PropertyGetter);
|
||||
} else {
|
||||
_engine.globalObject().setProperty(name, setterFunction, QScriptValue::PropertySetter);
|
||||
_engine.globalObject().setProperty(name, getterFunction, QScriptValue::PropertyGetter);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -58,7 +58,9 @@ public:
|
|||
const QString& getScriptName() const { return _scriptName; }
|
||||
void cleanupMenuItems();
|
||||
|
||||
void registerGlobalObject(const QString& name, QObject* object); /// registers a global object by name
|
||||
QScriptValue registerGlobalObject(const QString& name, QObject* object); /// registers a global object by name
|
||||
void registerGetterSetter(const QString& name, QScriptEngine::FunctionSignature getter,
|
||||
QScriptEngine::FunctionSignature setter, QScriptValue object = QScriptValue::NullValue);
|
||||
|
||||
Q_INVOKABLE void setIsAvatar(bool isAvatar);
|
||||
bool isAvatar() const { return _isAvatar; }
|
||||
|
@ -69,8 +71,6 @@ public:
|
|||
bool isListeningToAudioStream() const { return _isListeningToAudioStream; }
|
||||
void setIsListeningToAudioStream(bool isListeningToAudioStream) { _isListeningToAudioStream = isListeningToAudioStream; }
|
||||
|
||||
QScriptEngine& getEngine() { return _engine; }
|
||||
|
||||
void setAvatarSound(Sound* avatarSound) { _avatarSound = avatarSound; }
|
||||
bool isPlayingAvatarSound() const { return _avatarSound != NULL; }
|
||||
|
||||
|
|
Loading…
Reference in a new issue