From e68f9499fa018884784b6263a577602008036e01 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Thu, 20 Jul 2017 16:51:00 -0700 Subject: [PATCH] Add hover/unhover handlers to context overlays --- interface/src/Application.cpp | 16 ++++++++++--- .../ui/overlays/ContextOverlayInterface.cpp | 23 ++++++++++++++++++- .../src/ui/overlays/ContextOverlayInterface.h | 2 ++ 3 files changed, 37 insertions(+), 4 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 7cf5037f57..699ddfcb2d 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1348,9 +1348,19 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo }); connect(overlays, - SIGNAL(mousePressOnOverlay(const OverlayID&, const PointerEvent&)), - DependencyManager::get().data(), - SLOT(clickContextOverlay(const OverlayID&, const PointerEvent&))); + SIGNAL(mousePressOnOverlay(const OverlayID&, const PointerEvent&)), + DependencyManager::get().data(), + SLOT(clickContextOverlay(const OverlayID&, const PointerEvent&))); + + connect(overlays, + SIGNAL(hoverEnterOverlay(const OverlayID&, const PointerEvent&)), + DependencyManager::get().data(), + SLOT(hoverEnterContextOverlay(const OverlayID&, const PointerEvent&))); + + connect(overlays, + SIGNAL(hoverLeaveOverlay(const OverlayID&, const PointerEvent&)), + DependencyManager::get().data(), + SLOT(hoverLeaveContextOverlay(const OverlayID&, const PointerEvent&))); // Add periodic checks to send user activity data static int CHECK_NEARBY_AVATARS_INTERVAL_MS = 10000; diff --git a/interface/src/ui/overlays/ContextOverlayInterface.cpp b/interface/src/ui/overlays/ContextOverlayInterface.cpp index 50fcf50b90..78ca0d591c 100644 --- a/interface/src/ui/overlays/ContextOverlayInterface.cpp +++ b/interface/src/ui/overlays/ContextOverlayInterface.cpp @@ -69,7 +69,7 @@ bool ContextOverlayInterface::createOrDestroyContextOverlay(const EntityItemID& if (_contextOverlayID == UNKNOWN_OVERLAY_ID || !qApp->getOverlays().isAddedOverlay(_contextOverlayID)) { _contextOverlay = std::make_shared(); _contextOverlay->setAlpha(0.85f); - _contextOverlay->setPulseMin(0.75f); + _contextOverlay->setPulseMin(0.6f); _contextOverlay->setPulseMax(1.0f); _contextOverlay->setColorPulse(1.0f); _contextOverlay->setIgnoreRayIntersection(false); @@ -130,6 +130,27 @@ void ContextOverlayInterface::clickContextOverlay(const OverlayID& overlayID, co destroyContextOverlay(_currentEntityWithContextOverlay, PointerEvent()); } } + +void ContextOverlayInterface::hoverEnterContextOverlay(const OverlayID& overlayID, const PointerEvent& event) { + if (_contextOverlayID != UNKNOWN_OVERLAY_ID && _contextOverlay) { + qCDebug(context_overlay) << "Started hovering over Context Overlay. Overlay ID:" << overlayID; + _contextOverlay->setColor({ 0xFF, 0xFF, 0xFF }); + _contextOverlay->setColorPulse(0.0f); + _contextOverlay->setPulsePeriod(0.0f); + _contextOverlay->setAlpha(1.0f); + } +} + +void ContextOverlayInterface::hoverLeaveContextOverlay(const OverlayID& overlayID, const PointerEvent& event) { + if (_contextOverlayID != UNKNOWN_OVERLAY_ID && _contextOverlay) { + qCDebug(context_overlay) << "Stopped hovering over Context Overlay. Overlay ID:" << overlayID; + _contextOverlay->setColor({ 0xFF, 0xFF, 0xFF }); + _contextOverlay->setColorPulse(1.0f); + _contextOverlay->setPulsePeriod(1.0f); + _contextOverlay->setAlpha(0.85f); + } +} + static const QString MARKETPLACE_BASE_URL = "http://metaverse.highfidelity.com/marketplace/items/"; void ContextOverlayInterface::openMarketplace() { diff --git a/interface/src/ui/overlays/ContextOverlayInterface.h b/interface/src/ui/overlays/ContextOverlayInterface.h index 5ba70d7614..f06f85eab7 100644 --- a/interface/src/ui/overlays/ContextOverlayInterface.h +++ b/interface/src/ui/overlays/ContextOverlayInterface.h @@ -58,6 +58,8 @@ public slots: bool destroyContextOverlay(const EntityItemID& entityItemID, const PointerEvent& event); bool destroyContextOverlay(const EntityItemID& entityItemID); void clickContextOverlay(const OverlayID& overlayID, const PointerEvent& event); + void hoverEnterContextOverlay(const OverlayID& overlayID, const PointerEvent& event); + void hoverLeaveContextOverlay(const OverlayID& overlayID, const PointerEvent& event); private: bool _verboseLogging { true };