mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 08:49:05 +02:00
Update ScriptEngine::entityScriptingInterface to be static pointer
Statically allocating the EntityScriptingInterface means we can't make sure it is initialized AFTER NodeList has been initialized
This commit is contained in:
parent
9a302eebed
commit
a443157dd7
2 changed files with 21 additions and 13 deletions
|
@ -44,7 +44,7 @@
|
||||||
#include "MIDIEvent.h"
|
#include "MIDIEvent.h"
|
||||||
|
|
||||||
|
|
||||||
EntityScriptingInterface ScriptEngine::_entityScriptingInterface;
|
EntityScriptingInterface* ScriptEngine::_entityScriptingInterface;
|
||||||
|
|
||||||
static QScriptValue debugPrint(QScriptContext* context, QScriptEngine* engine){
|
static QScriptValue debugPrint(QScriptContext* context, QScriptEngine* engine){
|
||||||
qDebug() << "script:print()<<" << context->argument(0).toString();
|
qDebug() << "script:print()<<" << context->argument(0).toString();
|
||||||
|
@ -73,6 +73,13 @@ void inputControllerFromScriptValue(const QScriptValue &object, AbstractInputCon
|
||||||
out = qobject_cast<AbstractInputController*>(object.toQObject());
|
out = qobject_cast<AbstractInputController*>(object.toQObject());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EntityScriptingInterface* ScriptEngine::getEntityScriptingInterface() {
|
||||||
|
if (ScriptEngine::_entityScriptingInterface == nullptr) {
|
||||||
|
ScriptEngine::_entityScriptingInterface = new EntityScriptingInterface();
|
||||||
|
}
|
||||||
|
return ScriptEngine::_entityScriptingInterface;
|
||||||
|
}
|
||||||
|
|
||||||
ScriptEngine::ScriptEngine(const QString& scriptContents, const QString& fileNameString,
|
ScriptEngine::ScriptEngine(const QString& scriptContents, const QString& fileNameString,
|
||||||
AbstractControllerScriptingInterface* controllerScriptingInterface) :
|
AbstractControllerScriptingInterface* controllerScriptingInterface) :
|
||||||
|
|
||||||
|
@ -97,6 +104,7 @@ ScriptEngine::ScriptEngine(const QString& scriptContents, const QString& fileNam
|
||||||
_isUserLoaded(false),
|
_isUserLoaded(false),
|
||||||
_arrayBufferClass(new ArrayBufferClass(this))
|
_arrayBufferClass(new ArrayBufferClass(this))
|
||||||
{
|
{
|
||||||
|
getEntityScriptingInterface();
|
||||||
_allScriptsMutex.lock();
|
_allScriptsMutex.lock();
|
||||||
_allKnownScriptEngines.insert(this);
|
_allKnownScriptEngines.insert(this);
|
||||||
_allScriptsMutex.unlock();
|
_allScriptsMutex.unlock();
|
||||||
|
@ -314,7 +322,7 @@ void ScriptEngine::init() {
|
||||||
|
|
||||||
auto sceneScriptingInterface = DependencyManager::set<SceneScriptingInterface>();
|
auto sceneScriptingInterface = DependencyManager::set<SceneScriptingInterface>();
|
||||||
|
|
||||||
_entityScriptingInterface.init();
|
_entityScriptingInterface->init();
|
||||||
|
|
||||||
// register various meta-types
|
// register various meta-types
|
||||||
registerMetaTypes(this);
|
registerMetaTypes(this);
|
||||||
|
@ -352,7 +360,7 @@ void ScriptEngine::init() {
|
||||||
registerGlobalObject("Script", this);
|
registerGlobalObject("Script", this);
|
||||||
registerGlobalObject("Audio", &AudioScriptingInterface::getInstance());
|
registerGlobalObject("Audio", &AudioScriptingInterface::getInstance());
|
||||||
registerGlobalObject("Controller", _controllerScriptingInterface);
|
registerGlobalObject("Controller", _controllerScriptingInterface);
|
||||||
registerGlobalObject("Entities", &_entityScriptingInterface);
|
registerGlobalObject("Entities", _entityScriptingInterface);
|
||||||
registerGlobalObject("Quat", &_quatLibrary);
|
registerGlobalObject("Quat", &_quatLibrary);
|
||||||
registerGlobalObject("Vec3", &_vec3Library);
|
registerGlobalObject("Vec3", &_vec3Library);
|
||||||
registerGlobalObject("Uuid", &_uuidLibrary);
|
registerGlobalObject("Uuid", &_uuidLibrary);
|
||||||
|
@ -489,13 +497,13 @@ void ScriptEngine::run() {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!_isFinished && _entityScriptingInterface.getEntityPacketSender()->serversExist()) {
|
if (!_isFinished && _entityScriptingInterface->getEntityPacketSender()->serversExist()) {
|
||||||
// release the queue of edit entity messages.
|
// release the queue of edit entity messages.
|
||||||
_entityScriptingInterface.getEntityPacketSender()->releaseQueuedMessages();
|
_entityScriptingInterface->getEntityPacketSender()->releaseQueuedMessages();
|
||||||
|
|
||||||
// since we're in non-threaded mode, call process so that the packets are sent
|
// since we're in non-threaded mode, call process so that the packets are sent
|
||||||
if (!_entityScriptingInterface.getEntityPacketSender()->isThreaded()) {
|
if (!_entityScriptingInterface->getEntityPacketSender()->isThreaded()) {
|
||||||
_entityScriptingInterface.getEntityPacketSender()->process();
|
_entityScriptingInterface->getEntityPacketSender()->process();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -622,13 +630,13 @@ void ScriptEngine::run() {
|
||||||
// kill the avatar identity timer
|
// kill the avatar identity timer
|
||||||
delete _avatarIdentityTimer;
|
delete _avatarIdentityTimer;
|
||||||
|
|
||||||
if (_entityScriptingInterface.getEntityPacketSender()->serversExist()) {
|
if (_entityScriptingInterface->getEntityPacketSender()->serversExist()) {
|
||||||
// release the queue of edit entity messages.
|
// release the queue of edit entity messages.
|
||||||
_entityScriptingInterface.getEntityPacketSender()->releaseQueuedMessages();
|
_entityScriptingInterface->getEntityPacketSender()->releaseQueuedMessages();
|
||||||
|
|
||||||
// since we're in non-threaded mode, call process so that the packets are sent
|
// since we're in non-threaded mode, call process so that the packets are sent
|
||||||
if (!_entityScriptingInterface.getEntityPacketSender()->isThreaded()) {
|
if (!_entityScriptingInterface->getEntityPacketSender()->isThreaded()) {
|
||||||
_entityScriptingInterface.getEntityPacketSender()->process();
|
_entityScriptingInterface->getEntityPacketSender()->process();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -47,7 +47,7 @@ public:
|
||||||
~ScriptEngine();
|
~ScriptEngine();
|
||||||
|
|
||||||
/// Access the EntityScriptingInterface in order to initialize it with a custom packet sender and jurisdiction listener
|
/// Access the EntityScriptingInterface in order to initialize it with a custom packet sender and jurisdiction listener
|
||||||
static EntityScriptingInterface* getEntityScriptingInterface() { return &_entityScriptingInterface; }
|
static EntityScriptingInterface* getEntityScriptingInterface();
|
||||||
|
|
||||||
ArrayBufferClass* getArrayBufferClass() { return _arrayBufferClass; }
|
ArrayBufferClass* getArrayBufferClass() { return _arrayBufferClass; }
|
||||||
|
|
||||||
|
@ -153,7 +153,7 @@ private:
|
||||||
QObject* setupTimerWithInterval(const QScriptValue& function, int intervalMS, bool isSingleShot);
|
QObject* setupTimerWithInterval(const QScriptValue& function, int intervalMS, bool isSingleShot);
|
||||||
void stopTimer(QTimer* timer);
|
void stopTimer(QTimer* timer);
|
||||||
|
|
||||||
static EntityScriptingInterface _entityScriptingInterface;
|
static EntityScriptingInterface* _entityScriptingInterface;
|
||||||
|
|
||||||
AbstractControllerScriptingInterface* _controllerScriptingInterface;
|
AbstractControllerScriptingInterface* _controllerScriptingInterface;
|
||||||
AvatarData* _avatarData;
|
AvatarData* _avatarData;
|
||||||
|
|
Loading…
Reference in a new issue