diff options
Diffstat (limited to 'indra/newview/llworldmap.h')
-rw-r--r-- | indra/newview/llworldmap.h | 374 |
1 files changed, 187 insertions, 187 deletions
diff --git a/indra/newview/llworldmap.h b/indra/newview/llworldmap.h index 5e5caa6a74..fb9d140851 100644 --- a/indra/newview/llworldmap.h +++ b/indra/newview/llworldmap.h @@ -1,25 +1,25 @@ -/** +/** * @file llworldmap.h * @brief Underlying data storage for the map of the entire world. * * $LicenseInfo:firstyear=2003&license=viewerlgpl$ * Second Life Viewer Source Code * Copyright (C) 2010, Linden Research, Inc. - * + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; * version 2.1 of the License only. - * + * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * + * * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA * $/LicenseInfo$ */ @@ -42,7 +42,7 @@ const U32 MAP_ITEM_TELEHUB = 0x01; const U32 MAP_ITEM_PG_EVENT = 0x02; const U32 MAP_ITEM_MATURE_EVENT = 0x03; -//const U32 MAP_ITEM_POPULAR = 0x04; // No longer supported, 2009-03-02 KLW +//const U32 MAP_ITEM_POPULAR = 0x04; // No longer supported, 2009-03-02 KLW //const U32 MAP_ITEM_AGENT_COUNT = 0x05; const U32 MAP_ITEM_AGENT_LOCATIONS = 0x06; const U32 MAP_ITEM_LAND_FOR_SALE = 0x07; @@ -51,138 +51,138 @@ const U32 MAP_ITEM_ADULT_EVENT = 0x09; const U32 MAP_ITEM_LAND_FOR_SALE_ADULT = 0x0a; // Description of objects like hubs, events, land for sale, people and more (TBD). -// Note: we don't store a "type" in there so we need to store instances of this class in +// Note: we don't store a "type" in there so we need to store instances of this class in // well known objects (i.e. list of objects which type is "well known"). class LLItemInfo { public: - LLItemInfo(F32 global_x, F32 global_y, const std::string& name, LLUUID id); + LLItemInfo(F32 global_x, F32 global_y, const std::string& name, LLUUID id); - // Setters - void setTooltip(const std::string& tooltip) { mToolTip = tooltip; } - void setElevation(F64 z) { mPosGlobal.mdV[VZ] = z; } - void setCount(S32 count) { mCount = count; } -// void setSelected(bool selected) { mSelected = selected; } -// void setColor(LLColor4 color) { mColor = color; } + // Setters + void setTooltip(const std::string& tooltip) { mToolTip = tooltip; } + void setElevation(F64 z) { mPosGlobal.mdV[VZ] = z; } + void setCount(S32 count) { mCount = count; } +// void setSelected(bool selected) { mSelected = selected; } +// void setColor(LLColor4 color) { mColor = color; } - // Accessors - const LLVector3d& getGlobalPosition() const { return mPosGlobal; } - const std::string& getName() const { return mName; } - const std::string& getToolTip() const { return mToolTip; } - const LLUUID& getUUID() const { return mID; } - S32 getCount() const { return mCount; } + // Accessors + const LLVector3d& getGlobalPosition() const { return mPosGlobal; } + const std::string& getName() const { return mName; } + const std::string& getToolTip() const { return mToolTip; } + const LLUUID& getUUID() const { return mID; } + S32 getCount() const { return mCount; } - U64 getRegionHandle() const { return to_region_handle(mPosGlobal); } // Build the handle on the fly + U64 getRegionHandle() const { return to_region_handle(mPosGlobal); } // Build the handle on the fly - bool isName(const std::string& name) const { return (mName == name); } // True if name same as item's name -// bool isSelected() const { return mSelected; } + bool isName(const std::string& name) const { return (mName == name); } // True if name same as item's name +// bool isSelected() const { return mSelected; } private: - std::string mName; // Name of the individual item - std::string mToolTip; // Tooltip : typically, something to be displayed to the user when selecting this item - LLVector3d mPosGlobal; // Global world position - LLUUID mID; // UUID of the item - S32 mCount; // Number of elements in item (e.g. people count) - // Currently not used but might prove useful one day so we comment out -// bool mSelected; // Selected or not: updated by the viewer UI, not the simulator or asset DB -// LLColor4 mColor; // Color of the item + std::string mName; // Name of the individual item + std::string mToolTip; // Tooltip : typically, something to be displayed to the user when selecting this item + LLVector3d mPosGlobal; // Global world position + LLUUID mID; // UUID of the item + S32 mCount; // Number of elements in item (e.g. people count) + // Currently not used but might prove useful one day so we comment out +// bool mSelected; // Selected or not: updated by the viewer UI, not the simulator or asset DB +// LLColor4 mColor; // Color of the item }; // Info per region -// Such records are stored in a global map hold by the LLWorldMap and indexed by region handles. -// To avoid creating too many of them, they are requested in "blocks" corresponding to areas covered by the screen. -// Unfortunately, when the screen covers the whole world (zoomed out), that can translate in requesting info for +// Such records are stored in a global map hold by the LLWorldMap and indexed by region handles. +// To avoid creating too many of them, they are requested in "blocks" corresponding to areas covered by the screen. +// Unfortunately, when the screen covers the whole world (zoomed out), that can translate in requesting info for // every sim on the grid... Not good... -// To avoid this, the code implements a cut-off threshold for overlay graphics and, therefore, all LLSimInfo. +// To avoid this, the code implements a cut-off threshold for overlay graphics and, therefore, all LLSimInfo. // In other words, when zooming out too much, we simply stop requesting LLSimInfo and -// LLItemInfo and just display the map tiles. +// LLItemInfo and just display the map tiles. // As they are stored in different structures (LLSimInfo and LLWorldMipmap), this strategy is now workable. class LLSimInfo { public: - LLSimInfo(U64 handle); - - // Convert local region coordinates into world coordinates - LLVector3d getGlobalPos(const LLVector3& local_pos) const; - // Get the world coordinates of the SW corner of that region - LLVector3d getGlobalOrigin() const; - LLVector3 getLocalPos(LLVector3d global_pos) const; - - void clearImage(); // Clears the reference to the Land for sale image for that region - void dropImagePriority(); // Drops the boost level of the Land for sale image for that region - void updateAgentCount(F64 time); // Send an item request for agent count on that region if time's up - - // Setters - void setName(std::string& name) { mName = name; } - void setAccess (U32 accesscode) { mAccess = accesscode; } - void setRegionFlags (U32 region_flags) { mRegionFlags = region_flags; } - void setLandForSaleImage (LLUUID image_id); -// void setWaterHeight (F32 water_height) { mWaterHeight = water_height; } - - // Accessors - std::string getName() const { return mName; } - const std::string getFlagsString() const { return LLViewerRegion::regionFlagsToString(mRegionFlags); } - const std::string getAccessString() const { return LLViewerRegion::accessToString((U8)mAccess); } - - const S32 getAgentCount() const; // Compute the total agents count - LLPointer<LLViewerFetchedTexture> getLandForSaleImage(); // Get the overlay image, fetch it if necessary - - bool isName(const std::string& name) const; - bool isDown() { return (mAccess == SIM_ACCESS_DOWN); } - bool isPG() { return (mAccess <= SIM_ACCESS_PG); } - bool isAdult() { return (mAccess == SIM_ACCESS_ADULT); } - - // Debug only - void dump() const; // Print the region info to the standard output - - // Items lists handling - typedef std::vector<LLItemInfo> item_info_list_t; - void clearItems(); - - void insertTeleHub(const LLItemInfo& item) { mTelehubs.push_back(item); } - void insertInfoHub(const LLItemInfo& item) { mInfohubs.push_back(item); } - void insertPGEvent(const LLItemInfo& item) { mPGEvents.push_back(item); } - void insertMatureEvent(const LLItemInfo& item) { mMatureEvents.push_back(item); } - void insertAdultEvent(const LLItemInfo& item) { mAdultEvents.push_back(item); } - void insertLandForSale(const LLItemInfo& item) { mLandForSale.push_back(item); } - void insertLandForSaleAdult(const LLItemInfo& item) { mLandForSaleAdult.push_back(item); } - void insertAgentLocation(const LLItemInfo& item); - - const LLSimInfo::item_info_list_t& getTeleHub() const { return mTelehubs; } - const LLSimInfo::item_info_list_t& getInfoHub() const { return mInfohubs; } - const LLSimInfo::item_info_list_t& getPGEvent() const { return mPGEvents; } - const LLSimInfo::item_info_list_t& getMatureEvent() const { return mMatureEvents; } - const LLSimInfo::item_info_list_t& getAdultEvent() const { return mAdultEvents; } - const LLSimInfo::item_info_list_t& getLandForSale() const { return mLandForSale; } - const LLSimInfo::item_info_list_t& getLandForSaleAdult() const { return mLandForSaleAdult; } - const LLSimInfo::item_info_list_t& getAgentLocation() const { return mAgentLocations; } + LLSimInfo(U64 handle); + + // Convert local region coordinates into world coordinates + LLVector3d getGlobalPos(const LLVector3& local_pos) const; + // Get the world coordinates of the SW corner of that region + LLVector3d getGlobalOrigin() const; + LLVector3 getLocalPos(LLVector3d global_pos) const; + + void clearImage(); // Clears the reference to the Land for sale image for that region + void dropImagePriority(); // Drops the boost level of the Land for sale image for that region + void updateAgentCount(F64 time); // Send an item request for agent count on that region if time's up + + // Setters + void setName(std::string& name) { mName = name; } + void setAccess (U32 accesscode) { mAccess = accesscode; } + void setRegionFlags (U32 region_flags) { mRegionFlags = region_flags; } + void setLandForSaleImage (LLUUID image_id); +// void setWaterHeight (F32 water_height) { mWaterHeight = water_height; } + + // Accessors + std::string getName() const { return mName; } + const std::string getFlagsString() const { return LLViewerRegion::regionFlagsToString(mRegionFlags); } + const std::string getAccessString() const { return LLViewerRegion::accessToString((U8)mAccess); } + + const S32 getAgentCount() const; // Compute the total agents count + LLPointer<LLViewerFetchedTexture> getLandForSaleImage(); // Get the overlay image, fetch it if necessary + + bool isName(const std::string& name) const; + bool isDown() { return (mAccess == SIM_ACCESS_DOWN); } + bool isPG() { return (mAccess <= SIM_ACCESS_PG); } + bool isAdult() { return (mAccess == SIM_ACCESS_ADULT); } + + // Debug only + void dump() const; // Print the region info to the standard output + + // Items lists handling + typedef std::vector<LLItemInfo> item_info_list_t; + void clearItems(); + + void insertTeleHub(const LLItemInfo& item) { mTelehubs.push_back(item); } + void insertInfoHub(const LLItemInfo& item) { mInfohubs.push_back(item); } + void insertPGEvent(const LLItemInfo& item) { mPGEvents.push_back(item); } + void insertMatureEvent(const LLItemInfo& item) { mMatureEvents.push_back(item); } + void insertAdultEvent(const LLItemInfo& item) { mAdultEvents.push_back(item); } + void insertLandForSale(const LLItemInfo& item) { mLandForSale.push_back(item); } + void insertLandForSaleAdult(const LLItemInfo& item) { mLandForSaleAdult.push_back(item); } + void insertAgentLocation(const LLItemInfo& item); + + const LLSimInfo::item_info_list_t& getTeleHub() const { return mTelehubs; } + const LLSimInfo::item_info_list_t& getInfoHub() const { return mInfohubs; } + const LLSimInfo::item_info_list_t& getPGEvent() const { return mPGEvents; } + const LLSimInfo::item_info_list_t& getMatureEvent() const { return mMatureEvents; } + const LLSimInfo::item_info_list_t& getAdultEvent() const { return mAdultEvents; } + const LLSimInfo::item_info_list_t& getLandForSale() const { return mLandForSale; } + const LLSimInfo::item_info_list_t& getLandForSaleAdult() const { return mLandForSaleAdult; } + const LLSimInfo::item_info_list_t& getAgentLocation() const { return mAgentLocations; } private: - U64 mHandle; // This is a hash of the X and Y world coordinates of the SW corner of the sim - std::string mName; // Region name - - F64 mAgentsUpdateTime; // Time stamp giving the last time the agents information was requested for that region - bool mFirstAgentRequest; // Init agent request flag - - U32 mAccess; // Down/up and maturity rating of the region - U32 mRegionFlags; // Tell us if the siminfo has been received (if non 0) and what kind of region it is (Sandbox, allow damage) - // Currently not used but might prove useful one day so we comment out -// F32 mWaterHeight; // Water height on the region (not actively used) - - // Handling the "land for sale / land for auction" overlay image - LLUUID mMapImageID; // Image ID of the overlay image - LLPointer<LLViewerFetchedTexture> mOverlayImage; // Reference to the overlay image - - // Items for this region - // Those are data received through item requests (as opposed to block requests for the rest of the data) - item_info_list_t mTelehubs; // List of tele hubs in the region - item_info_list_t mInfohubs; // List of info hubs in the region - item_info_list_t mPGEvents; // List of PG events in the region - item_info_list_t mMatureEvents; // List of Mature events in the region - item_info_list_t mAdultEvents; // List of Adult events in the region (AO) - item_info_list_t mLandForSale; // List of Land for sales in the region - item_info_list_t mLandForSaleAdult; // List of Adult Land for sales in the region (AO) - item_info_list_t mAgentLocations; // List of agents in the region + U64 mHandle; // This is a hash of the X and Y world coordinates of the SW corner of the sim + std::string mName; // Region name + + F64 mAgentsUpdateTime; // Time stamp giving the last time the agents information was requested for that region + bool mFirstAgentRequest; // Init agent request flag + + U32 mAccess; // Down/up and maturity rating of the region + U32 mRegionFlags; // Tell us if the siminfo has been received (if non 0) and what kind of region it is (Sandbox, allow damage) + // Currently not used but might prove useful one day so we comment out +// F32 mWaterHeight; // Water height on the region (not actively used) + + // Handling the "land for sale / land for auction" overlay image + LLUUID mMapImageID; // Image ID of the overlay image + LLPointer<LLViewerFetchedTexture> mOverlayImage; // Reference to the overlay image + + // Items for this region + // Those are data received through item requests (as opposed to block requests for the rest of the data) + item_info_list_t mTelehubs; // List of tele hubs in the region + item_info_list_t mInfohubs; // List of info hubs in the region + item_info_list_t mPGEvents; // List of PG events in the region + item_info_list_t mMatureEvents; // List of Mature events in the region + item_info_list_t mAdultEvents; // List of Adult events in the region (AO) + item_info_list_t mLandForSale; // List of Land for sales in the region + item_info_list_t mLandForSaleAdult; // List of Adult Land for sales in the region (AO) + item_info_list_t mAgentLocations; // List of agents in the region }; // We request region data on the world by "blocks" of (MAP_BLOCK_SIZE x MAP_BLOCK_SIZE) regions @@ -193,91 +193,91 @@ const S32 MAP_BLOCK_RES = (MAP_MAX_SIZE / MAP_BLOCK_SIZE); class LLWorldMap : public LLSingleton<LLWorldMap> { - LLSINGLETON(LLWorldMap); - ~LLWorldMap(); + LLSINGLETON(LLWorldMap); + ~LLWorldMap(); public: - // Clear all: list of region info, tiles, blocks and items - void reset(); + // Clear all: list of region info, tiles, blocks and items + void reset(); - void clearImageRefs(); // Clears the image references - void dropImagePriorities(); // Drops the priority of the images being fetched - void reloadItems(bool force = false); // Reload the items (people, hub, etc...) + void clearImageRefs(); // Clears the image references + void dropImagePriorities(); // Drops the priority of the images being fetched + void reloadItems(bool force = false); // Reload the items (people, hub, etc...) - // Region Map access - typedef std::map<U64, LLSimInfo*> sim_info_map_t; - const LLWorldMap::sim_info_map_t& getRegionMap() const { return mSimInfoMap; } - void updateRegions(S32 x0, S32 y0, S32 x1, S32 y1); // Requests region info for a rectangle of regions (in grid coordinates) + // Region Map access + typedef std::map<U64, LLSimInfo*> sim_info_map_t; + const LLWorldMap::sim_info_map_t& getRegionMap() const { return mSimInfoMap; } + void updateRegions(S32 x0, S32 y0, S32 x1, S32 y1); // Requests region info for a rectangle of regions (in grid coordinates) - // Insert a region and items in the map global instance - // Note: x_world and y_world in world coordinates (meters) - static bool insertRegion(U32 x_world, U32 y_world, std::string& name, LLUUID& uuid, U32 accesscode, U32 region_flags); - static bool insertItem(U32 x_world, U32 y_world, std::string& name, LLUUID& uuid, U32 type, S32 extra, S32 extra2); + // Insert a region and items in the map global instance + // Note: x_world and y_world in world coordinates (meters) + static bool insertRegion(U32 x_world, U32 y_world, std::string& name, LLUUID& uuid, U32 accesscode, U32 region_flags); + static bool insertItem(U32 x_world, U32 y_world, std::string& name, LLUUID& uuid, U32 type, S32 extra, S32 extra2); - // Get info on sims (region) : note that those methods only search the range of loaded sims (the one that are being browsed) - // *not* the entire world. So a NULL return does not mean a down or unexisting region, just an out of range region. - LLSimInfo* simInfoFromHandle(const U64 handle); - LLSimInfo* simInfoFromPosGlobal(const LLVector3d& pos_global); - LLSimInfo* simInfoFromName(const std::string& sim_name); + // Get info on sims (region) : note that those methods only search the range of loaded sims (the one that are being browsed) + // *not* the entire world. So a NULL return does not mean a down or unexisting region, just an out of range region. + LLSimInfo* simInfoFromHandle(const U64 handle); + LLSimInfo* simInfoFromPosGlobal(const LLVector3d& pos_global); + LLSimInfo* simInfoFromName(const std::string& sim_name); - // Gets simulator name from a global position, returns true if found - bool simNameFromPosGlobal(const LLVector3d& pos_global, std::string& outSimName ); + // Gets simulator name from a global position, returns true if found + bool simNameFromPosGlobal(const LLVector3d& pos_global, std::string& outSimName ); - // Debug only - void dump(); // Print the world info to the standard output + // Debug only + void dump(); // Print the world info to the standard output - // Track handling - void cancelTracking() { mIsTrackingLocation = false; mIsTrackingFound = false; mIsInvalidLocation = false; mIsTrackingDoubleClick = false; mIsTrackingCommit = false; } + // Track handling + void cancelTracking() { mIsTrackingLocation = false; mIsTrackingFound = false; mIsInvalidLocation = false; mIsTrackingDoubleClick = false; mIsTrackingCommit = false; } - void setTracking(const LLVector3d& loc) { mIsTrackingLocation = true; mTrackingLocation = loc; mIsTrackingFound = false; mIsInvalidLocation = false; mIsTrackingDoubleClick = false; mIsTrackingCommit = false;} - void setTrackingInvalid() { mIsTrackingFound = true; mIsInvalidLocation = true; } - void setTrackingValid() { mIsTrackingFound = true; mIsInvalidLocation = false; } - void setTrackingDoubleClick() { mIsTrackingDoubleClick = true; } - void setTrackingCommit() { mIsTrackingCommit = true; } + void setTracking(const LLVector3d& loc) { mIsTrackingLocation = true; mTrackingLocation = loc; mIsTrackingFound = false; mIsInvalidLocation = false; mIsTrackingDoubleClick = false; mIsTrackingCommit = false;} + void setTrackingInvalid() { mIsTrackingFound = true; mIsInvalidLocation = true; } + void setTrackingValid() { mIsTrackingFound = true; mIsInvalidLocation = false; } + void setTrackingDoubleClick() { mIsTrackingDoubleClick = true; } + void setTrackingCommit() { mIsTrackingCommit = true; } - bool isTracking() { return mIsTrackingLocation; } - bool isTrackingValidLocation() { return mIsTrackingFound && !mIsInvalidLocation; } - bool isTrackingInvalidLocation() { return mIsTrackingFound && mIsInvalidLocation; } - bool isTrackingDoubleClick() { return mIsTrackingDoubleClick; } - bool isTrackingCommit() { return mIsTrackingCommit; } - bool isTrackingInRectangle(F64 x0, F64 y0, F64 x1, F64 y1); + bool isTracking() { return mIsTrackingLocation; } + bool isTrackingValidLocation() { return mIsTrackingFound && !mIsInvalidLocation; } + bool isTrackingInvalidLocation() { return mIsTrackingFound && mIsInvalidLocation; } + bool isTrackingDoubleClick() { return mIsTrackingDoubleClick; } + bool isTrackingCommit() { return mIsTrackingCommit; } + bool isTrackingInRectangle(F64 x0, F64 y0, F64 x1, F64 y1); - LLVector3d getTrackedPositionGlobal() const { return mTrackingLocation; } + LLVector3d getTrackedPositionGlobal() const { return mTrackingLocation; } - // World Mipmap delegation: currently used when drawing the mipmap - void equalizeBoostLevels(); - LLPointer<LLViewerFetchedTexture> getObjectsTile(U32 grid_x, U32 grid_y, S32 level, bool load = true) { return mWorldMipmap.getObjectsTile(grid_x, grid_y, level, load); } + // World Mipmap delegation: currently used when drawing the mipmap + void equalizeBoostLevels(); + LLPointer<LLViewerFetchedTexture> getObjectsTile(U32 grid_x, U32 grid_y, S32 level, bool load = true) { return mWorldMipmap.getObjectsTile(grid_x, grid_y, level, load); } private: - bool clearItems(bool force = false); // Clears the item lists - void clearSimFlags(); // Clears the block flags indicating that we've already requested region infos - - // Create a region record corresponding to the handle, insert it in the region map and returns a pointer - LLSimInfo* createSimInfoFromHandle(const U64 handle); - - // Map from region-handle to region info - sim_info_map_t mSimInfoMap; - - // Holds the tiled mipmap of the world. This is the structure that contains the images used for rendering. - LLWorldMipmap mWorldMipmap; - - // The World is divided in "blocks" of (MAP_BLOCK_SIZE x MAP_BLOCK_SIZE) regions that get requested at once. - // This boolean table avoids "blocks" to be requested multiple times. - // Issue: Not sure this scheme is foolproof though as I've seen - // cases where a block is never retrieved and, because of this boolean being set, never re-requested - bool * mMapBlockLoaded; // Telling us if the block of regions has been requested or not - - // Track location data : used while there's nothing tracked yet by LLTracker - bool mIsTrackingLocation; // True when we're tracking a point - bool mIsTrackingFound; // True when the tracking position has been found, valid or not - bool mIsInvalidLocation; // The region is down or the location does not correspond to an existing region - bool mIsTrackingDoubleClick; // User double clicked to set the location (i.e. teleport when found please...) - bool mIsTrackingCommit; // User used the search or landmark fields to set the location - LLVector3d mTrackingLocation; // World global position being tracked - - // General grid items request timing flags (used for events,hubs and land for sale) - LLTimer mRequestTimer; - bool mFirstRequest; + bool clearItems(bool force = false); // Clears the item lists + void clearSimFlags(); // Clears the block flags indicating that we've already requested region infos + + // Create a region record corresponding to the handle, insert it in the region map and returns a pointer + LLSimInfo* createSimInfoFromHandle(const U64 handle); + + // Map from region-handle to region info + sim_info_map_t mSimInfoMap; + + // Holds the tiled mipmap of the world. This is the structure that contains the images used for rendering. + LLWorldMipmap mWorldMipmap; + + // The World is divided in "blocks" of (MAP_BLOCK_SIZE x MAP_BLOCK_SIZE) regions that get requested at once. + // This boolean table avoids "blocks" to be requested multiple times. + // Issue: Not sure this scheme is foolproof though as I've seen + // cases where a block is never retrieved and, because of this boolean being set, never re-requested + bool * mMapBlockLoaded; // Telling us if the block of regions has been requested or not + + // Track location data : used while there's nothing tracked yet by LLTracker + bool mIsTrackingLocation; // True when we're tracking a point + bool mIsTrackingFound; // True when the tracking position has been found, valid or not + bool mIsInvalidLocation; // The region is down or the location does not correspond to an existing region + bool mIsTrackingDoubleClick; // User double clicked to set the location (i.e. teleport when found please...) + bool mIsTrackingCommit; // User used the search or landmark fields to set the location + LLVector3d mTrackingLocation; // World global position being tracked + + // General grid items request timing flags (used for events,hubs and land for sale) + LLTimer mRequestTimer; + bool mFirstRequest; }; #endif |