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         static void clearFocus();
00086         
00087         static const LLUUID& getTrackedLandmarkAssetID() { return instance()->mTrackedLandmarkAssetID; }
00088         static const LLUUID& getTrackedLandmarkItemID()  { return instance()->mTrackedLandmarkItemID; }
00089 
00090         static void     trackAvatar( const LLUUID& avatar_id, const LLString& name );
00091         static void     trackLandmark( const LLUUID& landmark_asset_id, const LLUUID& landmark_item_id , const LLString& name);
00092         static void     trackLocation(const LLVector3d& pos, const LLString& full_name, const LLString& tooltip, ETrackingLocationType location_type = LOCATION_NOTHING);
00093 
00094         // returns global pos of tracked thing
00095         static LLVector3d       getTrackedPositionGlobal();
00096 
00097         static BOOL             hasLandmarkPosition();
00098         static const LLString& getTrackedLocationName();
00099 
00100         static void drawHUDArrow();
00101 
00102         // Draw in-world 3D tracking stuff
00103         static void     render3D();
00104 
00105         static BOOL handleMouseDown(S32 x, S32 y);
00106 
00107         static LLTracker* sTrackerp;
00108         static BOOL sCheesyBeacon;
00109         
00110         static const LLString& getLabel() { return instance()->mLabel; }
00111         static const LLString& getToolTip() { return instance()->mToolTip; }
00112 protected:
00113         LLTracker();
00114         ~LLTracker();
00115 
00116         static void renderBeacon( LLVector3d pos_global, 
00117                                                          const LLColor4& color, 
00118                                                          LLHUDText* hud_textp, 
00119                                                          const std::string& label );
00120 
00121         void stopTrackingAll(BOOL clear_ui = FALSE);
00122         void stopTrackingAvatar(BOOL clear_ui = FALSE);
00123         void stopTrackingLocation(BOOL clear_ui = FALSE);
00124         void stopTrackingLandmark(BOOL clear_ui = FALSE);
00125 
00126         void drawMarker(const LLVector3d& pos_global, const LLColor4& color);
00127         void setLandmarkVisited();
00128         void cacheLandmarkPosition();
00129         void purgeBeaconText();
00130 
00131 protected:
00132         ETrackingStatus                 mTrackingStatus;
00133         ETrackingLocationType   mTrackingLocationType;
00134         LLPointer<LLHUDText>    mBeaconText;
00135         S32 mHUDArrowCenterX;
00136         S32 mHUDArrowCenterY;
00137 
00138         LLVector3d                              mTrackedPositionGlobal;
00139 
00140         LLString                                mLabel;
00141         LLString                                mToolTip;
00142 
00143         LLString                                mTrackedLandmarkName;
00144         LLUUID                                  mTrackedLandmarkAssetID;
00145         LLUUID                                  mTrackedLandmarkItemID;
00146         LLDynamicArray<LLUUID>  mLandmarkAssetIDList;
00147         LLDynamicArray<LLUUID>  mLandmarkItemIDList;
00148         BOOL                                    mHasReachedLandmark;
00149         BOOL                                    mHasLandmarkPosition;
00150         BOOL                                    mLandmarkHasBeenVisited;
00151 
00152         LLString                                mTrackedLocationName;
00153         BOOL                                    mIsTrackingLocation;
00154         BOOL                                    mHasReachedLocation;
00155 };
00156 
00157 
00158 #endif
00159 

Generated on Fri May 16 08:34:08 2008 for SecondLife by  doxygen 1.5.5