// static LLVector3d LLTracker::getTrackedPositionGlobal() { LLVector3d pos_global; switch (getTrackingStatus()) { case TRACKING_AVATAR: { LLAvatarTracker& av_tracker = LLAvatarTracker::instance(); if (av_tracker.haveTrackingInfo()) { pos_global = av_tracker.getGlobalPos(); } break; } case TRACKING_LANDMARK: if( instance()->mHasLandmarkPosition ) { pos_global = instance()->mTrackedPositionGlobal; } break; case TRACKING_LOCATION: pos_global = instance()->mTrackedPositionGlobal; break; default: break; } return pos_global; }
// static BOOL LLTracker::handleMouseDown(S32 x, S32 y) { BOOL eat_mouse_click = FALSE; // fortunately, we can always compute the tracking arrow center S32 dist_sqrd = (x - instance()->mHUDArrowCenterX) * (x - instance()->mHUDArrowCenterX) + (y - instance()->mHUDArrowCenterY) * (y - instance()->mHUDArrowCenterY); if (dist_sqrd < ARROW_OFF_RADIUS_SQRD) { /* tracking autopilot destination has been disabled -- 2004.01.09, Leviathan // turn off tracking if (gAgent.getAutoPilot()) { gAgent.stopAutoPilot(TRUE); // TRUE because cancelled by user eat_mouse_click = TRUE; } */ if (getTrackingStatus()) { instance()->stopTrackingAll(); eat_mouse_click = TRUE; } } return eat_mouse_click; }
// static virtual void LLTracker::drawHUDArrow() { if (!gSavedSettings.getBOOL("RenderTrackerBeacon")) return; if (gViewerWindow->getProgressView()->getVisible()) return; static LLUIColor map_track_color = LLUIColorTable::instance().getColor("MapTrackColor", LLColor4::white); /* tracking autopilot destination has been disabled -- 2004.01.09, Leviathan // Draw dot for autopilot target if (gAgent.getAutoPilot()) { instance()->drawMarker( gAgent.getAutoPilotTargetGlobal(), map_track_color ); return; } */ switch (getTrackingStatus()) { case TRACKING_AVATAR: // Tracked avatar if(LLAvatarTracker::instance().haveTrackingInfo()) { instance()->drawMarker( LLAvatarTracker::instance().getGlobalPos(), map_track_color ); } break; case TRACKING_LANDMARK: instance()->drawMarker( getTrackedPositionGlobal(), map_track_color ); break; case TRACKING_LOCATION: // HACK -- try to keep the location just above the terrain #if 0 // UNHACKED by CRO - keep location where the location is instance()->mTrackedPositionGlobal.mdV[VZ] = 0.9f * instance()->mTrackedPositionGlobal.mdV[VZ] + 0.1f * (LLWorld::getInstance()->resolveLandHeightGlobal(getTrackedPositionGlobal()) + 1.5f); #endif instance()->mTrackedPositionGlobal.mdV[VZ] = llclamp((F32)instance()->mTrackedPositionGlobal.mdV[VZ], LLWorld::getInstance()->resolveLandHeightGlobal(getTrackedPositionGlobal()) + 1.5f, (F32)instance()->getTrackedPositionGlobal().mdV[VZ]); instance()->drawMarker( getTrackedPositionGlobal(), map_track_color ); break; default: break; } }
// static virtual void LLTracker::drawHUDArrow() { /* tracking autopilot destination has been disabled -- 2004.01.09, Leviathan // Draw dot for autopilot target if (gAgent.getAutoPilot()) { instance()->drawMarker( gAgent.getAutoPilotTargetGlobal(), gTrackColor ); return; } */ switch (getTrackingStatus()) { case TRACKING_AVATAR: // Tracked avatar if(LLAvatarTracker::instance().haveTrackingInfo()) { instance()->drawMarker( LLAvatarTracker::instance().getGlobalPos(), gTrackColor ); } break; case TRACKING_LANDMARK: instance()->drawMarker( getTrackedPositionGlobal(), gTrackColor ); break; case TRACKING_LOCATION: // HACK -- try to keep the location just above the terrain #if 0 // UNHACKED by CRO - keep location where the location is instance()->mTrackedPositionGlobal.mdV[VZ] = 0.9f * instance()->mTrackedPositionGlobal.mdV[VZ] + 0.1f * (LLWorld::getInstance()->resolveLandHeightGlobal(getTrackedPositionGlobal()) + 1.5f); #endif instance()->mTrackedPositionGlobal.mdV[VZ] = llclamp((F32)instance()->mTrackedPositionGlobal.mdV[VZ], LLWorld::getInstance()->resolveLandHeightGlobal(getTrackedPositionGlobal()) + 1.5f, (F32)instance()->getTrackedPositionGlobal().mdV[VZ]); instance()->drawMarker( getTrackedPositionGlobal(), gTrackColor ); break; default: break; } }