diff options
25 files changed, 183 insertions, 71 deletions
| diff --git a/autobuild.xml b/autobuild.xml index 17bdb74e0b..55b8a7f435 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -1110,9 +1110,9 @@              <key>archive</key>              <map>                <key>hash</key> -              <string>06f13505e99259c3b8d1d1e8fe90b1c7</string> +              <string>9a37d0201667a971887604f171394966</string>                <key>url</key> -              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/stinson_llpathinglibrary/rev/260468/arch/Darwin/installer/llphysicsextensions-0.1-darwin-20120622.tar.bz2</string> +              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/stinson_llpathinglibrary/rev/260580/arch/Darwin/installer/llphysicsextensions-0.1-darwin-20120625.tar.bz2</string>              </map>              <key>name</key>              <string>darwin</string> @@ -1122,9 +1122,9 @@              <key>archive</key>              <map>                <key>hash</key> -              <string>737fcb1848fc230620a7d40706a96d34</string> +              <string>5600a7849a6bc00cfe08baa5bc251efd</string>                <key>url</key> -              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/stinson_llpathinglibrary/rev/260468/arch/Linux/installer/llphysicsextensions-0.1-linux-20120623.tar.bz2</string> +              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/stinson_llpathinglibrary/rev/260580/arch/Linux/installer/llphysicsextensions-0.1-linux-20120626.tar.bz2</string>              </map>              <key>name</key>              <string>linux</string> @@ -1134,9 +1134,9 @@              <key>archive</key>              <map>                <key>hash</key> -              <string>de32260c76aa70a3342757851dba6032</string> +              <string>bfcfb9bc885e46a1b97f8f91cf5d5fd1</string>                <key>url</key> -              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/stinson_llpathinglibrary/rev/260468/arch/CYGWIN/installer/llphysicsextensions-0.1-windows-20120622.tar.bz2</string> +              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/stinson_llpathinglibrary/rev/260580/arch/CYGWIN/installer/llphysicsextensions-0.1-windows-20120625.tar.bz2</string>              </map>              <key>name</key>              <string>windows</string> diff --git a/indra/llcommon/llcursortypes.cpp b/indra/llcommon/llcursortypes.cpp index c0676f8c13..ec60097195 100644 --- a/indra/llcommon/llcursortypes.cpp +++ b/indra/llcommon/llcursortypes.cpp @@ -71,7 +71,9 @@ ECursorType getCursorFromString(const std::string& cursor_string)  		cursor_string_table["UI_CURSOR_TOOLOPEN"] = UI_CURSOR_TOOLOPEN;  		cursor_string_table["UI_CURSOR_TOOLPATHFINDING"] = UI_CURSOR_TOOLPATHFINDING;  		cursor_string_table["UI_CURSOR_TOOLPATHFINDINGPATHSTART"] = UI_CURSOR_TOOLPATHFINDING_PATH_START; +		cursor_string_table["UI_CURSOR_TOOLPATHFINDINGPATHSTARTADD"] = UI_CURSOR_TOOLPATHFINDING_PATH_START_ADD;  		cursor_string_table["UI_CURSOR_TOOLPATHFINDINGPATHEND"] = UI_CURSOR_TOOLPATHFINDING_PATH_END; +		cursor_string_table["UI_CURSOR_TOOLPATHFINDINGPATHENDADD"] = UI_CURSOR_TOOLPATHFINDING_PATH_END_ADD;  		cursor_string_table["UI_CURSOR_TOOLNO"] = UI_CURSOR_TOOLNO;  	} diff --git a/indra/llcommon/llcursortypes.h b/indra/llcommon/llcursortypes.h index f47a328f77..cb6d6636a0 100644 --- a/indra/llcommon/llcursortypes.h +++ b/indra/llcommon/llcursortypes.h @@ -67,7 +67,9 @@ enum ECursorType {  	UI_CURSOR_TOOLOPEN,  	UI_CURSOR_TOOLPATHFINDING,  	UI_CURSOR_TOOLPATHFINDING_PATH_START, +	UI_CURSOR_TOOLPATHFINDING_PATH_START_ADD,  	UI_CURSOR_TOOLPATHFINDING_PATH_END, +	UI_CURSOR_TOOLPATHFINDING_PATH_END_ADD,  	UI_CURSOR_TOOLNO,  	UI_CURSOR_COUNT			// Number of elements in this enum (NOT a cursor)  }; diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp index 5f637bc6f1..be0f8bc7af 100644 --- a/indra/llwindow/llwindowwin32.cpp +++ b/indra/llwindow/llwindowwin32.cpp @@ -1699,8 +1699,10 @@ void LLWindowWin32::initCursors()  	mCursor[ UI_CURSOR_TOOLBUY ]	= LoadCursor(module, TEXT("TOOLBUY"));  	mCursor[ UI_CURSOR_TOOLOPEN ]	= LoadCursor(module, TEXT("TOOLOPEN"));  	mCursor[ UI_CURSOR_TOOLPATHFINDING ]	= LoadCursor(module, TEXT("TOOLPATHFINDING")); +	mCursor[ UI_CURSOR_TOOLPATHFINDING_PATH_START_ADD ]	= LoadCursor(module, TEXT("TOOLPATHFINDINGPATHSTARTADD"));  	mCursor[ UI_CURSOR_TOOLPATHFINDING_PATH_START ]	= LoadCursor(module, TEXT("TOOLPATHFINDINGPATHSTART"));  	mCursor[ UI_CURSOR_TOOLPATHFINDING_PATH_END ]	= LoadCursor(module, TEXT("TOOLPATHFINDINGPATHEND")); +	mCursor[ UI_CURSOR_TOOLPATHFINDING_PATH_END_ADD ]	= LoadCursor(module, TEXT("TOOLPATHFINDINGPATHENDADD"));  	mCursor[ UI_CURSOR_TOOLNO ]	= LoadCursor(module, TEXT("TOOLNO"));  	// Color cursors diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 6358464fb0..ac0b0c0351 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -1342,7 +1342,9 @@ if (WINDOWS)          res/lltoolpan.cur          res/lltoolpathfinding.cur          res/lltoolpathfindingpathend.cur +        res/lltoolpathfindingpathendadd.cur          res/lltoolpathfindingpathstart.cur +        res/lltoolpathfindingpathstartadd.cur          res/lltoolpipette.cur          res/lltoolrotate.cur          res/lltoolscale.cur diff --git a/indra/newview/llfloaterpathfindingcharacters.cpp b/indra/newview/llfloaterpathfindingcharacters.cpp index caf9fe382b..5245b78871 100644 --- a/indra/newview/llfloaterpathfindingcharacters.cpp +++ b/indra/newview/llfloaterpathfindingcharacters.cpp @@ -36,7 +36,9 @@  #include "llpathfindingcharacter.h"  #include "llpathfindingcharacterlist.h"  #include "llpathfindingmanager.h" +#include "llpathfindingobject.h"  #include "llpathfindingobjectlist.h" +#include "llpathinglib.h"  #include "llsd.h"  #include "lluicolortable.h"  #include "llviewerobject.h" @@ -63,7 +65,7 @@ BOOL LLFloaterPathfindingCharacters::isShowPhysicsCapsule() const  void LLFloaterPathfindingCharacters::setShowPhysicsCapsule(BOOL pIsShowPhysicsCapsule)  { -	mShowPhysicsCapsuleCheckBox->set(pIsShowPhysicsCapsule); +	mShowPhysicsCapsuleCheckBox->set(pIsShowPhysicsCapsule && (LLPathingLib::getInstance() != NULL));  }  BOOL LLFloaterPathfindingCharacters::isPhysicsCapsuleEnabled(LLUUID& id, LLVector3& pos, LLQuaternion& rot) const @@ -84,7 +86,7 @@ LLHandle<LLFloaterPathfindingCharacters> LLFloaterPathfindingCharacters::getInst  {  	if ( sInstanceHandle.isDead() )  	{ -		LLFloaterPathfindingCharacters *floaterInstance = LLFloaterReg::getTypedInstance<LLFloaterPathfindingCharacters>("pathfinding_characters"); +		LLFloaterPathfindingCharacters *floaterInstance = LLFloaterReg::findTypedInstance<LLFloaterPathfindingCharacters>("pathfinding_characters");  		if (floaterInstance != NULL)  		{  			sInstanceHandle = floaterInstance->mSelfHandle; @@ -115,6 +117,7 @@ BOOL LLFloaterPathfindingCharacters::postBuild()  	mShowPhysicsCapsuleCheckBox = findChild<LLCheckBoxCtrl>("show_physics_capsule");  	llassert(mShowPhysicsCapsuleCheckBox != NULL);  	mShowPhysicsCapsuleCheckBox->setCommitCallback(boost::bind(&LLFloaterPathfindingCharacters::onShowPhysicsCapsuleClicked, this)); +	mShowPhysicsCapsuleCheckBox->setEnabled(LLPathingLib::getInstance() != NULL);  	return LLFloaterPathfindingObjects::postBuild();  } @@ -171,13 +174,23 @@ LLPathfindingObjectListPtr LLFloaterPathfindingCharacters::getEmptyObjectList()  void LLFloaterPathfindingCharacters::onShowPhysicsCapsuleClicked()  { -	if (mSelectedCharacterId.notNull() && isShowPhysicsCapsule()) +	if (LLPathingLib::getInstance() == NULL)  	{ -		showCapsule(); +		if (isShowPhysicsCapsule()) +		{ +			setShowPhysicsCapsule(FALSE); +		}  	}  	else  	{ -		hideCapsule(); +		if (mSelectedCharacterId.notNull() && isShowPhysicsCapsule()) +		{ +			showCapsule(); +		} +		else +		{ +			hideCapsule(); +		}  	}  } @@ -222,7 +235,7 @@ LLSD LLFloaterPathfindingCharacters::buildCharacterScrollListData(const LLPathfi  void LLFloaterPathfindingCharacters::updateStateOnDisplayControls()  {  	int numSelectedItems = getNumSelectedObjects();; -	bool isEditEnabled = (numSelectedItems == 1); +	bool isEditEnabled = ((numSelectedItems == 1) && (LLPathingLib::getInstance() != NULL));  	mShowPhysicsCapsuleCheckBox->setEnabled(isEditEnabled);  	if (!isEditEnabled) @@ -256,6 +269,19 @@ void LLFloaterPathfindingCharacters::showCapsule() const  {  	if (mSelectedCharacterId.notNull() && isShowPhysicsCapsule())  	{ +		LLPathfindingObjectPtr objectPtr = getFirstSelectedObject(); +		llassert(objectPtr != NULL); +		if (objectPtr != NULL) +		{ +			const LLPathfindingCharacter *character = dynamic_cast<const LLPathfindingCharacter *>(objectPtr.get()); +			llassert(mSelectedCharacterId == character->getUUID()); +			if (LLPathingLib::getInstance() != NULL) +			{ +				LLPathingLib::getInstance()->createPhysicsCapsuleRep(character->getLength(), character->getRadius(), +					character->isHorizontal(), character->getUUID()); +			} +		} +  		gPipeline.hideObject(mSelectedCharacterId);  	}  } @@ -266,6 +292,10 @@ void LLFloaterPathfindingCharacters::hideCapsule() const  	{  		gPipeline.restoreHiddenObject(mSelectedCharacterId);  	} +	if (LLPathingLib::getInstance() != NULL) +	{ +		LLPathingLib::getInstance()->cleanupPhysicsCapsuleRepResiduals(); +	}  }  bool LLFloaterPathfindingCharacters::getCapsuleRenderData(LLVector3& pPosition, LLQuaternion& rot) const diff --git a/indra/newview/llfloaterpathfindingconsole.cpp b/indra/newview/llfloaterpathfindingconsole.cpp index 810650621d..2cf7f3aeb1 100644 --- a/indra/newview/llfloaterpathfindingconsole.cpp +++ b/indra/newview/llfloaterpathfindingconsole.cpp @@ -285,7 +285,7 @@ LLHandle<LLFloaterPathfindingConsole> LLFloaterPathfindingConsole::getInstanceHa  {  	if (sInstanceHandle.isDead())  	{ -		LLFloaterPathfindingConsole *floaterInstance = LLFloaterReg::getTypedInstance<LLFloaterPathfindingConsole>("pathfinding_console"); +		LLFloaterPathfindingConsole *floaterInstance = LLFloaterReg::findTypedInstance<LLFloaterPathfindingConsole>("pathfinding_console");  		if (floaterInstance != NULL)  		{  			sInstanceHandle = floaterInstance->mSelfHandle; diff --git a/indra/newview/llfloaterpathfindingobjects.cpp b/indra/newview/llfloaterpathfindingobjects.cpp index cd6d0851b9..9bfbc582bd 100644 --- a/indra/newview/llfloaterpathfindingobjects.cpp +++ b/indra/newview/llfloaterpathfindingobjects.cpp @@ -41,6 +41,8 @@  #include "llcheckboxctrl.h"  #include "llenvmanager.h"  #include "llfloater.h" +#include "llnotifications.h" +#include "llnotificationsutil.h"  #include "llpathfindingmanager.h"  #include "llresmgr.h"  #include "llscrolllistctrl.h" @@ -281,13 +283,14 @@ void LLFloaterPathfindingObjects::handleNewObjectList(LLPathfindingManager::requ  void LLFloaterPathfindingObjects::handleUpdateObjectList(LLPathfindingManager::request_id_t pRequestId, LLPathfindingManager::ERequestStatus pRequestStatus, LLPathfindingObjectListPtr pObjectList)  { +	// We current assume that handleUpdateObjectList is called only when objects are being SET  	llassert(pRequestId <= mMessagingRequestId);  	if (pRequestId == mMessagingRequestId)  	{  		switch (pRequestStatus)  		{  		case LLPathfindingManager::kRequestStarted : -			setMessagingState(kMessagingGetRequestSent); +			setMessagingState(kMessagingSetRequestSent);  			break;  		case LLPathfindingManager::kRequestCompleted :  			if (mObjectList == NULL) @@ -581,14 +584,42 @@ void LLFloaterPathfindingObjects::onTakeCopyClicked()  void LLFloaterPathfindingObjects::onReturnClicked()  { -	handle_object_return(); -	requestGetObjects(); +	LLNotification::Params params("PathfindingReturnMultipleItems"); +	params.functor.function(boost::bind(&LLFloaterPathfindingObjects::handleReturnItemsResponse, this, _1, _2)); + +	LLSD substitutions; +	int numItems = getNumSelectedObjects(); +	substitutions["NUM_ITEMS"] = static_cast<LLSD::Integer>(numItems); +	params.substitutions = substitutions; + +	if (numItems == 1) +	{ +		LLNotifications::getInstance()->forceResponse(params, 0); +	} +	else if (numItems > 1) +	{ +		LLNotifications::getInstance()->add(params); +	}  }  void LLFloaterPathfindingObjects::onDeleteClicked()  { -	handle_object_delete(); -	requestGetObjects(); +	LLNotification::Params params("PathfindingDeleteMultipleItems"); +	params.functor.function(boost::bind(&LLFloaterPathfindingObjects::handleDeleteItemsResponse, this, _1, _2)); + +	LLSD substitutions; +	int numItems = getNumSelectedObjects(); +	substitutions["NUM_ITEMS"] = static_cast<LLSD::Integer>(numItems); +	params.substitutions = substitutions; + +	if (numItems == 1) +	{ +		LLNotifications::getInstance()->forceResponse(params, 0); +	} +	else if (numItems > 1) +	{ +		LLNotifications::getInstance()->add(params); +	}  }  void LLFloaterPathfindingObjects::onTeleportClicked() @@ -768,6 +799,24 @@ void LLFloaterPathfindingObjects::selectScrollListItemsInWorld()  	}  } +void LLFloaterPathfindingObjects::handleReturnItemsResponse(const LLSD &pNotification, const LLSD &pResponse) +{ +	if (LLNotificationsUtil::getSelectedOption(pNotification, pResponse) == 0) +	{ +		handle_object_return(); +		requestGetObjects(); +	} +} + +void LLFloaterPathfindingObjects::handleDeleteItemsResponse(const LLSD &pNotification, const LLSD &pResponse) +{ +	if (LLNotificationsUtil::getSelectedOption(pNotification, pResponse) == 0) +	{ +		handle_object_delete(); +		requestGetObjects(); +	} +} +  LLPathfindingObjectPtr LLFloaterPathfindingObjects::findObject(const LLScrollListItem *pListItem) const  {  	LLPathfindingObjectPtr objectPtr; diff --git a/indra/newview/llfloaterpathfindingobjects.h b/indra/newview/llfloaterpathfindingobjects.h index 6d5d6d24b2..84b0f3f3fe 100644 --- a/indra/newview/llfloaterpathfindingobjects.h +++ b/indra/newview/llfloaterpathfindingobjects.h @@ -132,6 +132,9 @@ private:  	void                   updateStateOnActionControls();  	void                   selectScrollListItemsInWorld(); +	void                   handleReturnItemsResponse(const LLSD &pNotification, const LLSD &pResponse); +	void                   handleDeleteItemsResponse(const LLSD &pNotification, const LLSD &pResponse); +  	LLPathfindingObjectPtr findObject(const LLScrollListItem *pListItem) const;  	LLScrollListCtrl                   *mObjectsScrollList; diff --git a/indra/newview/llpathfindingcharacter.cpp b/indra/newview/llpathfindingcharacter.cpp index 98e9141043..c9f3555e9c 100644 --- a/indra/newview/llpathfindingcharacter.cpp +++ b/indra/newview/llpathfindingcharacter.cpp @@ -31,7 +31,6 @@  #include "llpathfindingobject.h"  #include "llsd.h" -#include "llpathinglib.h"  #define CHARACTER_CPU_TIME_FIELD   "cpu_time"  #define CHARACTER_HORIZONTAL_FIELD "horizontal" @@ -94,8 +93,4 @@ void LLPathfindingCharacter::parseCharacterData(const LLSD &pCharacterData)  	llassert(pCharacterData.has(CHARACTER_RADIUS_FIELD));  	llassert(pCharacterData.get(CHARACTER_RADIUS_FIELD).isReal());  	mRadius = pCharacterData.get(CHARACTER_RADIUS_FIELD).asReal(); - -	//Create the rep inside the pathing library -	LLVector3 empty(0,0,0); -	LLPathingLib::getInstance()->createPhysicsCapsuleRep( mLength, mRadius, mIsHorizontal, empty, getUUID() );  } diff --git a/indra/newview/llpathfindingcharacterlist.cpp b/indra/newview/llpathfindingcharacterlist.cpp index ac1fb15be9..9b0ed14e35 100644 --- a/indra/newview/llpathfindingcharacterlist.cpp +++ b/indra/newview/llpathfindingcharacterlist.cpp @@ -33,7 +33,6 @@  #include "llpathfindingobject.h"  #include "llpathfindingobjectlist.h"  #include "llsd.h" -#include "llpathinglib.h"  //---------------------------------------------------------------------------  // LLPathfindingCharacterList @@ -47,11 +46,6 @@ LLPathfindingCharacterList::LLPathfindingCharacterList()  LLPathfindingCharacterList::LLPathfindingCharacterList(const LLSD& pCharacterListData)  	: LLPathfindingObjectList()  { -	if (LLPathingLib::getInstance() != NULL) -	{ -		LLPathingLib::getInstance()->cleanupPhysicsCapsuleRepResiduals( ); -	} -  	parseCharacterListData(pCharacterListData);  } diff --git a/indra/newview/llpathfindingmanager.cpp b/indra/newview/llpathfindingmanager.cpp index a01874296d..bafcf57944 100644 --- a/indra/newview/llpathfindingmanager.cpp +++ b/indra/newview/llpathfindingmanager.cpp @@ -311,6 +311,11 @@ void LLPathfindingManager::quitSystem()  	}  } +bool LLPathfindingManager::isPathfindingViewEnabled() const +{ +	return (LLPathingLib::getInstance() != NULL); +} +  bool LLPathfindingManager::isPathfindingEnabledForCurrentRegion() const  {  	return isPathfindingEnabledForRegion(getCurrentRegion()); diff --git a/indra/newview/llpathfindingmanager.h b/indra/newview/llpathfindingmanager.h index 5fa2b94def..9aa3065d89 100644 --- a/indra/newview/llpathfindingmanager.h +++ b/indra/newview/llpathfindingmanager.h @@ -67,6 +67,7 @@ public:  	void initSystem();  	void quitSystem(); +	bool isPathfindingViewEnabled() const;  	bool isPathfindingEnabledForCurrentRegion() const;  	bool isPathfindingEnabledForRegion(LLViewerRegion *pRegion) const; diff --git a/indra/newview/llpathfindingpathtool.cpp b/indra/newview/llpathfindingpathtool.cpp index 82426920d8..6cf90addab 100644 --- a/indra/newview/llpathfindingpathtool.cpp +++ b/indra/newview/llpathfindingpathtool.cpp @@ -70,14 +70,9 @@ BOOL LLPathfindingPathTool::handleMouseDown(S32 pX, S32 pY, MASK pMask)  	{  		if (isAnyPathToolModKeys(pMask))  		{ -			if (isPointAModKeys(pMask)) -			{ -				gViewerWindow->setCursor(UI_CURSOR_TOOLPATHFINDING_PATH_START); -			} -			else if (isPointBModKeys(pMask)) -			{ -				gViewerWindow->setCursor(UI_CURSOR_TOOLPATHFINDING_PATH_END); -			} +			gViewerWindow->setCursor(isPointAModKeys(pMask) +				? UI_CURSOR_TOOLPATHFINDING_PATH_START_ADD +				: UI_CURSOR_TOOLPATHFINDING_PATH_END_ADD);  			computeFinalPoints(pX, pY, pMask);  			mIsLeftMouseButtonHeld = true;  			setMouseCapture(TRUE); @@ -167,14 +162,9 @@ BOOL LLPathfindingPathTool::handleHover(S32 pX, S32 pY, MASK pMask)  	if (!mIsMiddleMouseButtonHeld && !mIsRightMouseButtonHeld && isAnyPathToolModKeys(pMask))  	{ -		if (isPointAModKeys(pMask)) -		{ -			gViewerWindow->setCursor(UI_CURSOR_TOOLPATHFINDING_PATH_START); -		} -		else if (isPointBModKeys(pMask)) -		{ -			gViewerWindow->setCursor(UI_CURSOR_TOOLPATHFINDING_PATH_END); -		} +		gViewerWindow->setCursor(isPointAModKeys(pMask) +			? (mIsLeftMouseButtonHeld ? UI_CURSOR_TOOLPATHFINDING_PATH_START_ADD : UI_CURSOR_TOOLPATHFINDING_PATH_START) +			: (mIsLeftMouseButtonHeld ? UI_CURSOR_TOOLPATHFINDING_PATH_END_ADD : UI_CURSOR_TOOLPATHFINDING_PATH_END));  		computeTempPoints(pX, pY, pMask);  		returnVal = TRUE;  	} diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 47cafeb3f8..bcec9c6eda 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -4886,6 +4886,14 @@ class LLToolsEnablePathfinding : public view_listener_t  	}  }; +class LLToolsEnablePathfindingView : public view_listener_t +{ +	bool handleEvent(const LLSD& userdata) +	{ +		return (LLPathfindingManager::getInstance() != NULL) && LLPathfindingManager::getInstance()->isPathfindingEnabledForCurrentRegion() && LLPathfindingManager::getInstance()->isPathfindingViewEnabled(); +	} +}; +  // Round the position of all root objects to the grid  class LLToolsSnapObjectXY : public view_listener_t  { @@ -8281,6 +8289,7 @@ void initialize_menus()  	view_listener_t::addMenu(new LLToolsEnableSaveToObjectInventory(), "Tools.EnableSaveToObjectInventory");  	view_listener_t::addMenu(new LLToolsEnablePathfinding(), "Tools.EnablePathfinding"); +	view_listener_t::addMenu(new LLToolsEnablePathfindingView(), "Tools.EnablePathfindingView");  	// Help menu  	// most items use the ShowFloater method diff --git a/indra/newview/res/lltoolpathfinding.cur b/indra/newview/res/lltoolpathfinding.curBinary files differ index 40c5a40905..2aba2daa45 100644 --- a/indra/newview/res/lltoolpathfinding.cur +++ b/indra/newview/res/lltoolpathfinding.cur diff --git a/indra/newview/res/lltoolpathfindingpathend.cur b/indra/newview/res/lltoolpathfindingpathend.curBinary files differ index df8d56d205..e951a6956b 100644 --- a/indra/newview/res/lltoolpathfindingpathend.cur +++ b/indra/newview/res/lltoolpathfindingpathend.cur diff --git a/indra/newview/res/lltoolpathfindingpathendadd.cur b/indra/newview/res/lltoolpathfindingpathendadd.curBinary files differ new file mode 100644 index 0000000000..0bf3201b23 --- /dev/null +++ b/indra/newview/res/lltoolpathfindingpathendadd.cur diff --git a/indra/newview/res/lltoolpathfindingpathstart.cur b/indra/newview/res/lltoolpathfindingpathstart.curBinary files differ index 5c38bb6c00..fecc716990 100644 --- a/indra/newview/res/lltoolpathfindingpathstart.cur +++ b/indra/newview/res/lltoolpathfindingpathstart.cur diff --git a/indra/newview/res/lltoolpathfindingpathstartadd.cur b/indra/newview/res/lltoolpathfindingpathstartadd.curBinary files differ new file mode 100644 index 0000000000..45e23e5161 --- /dev/null +++ b/indra/newview/res/lltoolpathfindingpathstartadd.cur diff --git a/indra/newview/res/viewerRes.rc b/indra/newview/res/viewerRes.rc index 0b469c8d81..df75f3f697 100644 --- a/indra/newview/res/viewerRes.rc +++ b/indra/newview/res/viewerRes.rc @@ -124,7 +124,9 @@ TOOLOPEN                CURSOR                  "toolopen.cur"  TOOLSIT                 CURSOR                  "toolsit.cur"  TOOLPATHFINDING         CURSOR                  "lltoolpathfinding.cur"  TOOLPATHFINDINGPATHSTART CURSOR                 "lltoolpathfindingpathstart.cur" -TOOLPATHFINDINGPATHEND   CURSOR                 "lltoolpathfindingpathend.cur" +TOOLPATHFINDINGPATHSTARTADD CURSOR              "lltoolpathfindingpathstartadd.cur" +TOOLPATHFINDINGPATHEND  CURSOR                  "lltoolpathfindingpathend.cur" +TOOLPATHFINDINGPATHENDADD CURSOR                "lltoolpathfindingpathendadd.cur"  TOOLNO                  CURSOR                  "llno.cur"  ///////////////////////////////////////////////////////////////////////////// diff --git a/indra/newview/skins/default/xui/en/floater_pathfinding_characters.xml b/indra/newview/skins/default/xui/en/floater_pathfinding_characters.xml index a267902b94..c1f1f60c1b 100644 --- a/indra/newview/skins/default/xui/en/floater_pathfinding_characters.xml +++ b/indra/newview/skins/default/xui/en/floater_pathfinding_characters.xml @@ -179,14 +179,24 @@      <button          follows="left|bottom"          height="22" +        label="Teleport me to it" +        layout="topleft" +        name="teleport_me_to_object" +        tool_tip="Enabled only when one character is selected." +        top_pad="-22" +        left_pad="26" +        width="159"/> +    <button +        follows="right|bottom" +        height="22"          label="Return"          layout="topleft"          name="return_objects"          top_pad="-22" -        left_pad="6" +        left_pad="26"          width="94"/>      <button -        follows="left|bottom" +        follows="right|bottom"          height="22"          label="Delete"          layout="topleft" @@ -194,15 +204,5 @@          top_pad="-22"          left_pad="6"          width="94"/> -    <button -        follows="left|bottom" -        height="22" -        label="Teleport me to it" -        layout="topleft" -        name="teleport_me_to_object" -        tool_tip="Enabled only when one character is selected." -        top_pad="-22" -        left_pad="6" -        width="159"/>    </panel>  </floater> diff --git a/indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml b/indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml index 3e718743dc..833e5489ba 100644 --- a/indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml +++ b/indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml @@ -322,14 +322,23 @@      <button          follows="left|bottom"          height="21" +        label="Teleport me to it" +        layout="topleft" +        name="teleport_me_to_object" +        top_pad="-21" +        left_pad="206" +        width="160"/> +    <button +        follows="right|bottom" +        height="21"          label="Return"          layout="topleft"          name="return_objects"          top_pad="-21" -        left_pad="6" +        left_pad="220"          width="95"/>      <button -        follows="left|bottom" +        follows="right|bottom"          height="21"          label="Delete"          layout="topleft" @@ -337,15 +346,6 @@          top_pad="-21"          left_pad="6"          width="95"/> -    <button -        follows="left|bottom" -        height="21" -        label="Teleport me to it" -        layout="topleft" -        name="teleport_me_to_object" -        top_pad="-21" -        left_pad="6" -        width="160"/>    </panel>    <view_border        bevel_style="none" diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index 1682996c74..f9a4acb1e3 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -967,7 +967,7 @@                function="Floater.ToggleOrBringToFront"                parameter="pathfinding_console" />            <menu_item_call.on_enable -              function="Tools.EnablePathfinding" /> +              function="Tools.EnablePathfindingView" />          </menu_item_call>        </menu> diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 9b072f3bf8..b09fb7bbe8 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -7869,5 +7869,31 @@ Disabling future updates for this file.  Attempted to add an invalid or unreadable image file [FNAME] which could not be opened or decoded.  Attempt cancelled.    </notification> -   + +  <notification +   icon="alertmodal.tga" +   name="PathfindingReturnMultipleItems" +   type="alertmodal"> +    You are returning [NUM_ITEMS] items.  Are you sure you want to continue? +    <tag>confirm</tag> +    <usetemplate +     ignoretext="Are you sure you want to return multiple items?" +     name="okcancelignore" +     notext="No" +     yestext="Yes"/> +  </notification> + +  <notification +   icon="alertmodal.tga" +   name="PathfindingDeleteMultipleItems" +   type="alertmodal"> +    You are deleting [NUM_ITEMS] items.  Are you sure you want to continue? +    <tag>confirm</tag> +    <usetemplate +     ignoretext="Are you sure you want to delete multiple items?" +     name="okcancelignore" +     notext="No" +     yestext="Yes"/> +  </notification> +  </notifications> | 
