Added flag to ensure mouse event signals are not connected twice

This commit is contained in:
RebeccaStankus 2019-10-08 11:55:14 -07:00
parent e1de615cbe
commit 092424569d
2 changed files with 48 additions and 38 deletions

View file

@ -157,6 +157,7 @@ render::ItemID EntityTreeRenderer::renderableIdForEntityId(const EntityItemID& i
}
int EntityTreeRenderer::_entitiesScriptEngineCount = 0;
bool _signalsConnected = false;
void EntityTreeRenderer::resetEntitiesScriptEngine() {
_entitiesScriptEngine = scriptEngineFactory(ScriptEngine::ENTITY_CLIENT_SCRIPT, NO_SCRIPT,
@ -168,6 +169,8 @@ void EntityTreeRenderer::resetEntitiesScriptEngine() {
entityScriptingInterface->setEntitiesScriptEngine(entitiesScriptEngineProvider);
// Connect mouse events to entity script callbacks
if (!_signalsConnected) {
connect(entityScriptingInterface.data(), &EntityScriptingInterface::mousePressOnEntity, _entitiesScriptEngine.data(), [&](const EntityItemID& entityID, const PointerEvent& event) {
_entitiesScriptEngine->callEntityScriptMethod(entityID, "mousePressOnEntity", event);
});
@ -209,6 +212,9 @@ void EntityTreeRenderer::resetEntitiesScriptEngine() {
entity->setScriptHasFinishedPreload(true);
}
});
_signalsConnected = true;
}
}
void EntityTreeRenderer::stopDomainAndNonOwnedEntities() {

View file

@ -595,6 +595,10 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js");
Controller.disableMapping(MAPPING_NAME);
_this.pointerManager.removePointers();
Pointers.removePointer(this.mouseRayPointer);
Overlays.mouseReleaseOnOverlay.disconnect(mouseReleaseOnOverlay);
Overlays.mousePressOnOverlay.disconnect(mousePress);
Entities.mousePressOnEntity.disconnect(mousePress);
Messages.messageReceived.disconnect(controllerDispatcher.handleMessage);
};
}