diff options
| author | Todd Stinson <stinson@lindenlab.com> | 2012-06-26 14:47:50 -0700 | 
|---|---|---|
| committer | Todd Stinson <stinson@lindenlab.com> | 2012-06-26 14:47:50 -0700 | 
| commit | 16ba7ae82cb2e9323e7bf527a57079bf4cfeb634 (patch) | |
| tree | a23c832a0faf4e9c1d371baf6cffab983e32b3cb | |
| parent | 2cd321eaa9b9b9872318ce3977acd9a2f782872f (diff) | |
Updating the teleport-me-to-it behavior for the characters and linksets.  Firstly, to remove the direct call to gAgent.teleportRequest() which is being made into a private function.  Secondly, to check the viewer object list to see if the object exists there, and if so, to use that location as the teleport destination.
| -rw-r--r-- | indra/newview/llfloaterpathfindingobjects.cpp | 23 | 
1 files changed, 15 insertions, 8 deletions
| diff --git a/indra/newview/llfloaterpathfindingobjects.cpp b/indra/newview/llfloaterpathfindingobjects.cpp index 9bfbc582bd..eb18fa00d5 100644 --- a/indra/newview/llfloaterpathfindingobjects.cpp +++ b/indra/newview/llfloaterpathfindingobjects.cpp @@ -57,9 +57,10 @@  #include "llviewerobject.h"  #include "llviewerobjectlist.h"  #include "llviewerregion.h" -#include "v4color.h"  #include "pipeline.h" -#include "llfloaterreg.h" +#include "v3dmath.h" +#include "v3math.h" +#include "v4color.h"  #define DEFAULT_BEACON_WIDTH 6 @@ -488,14 +489,20 @@ void LLFloaterPathfindingObjects::teleportToSelectedObject()  		std::vector<LLScrollListItem*>::const_reference selectedItemRef = selectedItems.front();  		const LLScrollListItem *selectedItem = selectedItemRef;  		llassert(mObjectList != NULL); -		const LLPathfindingObjectPtr objectPtr = mObjectList->find(selectedItem->getUUID().asString()); -		const LLVector3 &objectLocation = objectPtr->getLocation(); - -		LLViewerRegion* region = gAgent.getRegion(); -		if (region != NULL) +		LLVector3d teleportLocation; +		LLViewerObject *viewerObject = gObjectList.findObject(selectedItem->getUUID()); +		if (viewerObject == NULL) +		{ +			// If we cannot find the object in the viewer list, teleport to the last reported position +			const LLPathfindingObjectPtr objectPtr = mObjectList->find(selectedItem->getUUID().asString()); +			teleportLocation = gAgent.getPosGlobalFromAgent(objectPtr->getLocation()); +		} +		else  		{ -			gAgent.teleportRequest(region->getHandle(), objectLocation, true); +			// If we can find the object in the viewer list, teleport to the known current position +			teleportLocation = viewerObject->getPositionGlobal();  		} +		gAgent.teleportViaLocationLookAt(teleportLocation);  	}  } | 
