From 57de55c5ce42214e0fa8bfc0916fbaf82b2d9703 Mon Sep 17 00:00:00 2001
From: Olivier Prat <olivier@zvork.fr>
Date: Thu, 4 Apr 2019 10:15:38 +0200
Subject: [PATCH] Fixed crash in lasterpointer

---
 interface/src/raypick/LaserPointer.cpp | 23 +++++++++++++----------
 1 file changed, 13 insertions(+), 10 deletions(-)

diff --git a/interface/src/raypick/LaserPointer.cpp b/interface/src/raypick/LaserPointer.cpp
index bd746c9090..12daae0351 100644
--- a/interface/src/raypick/LaserPointer.cpp
+++ b/interface/src/raypick/LaserPointer.cpp
@@ -233,16 +233,19 @@ PointerEvent LaserPointer::buildPointerEvent(const PickedObject& target, const P
 
     // If we just started triggering and we haven't moved too much, don't update intersection and pos2D
     TriggerState& state = hover ? _latestState : _states[button];
-    float sensorToWorldScale = DependencyManager::get<AvatarManager>()->getMyAvatar()->getSensorToWorldScale();
-    float deadspotSquared = TOUCH_PRESS_TO_MOVE_DEADSPOT_SQUARED * sensorToWorldScale * sensorToWorldScale;
-    bool withinDeadspot = usecTimestampNow() - state.triggerStartTime < POINTER_MOVE_DELAY && glm::distance2(pos2D, state.triggerPos2D) < deadspotSquared;
-    if ((state.triggering || state.wasTriggering) && !state.deadspotExpired && withinDeadspot) {
-        pos2D = state.triggerPos2D;
-        intersection = state.intersection;
-        surfaceNormal = state.surfaceNormal;
-    }
-    if (!withinDeadspot) {
-        state.deadspotExpired = true;
+    auto avatar = DependencyManager::get<AvatarManager>()->getMyAvatar();
+    if (avatar) {
+        float sensorToWorldScale = avatar->getSensorToWorldScale();
+        float deadspotSquared = TOUCH_PRESS_TO_MOVE_DEADSPOT_SQUARED * sensorToWorldScale * sensorToWorldScale;
+        bool withinDeadspot = usecTimestampNow() - state.triggerStartTime < POINTER_MOVE_DELAY && glm::distance2(pos2D, state.triggerPos2D) < deadspotSquared;
+        if ((state.triggering || state.wasTriggering) && !state.deadspotExpired && withinDeadspot) {
+            pos2D = state.triggerPos2D;
+            intersection = state.intersection;
+            surfaceNormal = state.surfaceNormal;
+        }
+        if (!withinDeadspot) {
+            state.deadspotExpired = true;
+        }
     }
 
     return PointerEvent(pos2D, intersection, surfaceNormal, direction);