diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.cpp b/libraries/entities-renderer/src/EntityTreeRenderer.cpp index 33cdebafce..e5ced01b9c 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.cpp +++ b/libraries/entities-renderer/src/EntityTreeRenderer.cpp @@ -96,6 +96,8 @@ void EntityTreeRenderer::resetEntitiesScriptEngine() { }); connect(entityScriptingInterface.data(), &EntityScriptingInterface::mouseMoveOnEntity, _entitiesScriptEngine.data(), [&](const EntityItemID& entityID, const PointerEvent& event) { _entitiesScriptEngine->callEntityScriptMethod(entityID, "mouseMoveOnEntity", event); + // FIXME: this is a duplicate of mouseMoveOnEntity, but it seems like some scripts might use this naming + _entitiesScriptEngine->callEntityScriptMethod(entityID, "mouseMoveEvent", event); }); connect(entityScriptingInterface.data(), &EntityScriptingInterface::mouseReleaseOnEntity, _entitiesScriptEngine.data(), [&](const EntityItemID& entityID, const PointerEvent& event) { _entitiesScriptEngine->callEntityScriptMethod(entityID, "mouseReleaseOnEntity", event); @@ -536,6 +538,7 @@ void EntityTreeRenderer::mousePressEvent(QMouseEvent* event) { } PerformanceTimer perfTimer("EntityTreeRenderer::mousePressEvent"); + auto entityScriptingInterface = DependencyManager::get(); PickRay ray = _viewState->computePickRay(event->x(), event->y()); RayToEntityIntersectionResult rayPickResult = _getPrevRayPickResultOperator(_mouseRayPickID); if (rayPickResult.intersects) { @@ -553,7 +556,6 @@ void EntityTreeRenderer::mousePressEvent(QMouseEvent* event) { toPointerButton(*event), toPointerButtons(*event), Qt::NoModifier); // TODO -- check for modifier keys? - auto entityScriptingInterface = DependencyManager::get(); emit entityScriptingInterface->mousePressOnEntity(rayPickResult.entityID, pointerEvent); _currentClickingOnEntityID = rayPickResult.entityID; @@ -565,6 +567,7 @@ void EntityTreeRenderer::mousePressEvent(QMouseEvent* event) { } else { // If the user clicks somewhere where there is NO entity at all, we will release focus QMetaObject::invokeMethod(qApp, "setKeyboardFocusEntity", Qt::DirectConnection, Q_ARG(EntityItemID, UNKNOWN_ENTITY_ID)); + emit entityScriptingInterface->mousePressOffEntity(); } } @@ -576,6 +579,7 @@ void EntityTreeRenderer::mouseDoublePressEvent(QMouseEvent* event) { } PerformanceTimer perfTimer("EntityTreeRenderer::mouseDoublePressEvent"); + auto entityScriptingInterface = DependencyManager::get(); PickRay ray = _viewState->computePickRay(event->x(), event->y()); RayToEntityIntersectionResult rayPickResult = _getPrevRayPickResultOperator(_mouseRayPickID); if (rayPickResult.intersects) { @@ -585,7 +589,6 @@ void EntityTreeRenderer::mouseDoublePressEvent(QMouseEvent* event) { rayPickResult.surfaceNormal, ray.direction, toPointerButton(*event), toPointerButtons(*event), Qt::NoModifier); - auto entityScriptingInterface = DependencyManager::get(); emit entityScriptingInterface->mouseDoublePressOnEntity(rayPickResult.entityID, pointerEvent); _currentClickingOnEntityID = rayPickResult.entityID; @@ -593,7 +596,8 @@ void EntityTreeRenderer::mouseDoublePressEvent(QMouseEvent* event) { _lastPointerEvent = pointerEvent; _lastPointerEventValid = true; - + } else { + emit entityScriptingInterface->mouseDoublePressOffEntity(); } } @@ -662,11 +666,6 @@ void EntityTreeRenderer::mouseMoveEvent(QMouseEvent* event) { emit entityScriptingInterface->mouseMoveOnEntity(rayPickResult.entityID, pointerEvent); - // FIXME: this is a duplicate of mouseMoveOnEntity, but it seems like some scripts might use this naming - if (_entitiesScriptEngine) { - _entitiesScriptEngine->callEntityScriptMethod(rayPickResult.entityID, "mouseMoveEvent", pointerEvent); - } - // handle the hover logic... // if we were previously hovering over an entity, and this new entity is not the same as our previous entity diff --git a/libraries/entities/src/EntityScriptingInterface.h b/libraries/entities/src/EntityScriptingInterface.h index b755a2eb30..97af06ee83 100644 --- a/libraries/entities/src/EntityScriptingInterface.h +++ b/libraries/entities/src/EntityScriptingInterface.h @@ -405,6 +405,8 @@ signals: void mouseDoublePressOnEntity(const EntityItemID& entityItemID, const PointerEvent& event); void mouseMoveOnEntity(const EntityItemID& entityItemID, const PointerEvent& event); void mouseReleaseOnEntity(const EntityItemID& entityItemID, const PointerEvent& event); + void mousePressOffEntity(); + void mouseDoublePressOffEntity(); void clickDownOnEntity(const EntityItemID& entityItemID, const PointerEvent& event); void holdingClickOnEntity(const EntityItemID& entityItemID, const PointerEvent& event);