lltracker.h

Go to the documentation of this file.
00001 
00032 // A singleton class for tracking stuff.
00033 //
00034 // TODO -- LLAvatarTracker functionality should probably be moved
00035 // to the LLTracker class. 
00036 
00037 
00038 #ifndef LL_LLTRACKER_H
00039 #define LL_LLTRACKER_H
00040 
00041 #include "lldarray.h"
00042 #include "llmemory.h"
00043 #include "llstring.h"
00044 #include "lluuid.h"
00045 #include "v3dmath.h"
00046 
00047 class LLHUDText;
00048 
00049 
00050 class LLTracker
00051 {
00052 public:
00053         enum ETrackingStatus
00054         {
00055                 TRACKING_NOTHING = 0,
00056                 TRACKING_AVATAR = 1,
00057                 TRACKING_LANDMARK = 2,
00058                 TRACKING_LOCATION = 3,
00059         };
00060 
00061         enum ETrackingLocationType
00062         {
00063                 LOCATION_NOTHING,
00064                 LOCATION_EVENT,
00065                 LOCATION_ITEM,
00066         };
00067 
00068         static LLTracker* instance() 
00069         { 
00070                 if (!sTrackerp)
00071                 {
00072                         sTrackerp = new LLTracker();
00073                 }
00074                 return sTrackerp; 
00075         }
00076 
00077         static void cleanupInstance() { delete sTrackerp; sTrackerp = NULL; }
00078 
00079         //static void drawTrackerArrow(); 
00080         // these are static so that they can be used a callbacks
00081         static ETrackingStatus getTrackingStatus() { return instance()->mTrackingStatus; }
00082         static ETrackingLocationType getTrackedLocationType() { return instance()->mTrackingLocationType; }
00083         static BOOL isTracking(void*) { return (BOOL) instance()->mTrackingStatus; }
00084         static void stopTracking(void*);
00085 
00086         static const LLUUID& getTrackedLandmarkAssetID() { return instance()->mTrackedLandmarkAssetID; }
00087         static const LLUUID& getTrackedLandmarkItemID()  { return instance()->mTrackedLandmarkItemID; }
00088 
00089         static void     trackAvatar( const LLUUID& avatar_id, const LLString& name );
00090         static void     trackLandmark( const LLUUID& landmark_asset_id, const LLUUID& landmark_item_id , const LLString& name);
00091         static void     trackLocation(const LLVector3d& pos, const LLString& full_name, const LLString& tooltip, ETrackingLocationType location_type = LOCATION_NOTHING);
00092 
00093         // returns global pos of tracked thing
00094         static LLVector3d       getTrackedPositionGlobal();
00095 
00096         static BOOL             hasLandmarkPosition();
00097         static const LLString& getTrackedLocationName();
00098 
00099         static void drawHUDArrow();
00100 
00101         // Draw in-world 3D tracking stuff
00102         static void     render3D();
00103 
00104         static BOOL handleMouseDown(S32 x, S32 y);
00105 
00106         static LLTracker* sTrackerp;
00107         static BOOL sCheesyBeacon;
00108         
00109         static const LLString& getLabel() { return instance()->mLabel; }
00110         static const LLString& getToolTip() { return instance()->mToolTip; }
00111 protected:
00112         LLTracker();
00113         ~LLTracker();
00114 
00115         static void renderBeacon( LLVector3d pos_global, 
00116                                                          const LLColor4& color, 
00117                                                          LLHUDText* hud_textp, 
00118                                                          const std::string& label );
00119 
00120         void stopTrackingAll(BOOL clear_ui = FALSE);
00121         void stopTrackingAvatar(BOOL clear_ui = FALSE);
00122         void stopTrackingLocation(BOOL clear_ui = FALSE);
00123         void stopTrackingLandmark(BOOL clear_ui = FALSE);
00124 
00125         void drawMarker(const LLVector3d& pos_global, const LLColor4& color);
00126         void setLandmarkVisited();
00127         void cacheLandmarkPosition();
00128         void purgeBeaconText();
00129 
00130 protected:
00131         ETrackingStatus                 mTrackingStatus;
00132         ETrackingLocationType   mTrackingLocationType;
00133         LLPointer<LLHUDText>    mBeaconText;
00134         S32 mHUDArrowCenterX;
00135         S32 mHUDArrowCenterY;
00136 
00137         LLVector3d                              mTrackedPositionGlobal;
00138 
00139         LLString                                mLabel;
00140         LLString                                mToolTip;
00141 
00142         LLString                                mTrackedLandmarkName;
00143         LLUUID                                  mTrackedLandmarkAssetID;
00144         LLUUID                                  mTrackedLandmarkItemID;
00145         LLDynamicArray<LLUUID>  mLandmarkAssetIDList;
00146         LLDynamicArray<LLUUID>  mLandmarkItemIDList;
00147         BOOL                                    mHasReachedLandmark;
00148         BOOL                                    mHasLandmarkPosition;
00149         BOOL                                    mLandmarkHasBeenVisited;
00150 
00151         LLString                                mTrackedLocationName;
00152         BOOL                                    mIsTrackingLocation;
00153         BOOL                                    mHasReachedLocation;
00154 };
00155 
00156 
00157 #endif
00158 

Generated on Thu Jul 1 06:09:22 2010 for Second Life Viewer by  doxygen 1.4.7