Some cleanup to that and missing files
This commit is contained in:
224
indra/newview/llmapresponders.cpp
Normal file
224
indra/newview/llmapresponders.cpp
Normal file
@@ -0,0 +1,224 @@
|
|||||||
|
/**
|
||||||
|
* @file llmapresponders.cpp
|
||||||
|
* @brief Processes responses received for map requests.
|
||||||
|
*
|
||||||
|
* $LicenseInfo:firstyear=2006&license=viewergpl$
|
||||||
|
*
|
||||||
|
* Copyright (c) 2006-2010, Linden Research, Inc.
|
||||||
|
*
|
||||||
|
* Second Life Viewer Source Code
|
||||||
|
* The source code in this file ("Source Code") is provided by Linden Lab
|
||||||
|
* to you under the terms of the GNU General Public License, version 2.0
|
||||||
|
* ("GPL"), unless you have obtained a separate licensing agreement
|
||||||
|
* ("Other License"), formally executed by you and Linden Lab. Terms of
|
||||||
|
* the GPL can be found in doc/GPL-license.txt in this distribution, or
|
||||||
|
* online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
|
||||||
|
*
|
||||||
|
* There are special exceptions to the terms and conditions of the GPL as
|
||||||
|
* it is applied to this Source Code. View the full text of the exception
|
||||||
|
* in the file doc/FLOSS-exception.txt in this software distribution, or
|
||||||
|
* online at
|
||||||
|
* http://secondlifegrid.net/programs/open_source/licensing/flossexception
|
||||||
|
*
|
||||||
|
* By copying, modifying or distributing this software, you acknowledge
|
||||||
|
* that you have read and understood your obligations described above,
|
||||||
|
* and agree to abide by those obligations.
|
||||||
|
*
|
||||||
|
* ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
|
||||||
|
* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
|
||||||
|
* COMPLETENESS OR PERFORMANCE.
|
||||||
|
* $/LicenseInfo$
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "llviewerprecompiledheaders.h"
|
||||||
|
|
||||||
|
#include "llmapresponders.h"
|
||||||
|
|
||||||
|
#include "llfloaterworldmap.h"
|
||||||
|
#include "llviewerimagelist.h"
|
||||||
|
#include "llworldmap.h"
|
||||||
|
#include "llagent.h"
|
||||||
|
|
||||||
|
//virtual
|
||||||
|
void LLMapLayerResponder::result(const LLSD& result)
|
||||||
|
{
|
||||||
|
llinfos << "LLMapLayerResponder::result from capabilities" << llendl;
|
||||||
|
|
||||||
|
S32 agent_flags = result["AgentData"]["Flags"];
|
||||||
|
|
||||||
|
if (agent_flags != LLWorldMap::getInstance()->mCurrentMap)
|
||||||
|
{
|
||||||
|
llwarns << "Invalid or out of date map image type returned!" << llendl;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
LLUUID image_id;
|
||||||
|
//U32 left, right, top, bottom;
|
||||||
|
|
||||||
|
LLWorldMap::getInstance()->mMapLayers[agent_flags].clear();
|
||||||
|
|
||||||
|
bool use_web_map_tiles = LLWorldMap::useWebMapTiles();
|
||||||
|
|
||||||
|
LLSD::array_const_iterator iter;
|
||||||
|
BOOL adjust = FALSE;
|
||||||
|
for(iter = result["LayerData"].beginArray(); iter != result["LayerData"].endArray(); ++iter)
|
||||||
|
{
|
||||||
|
const LLSD& layer_data = *iter;
|
||||||
|
|
||||||
|
LLWorldMapLayer new_layer;
|
||||||
|
new_layer.LayerDefined = TRUE;
|
||||||
|
|
||||||
|
new_layer.LayerExtents.mLeft = layer_data["Left"];
|
||||||
|
new_layer.LayerExtents.mRight = layer_data["Right"];
|
||||||
|
new_layer.LayerExtents.mBottom = layer_data["Bottom"];
|
||||||
|
new_layer.LayerExtents.mTop = layer_data["Top"];
|
||||||
|
|
||||||
|
new_layer.LayerImageID = layer_data["ImageID"];
|
||||||
|
// if (use_web_map_tiles)
|
||||||
|
// {
|
||||||
|
// new_layer.LayerImage = LLWorldMap::loadObjectsTile((U32)new_layer.LayerExtents.mLeft, (U32)new_layer.LayerExtents.mBottom); // no good... Maybe using of level 2 and higher web maps ?
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
new_layer.LayerImage = gImageList.getImage(new_layer.LayerImageID, MIPMAP_TRUE, FALSE);
|
||||||
|
// }
|
||||||
|
gGL.getTexUnit(0)->bind(new_layer.LayerImage.get());
|
||||||
|
new_layer.LayerImage->setAddressMode(LLTexUnit::TAM_CLAMP);
|
||||||
|
|
||||||
|
F32 x_meters = F32(new_layer.LayerExtents.mLeft*REGION_WIDTH_UNITS);
|
||||||
|
F32 y_meters = F32(new_layer.LayerExtents.mBottom*REGION_WIDTH_UNITS);
|
||||||
|
adjust = LLWorldMap::getInstance()->extendAABB(U32(x_meters), U32(y_meters),
|
||||||
|
U32(x_meters+REGION_WIDTH_UNITS*new_layer.LayerExtents.getWidth()),
|
||||||
|
U32(y_meters+REGION_WIDTH_UNITS*new_layer.LayerExtents.getHeight())) || adjust;
|
||||||
|
|
||||||
|
LLWorldMap::getInstance()->mMapLayers[agent_flags].push_back(new_layer);
|
||||||
|
}
|
||||||
|
|
||||||
|
LLWorldMap::getInstance()->mMapLoaded[agent_flags] = TRUE;
|
||||||
|
if(adjust) gFloaterWorldMap->adjustZoomSliderBounds();
|
||||||
|
|
||||||
|
/*
|
||||||
|
U32 agent_flags;
|
||||||
|
msg->getU32Fast(_PREHASH_AgentData, _PREHASH_Flags, agent_flags);
|
||||||
|
|
||||||
|
if (agent_flags < 0 || agent_flags >= MAP_SIM_IMAGE_TYPES)
|
||||||
|
{
|
||||||
|
llwarns << "Invalid map image type returned! " << agent_flags << llendl;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
bool found_null_sim = false;
|
||||||
|
|
||||||
|
adjust = FALSE;
|
||||||
|
if (result.has("MapBlocks"))
|
||||||
|
{
|
||||||
|
const LLSD& map_blocks = result["MapBlocks"];
|
||||||
|
for (iter = map_blocks.beginArray(); iter != map_blocks.endArray(); ++iter)
|
||||||
|
{
|
||||||
|
const LLSD& map_block = *iter;
|
||||||
|
|
||||||
|
S32 x_regions = map_block["X"];
|
||||||
|
S32 y_regions = map_block["Y"];
|
||||||
|
std::string name = map_block["Name"];
|
||||||
|
S32 access = map_block["Access"];
|
||||||
|
S32 region_flags = map_block["RegionFlags"];
|
||||||
|
S32 water_height = map_block["WaterHeight"];
|
||||||
|
LLUUID image_id = map_block["MapImageID"];
|
||||||
|
|
||||||
|
U32 x_meters = x_regions * REGION_WIDTH_UNITS;
|
||||||
|
U32 y_meters = y_regions * REGION_WIDTH_UNITS;
|
||||||
|
|
||||||
|
if (access == 255)
|
||||||
|
{
|
||||||
|
// This region doesn't exist
|
||||||
|
if (LLWorldMap::getInstance()->mIsTrackingUnknownLocation &&
|
||||||
|
LLWorldMap::getInstance()->mUnknownLocation.mdV[0] >= x_meters &&
|
||||||
|
LLWorldMap::getInstance()->mUnknownLocation.mdV[0] < x_meters + 256 &&
|
||||||
|
LLWorldMap::getInstance()->mUnknownLocation.mdV[1] >= y_meters &&
|
||||||
|
LLWorldMap::getInstance()->mUnknownLocation.mdV[1] < y_meters + 256)
|
||||||
|
{
|
||||||
|
// We were tracking this location, but it doesn't exist
|
||||||
|
LLWorldMap::getInstance()->mInvalidLocation = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
found_null_sim = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
adjust = LLWorldMap::getInstance()->extendAABB(x_meters,
|
||||||
|
y_meters,
|
||||||
|
x_meters+REGION_WIDTH_UNITS,
|
||||||
|
y_meters+REGION_WIDTH_UNITS) || adjust;
|
||||||
|
U64 handle = to_region_handle(x_meters, y_meters);
|
||||||
|
|
||||||
|
// llinfos << "Map sim " << name << " image layer " << agent_flags << " ID " << image_id.getString() << llendl;
|
||||||
|
|
||||||
|
LLSimInfo* siminfo = new LLSimInfo();
|
||||||
|
LLWorldMap::sim_info_map_t::iterator iter = LLWorldMap::getInstance()->mSimInfoMap.find(handle);
|
||||||
|
if (iter != LLWorldMap::getInstance()->mSimInfoMap.end())
|
||||||
|
{
|
||||||
|
LLSimInfo* oldinfo = iter->second;
|
||||||
|
for (S32 image=0; image<MAP_SIM_IMAGE_TYPES; ++image)
|
||||||
|
{
|
||||||
|
siminfo->mMapImageID[image] = oldinfo->mMapImageID[image];
|
||||||
|
}
|
||||||
|
delete oldinfo;
|
||||||
|
}
|
||||||
|
LLWorldMap::getInstance()->mSimInfoMap[handle] = siminfo;
|
||||||
|
|
||||||
|
siminfo->mHandle = handle;
|
||||||
|
siminfo->mName.assign( name );
|
||||||
|
siminfo->mAccess = access; /*Flawfinder: ignore*/
|
||||||
|
siminfo->mRegionFlags = region_flags;
|
||||||
|
siminfo->mWaterHeight = (F32) water_height;
|
||||||
|
siminfo->mMapImageID[agent_flags] = image_id;
|
||||||
|
if (use_web_map_tiles)
|
||||||
|
{
|
||||||
|
siminfo->mCurrentImage = LLWorldMap::loadObjectsTile((U32)x_regions, (U32)y_regions);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
siminfo->mCurrentImage = gImageList.getImage(siminfo->mMapImageID[LLWorldMap::getInstance()->mCurrentMap], MIPMAP_TRUE, FALSE);
|
||||||
|
}
|
||||||
|
siminfo->mCurrentImage->setAddressMode(LLTexUnit::TAM_CLAMP);
|
||||||
|
gGL.getTexUnit(0)->bind(siminfo->mCurrentImage.get());
|
||||||
|
|
||||||
|
if (siminfo->mMapImageID[2].notNull())
|
||||||
|
{
|
||||||
|
siminfo->mOverlayImage = gImageList.getImage(siminfo->mMapImageID[2], MIPMAP_TRUE, FALSE);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
siminfo->mOverlayImage = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (LLWorldMap::getInstance()->mIsTrackingUnknownLocation &&
|
||||||
|
LLWorldMap::getInstance()->mUnknownLocation.mdV[0] >= x_meters &&
|
||||||
|
LLWorldMap::getInstance()->mUnknownLocation.mdV[0] < x_meters + 256 &&
|
||||||
|
LLWorldMap::getInstance()->mUnknownLocation.mdV[1] >= y_meters &&
|
||||||
|
LLWorldMap::getInstance()->mUnknownLocation.mdV[1] < y_meters + 256)
|
||||||
|
{
|
||||||
|
if (siminfo->mAccess == SIM_ACCESS_DOWN)
|
||||||
|
{
|
||||||
|
// We were tracking this location, but it doesn't exist
|
||||||
|
LLWorldMap::getInstance()->mInvalidLocation = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// We were tracking this location, and it does exist
|
||||||
|
bool is_tracking_dbl = LLWorldMap::getInstance()->mIsTrackingDoubleClick == TRUE;
|
||||||
|
gFloaterWorldMap->trackLocation(LLWorldMap::getInstance()->mUnknownLocation);
|
||||||
|
if (is_tracking_dbl)
|
||||||
|
{
|
||||||
|
LLVector3d pos_global = LLTracker::getTrackedPositionGlobal();
|
||||||
|
gAgent.teleportViaLocation( pos_global );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(adjust) gFloaterWorldMap->adjustZoomSliderBounds();
|
||||||
|
gFloaterWorldMap->updateSims(found_null_sim);
|
||||||
|
}
|
||||||
43
indra/newview/llmapresponders.h
Normal file
43
indra/newview/llmapresponders.h
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
/**
|
||||||
|
* @file llmapresponders.h
|
||||||
|
* @brief Processes responses received for map requests.
|
||||||
|
*
|
||||||
|
* $LicenseInfo:firstyear=2006&license=viewergpl$
|
||||||
|
*
|
||||||
|
* Copyright (c) 2006-2010, Linden Research, Inc.
|
||||||
|
*
|
||||||
|
* Second Life Viewer Source Code
|
||||||
|
* The source code in this file ("Source Code") is provided by Linden Lab
|
||||||
|
* to you under the terms of the GNU General Public License, version 2.0
|
||||||
|
* ("GPL"), unless you have obtained a separate licensing agreement
|
||||||
|
* ("Other License"), formally executed by you and Linden Lab. Terms of
|
||||||
|
* the GPL can be found in doc/GPL-license.txt in this distribution, or
|
||||||
|
* online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
|
||||||
|
*
|
||||||
|
* There are special exceptions to the terms and conditions of the GPL as
|
||||||
|
* it is applied to this Source Code. View the full text of the exception
|
||||||
|
* in the file doc/FLOSS-exception.txt in this software distribution, or
|
||||||
|
* online at
|
||||||
|
* http://secondlifegrid.net/programs/open_source/licensing/flossexception
|
||||||
|
*
|
||||||
|
* By copying, modifying or distributing this software, you acknowledge
|
||||||
|
* that you have read and understood your obligations described above,
|
||||||
|
* and agree to abide by those obligations.
|
||||||
|
*
|
||||||
|
* ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
|
||||||
|
* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
|
||||||
|
* COMPLETENESS OR PERFORMANCE.
|
||||||
|
* $/LicenseInfo$
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef LL_LLMAPLAYERRESPONDER_H
|
||||||
|
#define LL_LLMAPLAYERRESPONDER_H
|
||||||
|
|
||||||
|
#include "llhttpclient.h"
|
||||||
|
|
||||||
|
class LLMapLayerResponder : public LLHTTPClient::Responder
|
||||||
|
{
|
||||||
|
virtual void result(const LLSD& content);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // LL_LLMAPLAYERRESPONDER_H
|
||||||
@@ -37,6 +37,7 @@
|
|||||||
#include "llregionhandle.h"
|
#include "llregionhandle.h"
|
||||||
#include "message.h"
|
#include "message.h"
|
||||||
|
|
||||||
|
|
||||||
#include "llappviewer.h" // for gPacificDaylightTime
|
#include "llappviewer.h" // for gPacificDaylightTime
|
||||||
#include "llagent.h"
|
#include "llagent.h"
|
||||||
#include "llmapresponders.h"
|
#include "llmapresponders.h"
|
||||||
@@ -46,9 +47,7 @@
|
|||||||
#include "llviewerimagelist.h"
|
#include "llviewerimagelist.h"
|
||||||
#include "llviewerregion.h"
|
#include "llviewerregion.h"
|
||||||
#include "llregionflags.h"
|
#include "llregionflags.h"
|
||||||
|
#include "hippogridmanager.h"
|
||||||
#include "hippogridmanager.h"
|
|
||||||
|
|
||||||
bool LLWorldMap::sGotMapURL = false;
|
bool LLWorldMap::sGotMapURL = false;
|
||||||
const F32 REQUEST_ITEMS_TIMER = 10.f * 60.f; // 10 minutes
|
const F32 REQUEST_ITEMS_TIMER = 10.f * 60.f; // 10 minutes
|
||||||
|
|
||||||
@@ -133,9 +132,9 @@ LLWorldMap::LLWorldMap() :
|
|||||||
mMapLoaded[map] = FALSE;
|
mMapLoaded[map] = FALSE;
|
||||||
mMapBlockLoaded[map] = new BOOL[MAP_BLOCK_RES*MAP_BLOCK_RES];
|
mMapBlockLoaded[map] = new BOOL[MAP_BLOCK_RES*MAP_BLOCK_RES];
|
||||||
for (S32 idx=0; idx<MAP_BLOCK_RES*MAP_BLOCK_RES; ++idx)
|
for (S32 idx=0; idx<MAP_BLOCK_RES*MAP_BLOCK_RES; ++idx)
|
||||||
{
|
{
|
||||||
mMapBlockLoaded[map][idx] = FALSE;
|
mMapBlockLoaded[map][idx] = FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -156,7 +155,7 @@ void LLWorldMap::reset()
|
|||||||
mSimInfoMap.clear();
|
mSimInfoMap.clear();
|
||||||
|
|
||||||
for (S32 m=0; m<MAP_SIM_IMAGE_TYPES; ++m)
|
for (S32 m=0; m<MAP_SIM_IMAGE_TYPES; ++m)
|
||||||
{
|
{
|
||||||
mMapLoaded[m] = FALSE;
|
mMapLoaded[m] = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -225,8 +224,8 @@ void LLWorldMap::clearSimFlags()
|
|||||||
{
|
{
|
||||||
for (S32 map=0; map<MAP_SIM_IMAGE_TYPES; ++map)
|
for (S32 map=0; map<MAP_SIM_IMAGE_TYPES; ++map)
|
||||||
{
|
{
|
||||||
for (S32 idx=0; idx<MAP_BLOCK_RES*MAP_BLOCK_RES; ++idx)
|
for (S32 idx=0; idx<MAP_BLOCK_RES*MAP_BLOCK_RES; ++idx)
|
||||||
{
|
{
|
||||||
mMapBlockLoaded[map][idx] = FALSE;
|
mMapBlockLoaded[map][idx] = FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -267,7 +266,7 @@ LLSimInfo* LLWorldMap::simInfoFromName(const std::string& sim_name)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
sim_info = NULL;
|
sim_info = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return sim_info;
|
return sim_info;
|
||||||
}
|
}
|
||||||
@@ -568,7 +567,7 @@ void LLWorldMap::processMapLayerReply(LLMessageSystem* msg, void**)
|
|||||||
bool LLWorldMap::useWebMapTiles()
|
bool LLWorldMap::useWebMapTiles()
|
||||||
{
|
{
|
||||||
return gSavedSettings.getBOOL("UseWebMapTiles") &&
|
return gSavedSettings.getBOOL("UseWebMapTiles") &&
|
||||||
((gHippoGridManager->getConnectedGrid()->isSecondLife() || sGotMapURL) && LLWorldMap::getInstance()->mCurrentMap == 0);
|
(( gHippoGridManager->getConnectedGrid()->isSecondLife() || sGotMapURL) && LLWorldMap::getInstance()->mCurrentMap == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
// public static
|
// public static
|
||||||
@@ -628,23 +627,23 @@ void LLWorldMap::processMapBlockReply(LLMessageSystem* msg, void**)
|
|||||||
|
|
||||||
U64 handle = to_region_handle(x_meters, y_meters);
|
U64 handle = to_region_handle(x_meters, y_meters);
|
||||||
|
|
||||||
if (accesscode == 255)
|
if (accesscode == 255)
|
||||||
{
|
{
|
||||||
// This region doesn't exist
|
// This region doesn't exist
|
||||||
if (LLWorldMap::getInstance()->mIsTrackingUnknownLocation &&
|
if (LLWorldMap::getInstance()->mIsTrackingUnknownLocation &&
|
||||||
LLWorldMap::getInstance()->mUnknownLocation.mdV[0] >= x_meters &&
|
LLWorldMap::getInstance()->mUnknownLocation.mdV[0] >= x_meters &&
|
||||||
LLWorldMap::getInstance()->mUnknownLocation.mdV[0] < x_meters + 256 &&
|
LLWorldMap::getInstance()->mUnknownLocation.mdV[0] < x_meters + 256 &&
|
||||||
LLWorldMap::getInstance()->mUnknownLocation.mdV[1] >= y_meters &&
|
LLWorldMap::getInstance()->mUnknownLocation.mdV[1] >= y_meters &&
|
||||||
LLWorldMap::getInstance()->mUnknownLocation.mdV[1] < y_meters + 256)
|
LLWorldMap::getInstance()->mUnknownLocation.mdV[1] < y_meters + 256)
|
||||||
{
|
{
|
||||||
// We were tracking this location, but it doesn't exist
|
// We were tracking this location, but it doesn't exist
|
||||||
LLWorldMap::getInstance()->mInvalidLocation = TRUE;
|
LLWorldMap::getInstance()->mInvalidLocation = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
found_null_sim = true;
|
found_null_sim = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
adjust = LLWorldMap::getInstance()->extendAABB(x_meters,
|
adjust = LLWorldMap::getInstance()->extendAABB(x_meters,
|
||||||
y_meters,
|
y_meters,
|
||||||
x_meters+REGION_WIDTH_UNITS,
|
x_meters+REGION_WIDTH_UNITS,
|
||||||
@@ -655,7 +654,7 @@ void LLWorldMap::processMapBlockReply(LLMessageSystem* msg, void**)
|
|||||||
LLSimInfo* siminfo = new LLSimInfo();
|
LLSimInfo* siminfo = new LLSimInfo();
|
||||||
sim_info_map_t::iterator iter = LLWorldMap::getInstance()->mSimInfoMap.find(handle);
|
sim_info_map_t::iterator iter = LLWorldMap::getInstance()->mSimInfoMap.find(handle);
|
||||||
if (iter != LLWorldMap::getInstance()->mSimInfoMap.end())
|
if (iter != LLWorldMap::getInstance()->mSimInfoMap.end())
|
||||||
{
|
{
|
||||||
LLSimInfo* oldinfo = iter->second;
|
LLSimInfo* oldinfo = iter->second;
|
||||||
for (S32 image=0; image<MAP_SIM_IMAGE_TYPES; ++image)
|
for (S32 image=0; image<MAP_SIM_IMAGE_TYPES; ++image)
|
||||||
{
|
{
|
||||||
@@ -690,7 +689,7 @@ void LLWorldMap::processMapBlockReply(LLMessageSystem* msg, void**)
|
|||||||
#ifdef IMMEDIATE_IMAGE_LOAD
|
#ifdef IMMEDIATE_IMAGE_LOAD
|
||||||
siminfo->mOverlayImage = gImageList.getImage(siminfo->mMapImageID[2], MIPMAP_TRUE, FALSE);
|
siminfo->mOverlayImage = gImageList.getImage(siminfo->mMapImageID[2], MIPMAP_TRUE, FALSE);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
siminfo->mOverlayImage = NULL;
|
siminfo->mOverlayImage = NULL;
|
||||||
@@ -734,7 +733,14 @@ void LLWorldMap::processMapBlockReply(LLMessageSystem* msg, void**)
|
|||||||
LLWorldMap::getInstance()->mSLURLRegionHandle = 0;
|
LLWorldMap::getInstance()->mSLURLRegionHandle = 0;
|
||||||
|
|
||||||
callback(handle, LLWorldMap::getInstance()->mSLURL, image_id, LLWorldMap::getInstance()->mSLURLTeleport);
|
callback(handle, LLWorldMap::getInstance()->mSLURL, image_id, LLWorldMap::getInstance()->mSLURLTeleport);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
if(gAgent.mLureShow)
|
||||||
|
{
|
||||||
|
if((x_regions == gAgent.mLureGlobalX) && (y_regions == gAgent.mLureGlobalY))
|
||||||
|
{
|
||||||
|
gAgent.onFoundLureDestination();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -771,92 +777,94 @@ void LLWorldMap::processMapItemReply(LLMessageSystem* msg, void**)
|
|||||||
LLItemInfo new_item(world_x, world_y, name, uuid, extra, extra2);
|
LLItemInfo new_item(world_x, world_y, name, uuid, extra, extra2);
|
||||||
LLSimInfo* siminfo = LLWorldMap::getInstance()->simInfoFromHandle(new_item.mRegionHandle);
|
LLSimInfo* siminfo = LLWorldMap::getInstance()->simInfoFromHandle(new_item.mRegionHandle);
|
||||||
|
|
||||||
switch (type)
|
switch (type)
|
||||||
{
|
|
||||||
case MAP_ITEM_TELEHUB: // telehubs
|
|
||||||
{
|
{
|
||||||
|
case MAP_ITEM_TELEHUB: // telehubs
|
||||||
|
{
|
||||||
// Telehub color, store in extra as 4 U8's
|
// Telehub color, store in extra as 4 U8's
|
||||||
U8 *color = (U8 *)&new_item.mExtra;
|
U8 *color = (U8 *)&new_item.mExtra;
|
||||||
|
|
||||||
F32 red = fmod((F32)X * 0.11f, 1.f) * 0.8f;
|
F32 red = fmod((F32)X * 0.11f, 1.f) * 0.8f;
|
||||||
F32 green = fmod((F32)Y * 0.11f, 1.f) * 0.8f;
|
F32 green = fmod((F32)Y * 0.11f, 1.f) * 0.8f;
|
||||||
F32 blue = fmod(1.5f * (F32)(X + Y) * 0.11f, 1.f) * 0.8f;
|
F32 blue = fmod(1.5f * (F32)(X + Y) * 0.11f, 1.f) * 0.8f;
|
||||||
F32 add_amt = (X % 2) ? 0.15f : -0.15f;
|
F32 add_amt = (X % 2) ? 0.15f : -0.15f;
|
||||||
add_amt += (Y % 2) ? -0.15f : 0.15f;
|
add_amt += (Y % 2) ? -0.15f : 0.15f;
|
||||||
color[0] = U8((red + add_amt) * 255);
|
color[0] = U8((red + add_amt) * 255);
|
||||||
color[1] = U8((green + add_amt) * 255);
|
color[1] = U8((green + add_amt) * 255);
|
||||||
color[2] = U8((blue + add_amt) * 255);
|
color[2] = U8((blue + add_amt) * 255);
|
||||||
color[3] = 255;
|
color[3] = 255;
|
||||||
|
|
||||||
// extra2 specifies whether this is an infohub or a telehub.
|
// extra2 specifies whether this is an infohub or a telehub.
|
||||||
if (extra2)
|
if (extra2)
|
||||||
{
|
{
|
||||||
LLWorldMap::getInstance()->mInfohubs.push_back(new_item);
|
LLWorldMap::getInstance()->mInfohubs.push_back(new_item);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
LLWorldMap::getInstance()->mTelehubs.push_back(new_item);
|
LLWorldMap::getInstance()->mTelehubs.push_back(new_item);
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
case MAP_ITEM_PG_EVENT: // events
|
||||||
|
case MAP_ITEM_MATURE_EVENT:
|
||||||
|
case MAP_ITEM_ADULT_EVENT:
|
||||||
|
{
|
||||||
|
struct tm* timep;
|
||||||
|
// Convert to Pacific, based on server's opinion of whether
|
||||||
|
// it's daylight savings time there.
|
||||||
|
timep = utc_to_pacific_time(extra, gPacificDaylightTime);
|
||||||
|
|
||||||
break;
|
S32 display_hour = timep->tm_hour % 12;
|
||||||
}
|
if (display_hour == 0) display_hour = 12;
|
||||||
case MAP_ITEM_PG_EVENT: // events
|
|
||||||
case MAP_ITEM_MATURE_EVENT:
|
|
||||||
case MAP_ITEM_ADULT_EVENT:
|
|
||||||
{
|
|
||||||
struct tm* timep;
|
|
||||||
// Convert to Pacific, based on server's opinion of whether
|
|
||||||
// it's daylight savings time there.
|
|
||||||
timep = utc_to_pacific_time(extra, gPacificDaylightTime);
|
|
||||||
|
|
||||||
S32 display_hour = timep->tm_hour % 12;
|
|
||||||
if (display_hour == 0) display_hour = 12;
|
|
||||||
|
|
||||||
new_item.mToolTip = llformat( "%d:%02d %s",
|
new_item.mToolTip = llformat( "%d:%02d %s",
|
||||||
display_hour,
|
display_hour,
|
||||||
timep->tm_min,
|
timep->tm_min,
|
||||||
(timep->tm_hour < 12 ? "AM" : "PM") );
|
(timep->tm_hour < 12 ? "AM" : "PM") );
|
||||||
|
|
||||||
// HACK: store Z in extra2
|
// HACK: store Z in extra2
|
||||||
new_item.mPosGlobal.mdV[VZ] = (F64)extra2;
|
new_item.mPosGlobal.mdV[VZ] = (F64)extra2;
|
||||||
if (type == MAP_ITEM_PG_EVENT)
|
if (type == MAP_ITEM_PG_EVENT)
|
||||||
{
|
{
|
||||||
LLWorldMap::getInstance()->mPGEvents.push_back(new_item);
|
LLWorldMap::getInstance()->mPGEvents.push_back(new_item);
|
||||||
}
|
}
|
||||||
else if (type == MAP_ITEM_MATURE_EVENT)
|
else if (type == MAP_ITEM_MATURE_EVENT)
|
||||||
{
|
{
|
||||||
LLWorldMap::getInstance()->mMatureEvents.push_back(new_item);
|
LLWorldMap::getInstance()->mMatureEvents.push_back(new_item);
|
||||||
}
|
}
|
||||||
else if (type == MAP_ITEM_ADULT_EVENT)
|
else if (type == MAP_ITEM_ADULT_EVENT)
|
||||||
{
|
{
|
||||||
LLWorldMap::getInstance()->mAdultEvents.push_back(new_item);
|
LLWorldMap::getInstance()->mAdultEvents.push_back(new_item);
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case MAP_ITEM_LAND_FOR_SALE: // land for sale
|
case MAP_ITEM_LAND_FOR_SALE: // land for sale
|
||||||
case MAP_ITEM_LAND_FOR_SALE_ADULT: // adult land for sale
|
case MAP_ITEM_LAND_FOR_SALE_ADULT: // adult land for sale
|
||||||
{
|
|
||||||
new_item.mToolTip = llformat("%d sq. m. L$%d", new_item.mExtra, new_item.mExtra2);
|
|
||||||
if (type == MAP_ITEM_LAND_FOR_SALE)
|
|
||||||
{
|
{
|
||||||
|
new_item.mToolTip = llformat("%d sq. m. %s%d", new_item.mExtra,
|
||||||
|
gHippoGridManager->getConnectedGrid()->getCurrencySymbol().c_str(),
|
||||||
|
new_item.mExtra2);
|
||||||
|
if (type == MAP_ITEM_LAND_FOR_SALE)
|
||||||
|
{
|
||||||
LLWorldMap::getInstance()->mLandForSale.push_back(new_item);
|
LLWorldMap::getInstance()->mLandForSale.push_back(new_item);
|
||||||
}
|
}
|
||||||
else if (type == MAP_ITEM_LAND_FOR_SALE_ADULT)
|
else if (type == MAP_ITEM_LAND_FOR_SALE_ADULT)
|
||||||
{
|
{
|
||||||
LLWorldMap::getInstance()->mLandForSaleAdult.push_back(new_item);
|
LLWorldMap::getInstance()->mLandForSaleAdult.push_back(new_item);
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
case MAP_ITEM_CLASSIFIED: // classifieds
|
||||||
}
|
|
||||||
case MAP_ITEM_CLASSIFIED: // classifieds
|
|
||||||
{
|
|
||||||
//DEPRECATED: no longer used
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case MAP_ITEM_AGENT_LOCATIONS: // agent locations
|
|
||||||
{
|
|
||||||
if (!siminfo)
|
|
||||||
{
|
{
|
||||||
|
//DEPRECATED: no longer used
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case MAP_ITEM_AGENT_LOCATIONS: // agent locations
|
||||||
|
{
|
||||||
|
if (!siminfo)
|
||||||
|
{
|
||||||
llinfos << "siminfo missing for " << new_item.mPosGlobal.mdV[0] << ", " << new_item.mPosGlobal.mdV[1] << llendl;
|
llinfos << "siminfo missing for " << new_item.mPosGlobal.mdV[0] << ", " << new_item.mPosGlobal.mdV[1] << llendl;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -882,11 +890,11 @@ void LLWorldMap::processMapItemReply(LLMessageSystem* msg, void**)
|
|||||||
if (new_item.mExtra > 0)
|
if (new_item.mExtra > 0)
|
||||||
{
|
{
|
||||||
agentcounts.push_back(new_item);
|
agentcounts.push_back(new_item);
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
default:
|
||||||
}
|
break;
|
||||||
default:
|
|
||||||
break;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -932,20 +940,20 @@ BOOL LLWorldMap::extendAABB(U32 min_x, U32 min_y, U32 max_x, U32 max_y)
|
|||||||
mMinX = min_x;
|
mMinX = min_x;
|
||||||
}
|
}
|
||||||
if (min_y < mMinY)
|
if (min_y < mMinY)
|
||||||
{
|
{
|
||||||
rv = TRUE;
|
rv = TRUE;
|
||||||
mMinY = min_y;
|
mMinY = min_y;
|
||||||
}
|
}
|
||||||
if (max_x > mMaxX)
|
if (max_x > mMaxX)
|
||||||
{
|
{
|
||||||
rv = TRUE;
|
rv = TRUE;
|
||||||
mMaxX = max_x;
|
mMaxX = max_x;
|
||||||
}
|
}
|
||||||
if (max_y > mMaxY)
|
if (max_y > mMaxY)
|
||||||
{
|
{
|
||||||
rv = TRUE;
|
rv = TRUE;
|
||||||
mMaxY = max_y;
|
mMaxY = max_y;
|
||||||
}
|
}
|
||||||
lldebugs << "World map aabb: (" << mMinX << ", " << mMinY << "), ("
|
lldebugs << "World map aabb: (" << mMinX << ", " << mMinY << "), ("
|
||||||
<< mMaxX << ", " << mMaxY << ")" << llendl;
|
<< mMaxX << ", " << mMaxY << ")" << llendl;
|
||||||
return rv;
|
return rv;
|
||||||
@@ -1022,7 +1030,7 @@ void LLWorldMap::updateTelehubCoverage()
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (it = mSimInfoMap.begin(); it != mSimInfoMap.end(); ++it)
|
for (it = mSimInfoMap.begin(); it != mSimInfoMap.end(); ++it)
|
||||||
{
|
{
|
||||||
U64 handle = (*it).first;
|
U64 handle = (*it).first;
|
||||||
LLSimInfo* info = (*it).second;
|
LLSimInfo* info = (*it).second;
|
||||||
|
|
||||||
|
|||||||
@@ -1245,11 +1245,11 @@ BOOL LLWorldMapView::handleToolTip( S32 x, S32 y, std::string& msg, LLRect* stic
|
|||||||
|
|
||||||
if (agent_count == 1)
|
if (agent_count == 1)
|
||||||
{
|
{
|
||||||
message += "person";
|
message += "avatar";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
message += "people";
|
message += "avatars";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user