diff options
Diffstat (limited to 'indra')
16 files changed, 182 insertions, 278 deletions
| diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 6785803f03..4782a71ba8 100755 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -51,7 +51,6 @@  #include "llhomelocationresponder.h"  #include "llhudmanager.h"  #include "lljoystickbutton.h" -#include "llmenuoptionpathfindingrebakenavmesh.h"  #include "llmorphview.h"  #include "llmoveview.h"  #include "llnavigationbar.h" // to show/hide navigation bar when changing mouse look state @@ -2002,7 +2001,6 @@ void LLAgent::endAnimationUpdateUI()  		LLChicletBar::getInstance()->setVisible(TRUE);  		LLPanelStandStopFlying::getInstance()->setVisible(TRUE); -		LLPanelPathfindingRebakeNavmesh::getInstance()->setVisible(TRUE);  		LLToolMgr::getInstance()->setCurrentToolset(gBasicToolset); @@ -2112,7 +2110,6 @@ void LLAgent::endAnimationUpdateUI()  		LLChicletBar::getInstance()->setVisible(FALSE);  		LLPanelStandStopFlying::getInstance()->setVisible(FALSE); -		LLPanelPathfindingRebakeNavmesh::getInstance()->setVisible(FALSE);  		// clear out camera lag effect  		gAgentCamera.clearCameraLag(); diff --git a/indra/newview/llmenuoptionpathfindingrebakenavmesh.cpp b/indra/newview/llmenuoptionpathfindingrebakenavmesh.cpp index 3c89958f7e..71062154f7 100644 --- a/indra/newview/llmenuoptionpathfindingrebakenavmesh.cpp +++ b/indra/newview/llmenuoptionpathfindingrebakenavmesh.cpp @@ -34,148 +34,147 @@  #include <boost/signals2.hpp>  #include "llagent.h" -#include "llbutton.h"  #include "llenvmanager.h" -#include "llhints.h"  #include "llnotificationsutil.h" -#include "llpanel.h"  #include "llpathfindingmanager.h"  #include "llpathfindingnavmesh.h"  #include "llpathfindingnavmeshstatus.h" -#include "lltoolbar.h" -#include "lltoolbarview.h" -#include "lltooltip.h"  #include "llviewerregion.h" -LLPanelPathfindingRebakeNavmesh* LLPanelPathfindingRebakeNavmesh::getInstance() +LLMenuOptionPathfindingRebakeNavmesh::LLMenuOptionPathfindingRebakeNavmesh()  +	: LLSingleton<LLMenuOptionPathfindingRebakeNavmesh>(), +	mIsInitialized(false), +	mCanRebakeRegion(false), +	mRebakeNavMeshMode(kRebakeNavMesh_Default), +	mNavMeshSlot(), +	mRegionCrossingSlot(), +	mAgentStateSlot()  { -	static LLPanelPathfindingRebakeNavmesh* panel = getPanel(); -	return panel;  } -BOOL LLPanelPathfindingRebakeNavmesh::postBuild() +LLMenuOptionPathfindingRebakeNavmesh::~LLMenuOptionPathfindingRebakeNavmesh()   { -	//Rebake button -	mNavMeshRebakeButton = findChild<LLButton>("navmesh_btn"); -	llassert(mNavMeshRebakeButton != NULL); -	mNavMeshRebakeButton->setCommitCallback(boost::bind(&LLPanelPathfindingRebakeNavmesh::onNavMeshRebakeClick, this)); -	LLHints::registerHintTarget("navmesh_btn", mNavMeshRebakeButton->getHandle()); -	 -	//Sending rebake request -	mNavMeshSendingButton = findChild<LLButton>("navmesh_btn_sending"); -	llassert(mNavMeshSendingButton != NULL); -	LLHints::registerHintTarget("navmesh_btn_sending", mNavMeshSendingButton->getHandle()); - -	//rebaking... -	mNavMeshBakingButton = findChild<LLButton>("navmesh_btn_baking"); -	llassert(mNavMeshBakingButton != NULL); -	LLHints::registerHintTarget("navmesh_btn_baking", mNavMeshBakingButton->getHandle()); - -	setMode(kRebakeNavMesh_Default); - -	createNavMeshStatusListenerForCurrentRegion(); - -	if ( !mRegionCrossingSlot.connected() ) +	if (getMode() == kRebakeNavMesh_RequestSent)  	{ -		mRegionCrossingSlot = LLEnvManagerNew::getInstance()->setRegionChangeCallback(boost::bind(&LLPanelPathfindingRebakeNavmesh::handleRegionBoundaryCrossed, this)); +		LL_WARNS("navmeshRebaking") << "During destruction of the LLMenuOptionPathfindingRebakeNavmesh " +			<< "singleton, the mode indicates that a request has been sent for which a response has yet " +			<< "to be received.  This could contribute to a crash on exit." << LL_ENDL;  	} -	if (!mAgentStateSlot.connected()) +	llassert(!mIsInitialized); +	if (mIsInitialized)  	{ -		mAgentStateSlot = LLPathfindingManager::getInstance()->registerAgentStateListener(boost::bind(&LLPanelPathfindingRebakeNavmesh::handleAgentState, this, _1)); +		quit();  	} -	LLPathfindingManager::getInstance()->requestGetAgentState(); - -	return LLPanel::postBuild();  } -void LLPanelPathfindingRebakeNavmesh::draw() +void LLMenuOptionPathfindingRebakeNavmesh::initialize()  { -	if (doDraw()) +	llassert(!mIsInitialized); +	if (!mIsInitialized)  	{ -		updatePosition(); -		LLPanel::draw(); +		mIsInitialized = true; + +		setMode(kRebakeNavMesh_Default); + +		createNavMeshStatusListenerForCurrentRegion(); + +		if ( !mRegionCrossingSlot.connected() ) +		{ +			mRegionCrossingSlot = LLEnvManagerNew::getInstance()->setRegionChangeCallback(boost::bind(&LLMenuOptionPathfindingRebakeNavmesh::handleRegionBoundaryCrossed, this)); +		} + +		if (!mAgentStateSlot.connected()) +		{ +			mAgentStateSlot = LLPathfindingManager::getInstance()->registerAgentStateListener(boost::bind(&LLMenuOptionPathfindingRebakeNavmesh::handleAgentState, this, _1)); +		} +		LLPathfindingManager::getInstance()->requestGetAgentState();  	}  } -BOOL LLPanelPathfindingRebakeNavmesh::handleToolTip( S32 x, S32 y, MASK mask ) +void LLMenuOptionPathfindingRebakeNavmesh::quit()  { -	LLToolTipMgr::instance().unblockToolTips(); - -	if (mNavMeshRebakeButton->getVisible()) +	llassert(mIsInitialized); +	if (mIsInitialized)  	{ -		LLToolTipMgr::instance().show(mNavMeshRebakeButton->getToolTip()); -	} -	else if (mNavMeshSendingButton->getVisible()) -	{ -		LLToolTipMgr::instance().show(mNavMeshSendingButton->getToolTip()); -	} -	else if (mNavMeshBakingButton->getVisible()) -	{ -		LLToolTipMgr::instance().show(mNavMeshBakingButton->getToolTip()); -	} +		if (mNavMeshSlot.connected()) +		{ +			mNavMeshSlot.disconnect(); +		} -	return LLPanel::handleToolTip(x, y, mask); -} +		if (mRegionCrossingSlot.connected()) +		{ +			mRegionCrossingSlot.disconnect(); +		} -LLPanelPathfindingRebakeNavmesh::LLPanelPathfindingRebakeNavmesh()  -	: LLPanel(), -	mCanRebakeRegion(FALSE), -	mRebakeNavMeshMode(kRebakeNavMesh_Default), -	mNavMeshRebakeButton(NULL), -	mNavMeshSendingButton(NULL), -	mNavMeshBakingButton(NULL), -	mNavMeshSlot(), -	mRegionCrossingSlot(), -	mAgentStateSlot() -{ -	// make sure we have the only instance of this class -	static bool b = true; -	llassert_always(b); -	b=false; -} +		if (mAgentStateSlot.connected()) +		{ +			mAgentStateSlot.disconnect(); +		} -LLPanelPathfindingRebakeNavmesh::~LLPanelPathfindingRebakeNavmesh()  -{ +		mIsInitialized = false; +	}  } -LLPanelPathfindingRebakeNavmesh* LLPanelPathfindingRebakeNavmesh::getPanel() +bool LLMenuOptionPathfindingRebakeNavmesh::canRebakeRegion() const  { -	LLPanelPathfindingRebakeNavmesh* panel = new LLPanelPathfindingRebakeNavmesh(); -	panel->buildFromFile("panel_navmesh_rebake.xml"); -	return panel; +	if (!mIsInitialized) +	{ +		LL_ERRS("navmeshRebaking") << "LLMenuOptionPathfindingRebakeNavmesh class has not been initialized " +			<< "when the ability to rebake navmesh is being requested." << LL_ENDL; +	} +	return mCanRebakeRegion;  } -void LLPanelPathfindingRebakeNavmesh::setMode(ERebakeNavMeshMode pRebakeNavMeshMode) +LLMenuOptionPathfindingRebakeNavmesh::ERebakeNavMeshMode LLMenuOptionPathfindingRebakeNavmesh::getMode() const  { -	if (pRebakeNavMeshMode == kRebakeNavMesh_Available) +	if (!mIsInitialized)  	{ -		LLNotificationsUtil::add("PathfindingRebakeNavmesh"); +		LL_ERRS("navmeshRebaking") << "LLMenuOptionPathfindingRebakeNavmesh class has not been initialized " +			<< "when the mode is being requested." << LL_ENDL;  	} -	mNavMeshRebakeButton->setVisible(pRebakeNavMeshMode == kRebakeNavMesh_Available); -	mNavMeshSendingButton->setVisible(pRebakeNavMeshMode == kRebakeNavMesh_RequestSent); -	mNavMeshBakingButton->setVisible(pRebakeNavMeshMode == kRebakeNavMesh_InProgress); -	mRebakeNavMeshMode = pRebakeNavMeshMode; +	return mRebakeNavMeshMode;  } -LLPanelPathfindingRebakeNavmesh::ERebakeNavMeshMode LLPanelPathfindingRebakeNavmesh::getMode() const +void LLMenuOptionPathfindingRebakeNavmesh::sendRequestRebakeNavmesh()  { -	return mRebakeNavMeshMode; +	if (!mIsInitialized) +	{ +		LL_ERRS("navmeshRebaking") << "LLMenuOptionPathfindingRebakeNavmesh class has not been initialized " +			<< "when the request is being made to rebake the navmesh." << LL_ENDL; +	} +	else +	{ +		if (!canRebakeRegion()) +		{ +			LL_WARNS("navmeshRebaking") << "attempting to rebake navmesh when user does not have permissions " +				<< "on this region" << LL_ENDL; +		} +		if (getMode() != kRebakeNavMesh_Available) +		{ +			LL_WARNS("navmeshRebaking") << "attempting to rebake navmesh when mode is not available" +				<< LL_ENDL; +		} + +		setMode(kRebakeNavMesh_RequestSent); +		LLPathfindingManager::getInstance()->requestRebakeNavMesh(boost::bind(&LLMenuOptionPathfindingRebakeNavmesh::handleRebakeNavMeshResponse, this, _1)); +	}  } -void LLPanelPathfindingRebakeNavmesh::onNavMeshRebakeClick() +void LLMenuOptionPathfindingRebakeNavmesh::setMode(ERebakeNavMeshMode pRebakeNavMeshMode)  { -	setMode(kRebakeNavMesh_RequestSent); -	LLPathfindingManager::getInstance()->requestRebakeNavMesh(boost::bind(&LLPanelPathfindingRebakeNavmesh::handleRebakeNavMeshResponse, this, _1)); +	mRebakeNavMeshMode = pRebakeNavMeshMode;  } -void LLPanelPathfindingRebakeNavmesh::handleAgentState(BOOL pCanRebakeRegion) +void LLMenuOptionPathfindingRebakeNavmesh::handleAgentState(BOOL pCanRebakeRegion)  { +	llassert(mIsInitialized);  	mCanRebakeRegion = pCanRebakeRegion;  } -void LLPanelPathfindingRebakeNavmesh::handleRebakeNavMeshResponse(bool pResponseStatus) +void LLMenuOptionPathfindingRebakeNavmesh::handleRebakeNavMeshResponse(bool pResponseStatus)  { +	llassert(mIsInitialized);  	if (getMode() == kRebakeNavMesh_RequestSent)  	{  		setMode(pResponseStatus ? kRebakeNavMesh_InProgress : kRebakeNavMesh_Default); @@ -187,8 +186,9 @@ void LLPanelPathfindingRebakeNavmesh::handleRebakeNavMeshResponse(bool pResponse  	}  } -void LLPanelPathfindingRebakeNavmesh::handleNavMeshStatus(const LLPathfindingNavMeshStatus &pNavMeshStatus) +void LLMenuOptionPathfindingRebakeNavmesh::handleNavMeshStatus(const LLPathfindingNavMeshStatus &pNavMeshStatus)  { +	llassert(mIsInitialized);  	ERebakeNavMeshMode rebakeNavMeshMode = kRebakeNavMesh_Default;  	if (pNavMeshStatus.isValid())  	{ @@ -214,14 +214,15 @@ void LLPanelPathfindingRebakeNavmesh::handleNavMeshStatus(const LLPathfindingNav  	setMode(rebakeNavMeshMode);  } -void LLPanelPathfindingRebakeNavmesh::handleRegionBoundaryCrossed() +void LLMenuOptionPathfindingRebakeNavmesh::handleRegionBoundaryCrossed()  { +	llassert(mIsInitialized);  	createNavMeshStatusListenerForCurrentRegion();  	mCanRebakeRegion = FALSE;  	LLPathfindingManager::getInstance()->requestGetAgentState();  } -void LLPanelPathfindingRebakeNavmesh::createNavMeshStatusListenerForCurrentRegion() +void LLMenuOptionPathfindingRebakeNavmesh::createNavMeshStatusListenerForCurrentRegion()  {  	if (mNavMeshSlot.connected())  	{ @@ -231,39 +232,7 @@ void LLPanelPathfindingRebakeNavmesh::createNavMeshStatusListenerForCurrentRegio  	LLViewerRegion *currentRegion = gAgent.getRegion();  	if (currentRegion != NULL)  	{ -		mNavMeshSlot = LLPathfindingManager::getInstance()->registerNavMeshListenerForRegion(currentRegion, boost::bind(&LLPanelPathfindingRebakeNavmesh::handleNavMeshStatus, this, _2)); +		mNavMeshSlot = LLPathfindingManager::getInstance()->registerNavMeshListenerForRegion(currentRegion, boost::bind(&LLMenuOptionPathfindingRebakeNavmesh::handleNavMeshStatus, this, _2));  		LLPathfindingManager::getInstance()->requestGetNavMeshForRegion(currentRegion, true);  	}  } - -bool LLPanelPathfindingRebakeNavmesh::doDraw() const -{ -	return (mCanRebakeRegion && (mRebakeNavMeshMode != kRebakeNavMesh_NotAvailable)); -} - -void LLPanelPathfindingRebakeNavmesh::updatePosition() -{ -	S32 y_pos = 0; -	S32 bottom_tb_center = 0; - -	if (LLToolBar* toolbar_bottom = gToolBarView->getChild<LLToolBar>("toolbar_bottom")) -	{ -		y_pos = toolbar_bottom->getRect().getHeight(); -		bottom_tb_center = toolbar_bottom->getRect().getCenterX(); -	} - -	S32 left_tb_width = 0; -	if (LLToolBar* toolbar_left = gToolBarView->getChild<LLToolBar>("toolbar_left")) -	{ -		left_tb_width = toolbar_left->getRect().getWidth(); -	} - -	if(LLPanel* panel_ssf_container = getRootView()->getChild<LLPanel>("state_management_buttons_container")) -	{ -		panel_ssf_container->setOrigin(0, y_pos); -	} - -	S32 x_pos = bottom_tb_center-getRect().getWidth()/2 - left_tb_width + 113 /* width of stand/fly button */ + 10 /* margin */; - -	setOrigin( x_pos, 0); -} diff --git a/indra/newview/llmenuoptionpathfindingrebakenavmesh.h b/indra/newview/llmenuoptionpathfindingrebakenavmesh.h index e41ae9cae0..7b1d2873ba 100644 --- a/indra/newview/llmenuoptionpathfindingrebakenavmesh.h +++ b/indra/newview/llmenuoptionpathfindingrebakenavmesh.h @@ -24,34 +24,22 @@  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA  * $/LicenseInfo$  */ -#ifndef LL_LLPANELPATHFINDINGREBAKENAVMESH_H -#define LL_LLPANELPATHFINDINGREBAKENAVMESH_H +#ifndef LL_LLMENUOPTIONPATHFINDINGREBAKENAVMESH_H +#define LL_LLMENUOPTIONPATHFINDINGREBAKENAVMESH_H  #include <boost/signals2.hpp> -#include "llpanel.h"  #include "llpathfindingmanager.h"  #include "llpathfindingnavmesh.h" +#include "llsingleton.h" -class LLButton;  class LLPathfindingNavMeshStatus; -class LLPanelPathfindingRebakeNavmesh : public LLPanel +class LLMenuOptionPathfindingRebakeNavmesh : public LLSingleton<LLMenuOptionPathfindingRebakeNavmesh>  { - -	LOG_CLASS(LLPanelPathfindingRebakeNavmesh); +	LOG_CLASS(LLMenuOptionPathfindingRebakeNavmesh);  public: -	static LLPanelPathfindingRebakeNavmesh* getInstance(); - -	virtual BOOL postBuild(); - -	virtual void draw(); -	virtual BOOL handleToolTip( S32 x, S32 y, MASK mask ); - -protected: - -private:  	typedef enum  	{  		kRebakeNavMesh_Available, @@ -61,15 +49,21 @@ private:  		kRebakeNavMesh_Default = kRebakeNavMesh_NotAvailable  	} ERebakeNavMeshMode; -	LLPanelPathfindingRebakeNavmesh(); -	virtual ~LLPanelPathfindingRebakeNavmesh(); +	LLMenuOptionPathfindingRebakeNavmesh(); +	virtual ~LLMenuOptionPathfindingRebakeNavmesh(); -	static LLPanelPathfindingRebakeNavmesh* getPanel(); +	void               initialize(); +	void               quit(); -	void               setMode(ERebakeNavMeshMode pRebakeNavMeshMode); +	bool               canRebakeRegion() const;  	ERebakeNavMeshMode getMode() const; -	void onNavMeshRebakeClick(); +	void               sendRequestRebakeNavmesh(); + +protected: + +private: +	void setMode(ERebakeNavMeshMode pRebakeNavMeshMode);  	void handleAgentState(BOOL pCanRebakeRegion);  	void handleRebakeNavMeshResponse(bool pResponseStatus); @@ -78,19 +72,14 @@ private:  	void createNavMeshStatusListenerForCurrentRegion(); -	bool doDraw() const; -	void updatePosition(); +	bool                                     mIsInitialized; -	BOOL                                     mCanRebakeRegion; +	bool                                     mCanRebakeRegion;  	ERebakeNavMeshMode                       mRebakeNavMeshMode; -	LLButton*                                mNavMeshRebakeButton; -	LLButton*                                mNavMeshSendingButton; -	LLButton*                                mNavMeshBakingButton; -  	LLPathfindingNavMesh::navmesh_slot_t     mNavMeshSlot;  	boost::signals2::connection              mRegionCrossingSlot;  	LLPathfindingManager::agent_state_slot_t mAgentStateSlot;  }; -#endif // LL_LLPANELPATHFINDINGREBAKENAVMESH_H +#endif // LL_LLMENUOPTIONPATHFINDINGREBAKENAVMESH_H diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index d11e7e32c7..66b09d8eb8 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -83,6 +83,7 @@  #include "llinventoryfunctions.h"  #include "llpanellogin.h"  #include "llpanelblockedlist.h" +#include "llmenuoptionpathfindingrebakenavmesh.h"  #include "llmoveview.h"  #include "llparcel.h"  #include "llrootview.h" @@ -4876,6 +4877,53 @@ class LLToolsEnablePathfindingView : public view_listener_t  	}  }; +class LLToolsDoPathfindingRebakeRegion : public view_listener_t +{ +	bool handleEvent(const LLSD& userdata) +	{ +		bool hasPathfinding = (LLPathfindingManager::getInstance() != NULL); + +		if (hasPathfinding) +		{ +			LLMenuOptionPathfindingRebakeNavmesh::getInstance()->sendRequestRebakeNavmesh(); +		} + +		return hasPathfinding; +	} +}; + +class LLToolsEnablePathfindingRebakeRegion : public view_listener_t +{ +	bool handleEvent(const LLSD& userdata) +	{ +		bool returnValue = false; + +		if (LLPathfindingManager::getInstance() != NULL) +		{ +			LLMenuOptionPathfindingRebakeNavmesh *rebakeInstance = LLMenuOptionPathfindingRebakeNavmesh::getInstance(); +			returnValue = (rebakeInstance->canRebakeRegion() && +				(rebakeInstance->getMode() == LLMenuOptionPathfindingRebakeNavmesh::kRebakeNavMesh_Available)); +		} +		return returnValue; +	} +}; + +class LLToolsVisiblePathfindingRebakeRegion : public view_listener_t +{ +	bool handleEvent(const LLSD& userdata) +	{ +		bool returnValue = false; + +		if (LLPathfindingManager::getInstance() != NULL) +		{ +			LLMenuOptionPathfindingRebakeNavmesh *rebakeInstance = LLMenuOptionPathfindingRebakeNavmesh::getInstance(); +			returnValue = (rebakeInstance->canRebakeRegion() && +				(rebakeInstance->getMode() != LLMenuOptionPathfindingRebakeNavmesh::kRebakeNavMesh_NotAvailable)); +		} +		return returnValue; +	} +}; +  // Round the position of all root objects to the grid  class LLToolsSnapObjectXY : public view_listener_t  { @@ -8359,6 +8407,9 @@ void initialize_menus()  	view_listener_t::addMenu(new LLToolsEnablePathfinding(), "Tools.EnablePathfinding");  	view_listener_t::addMenu(new LLToolsEnablePathfindingView(), "Tools.EnablePathfindingView"); +	view_listener_t::addMenu(new LLToolsDoPathfindingRebakeRegion(), "Tools.DoPathfindingRebakeRegion"); +	view_listener_t::addMenu(new LLToolsEnablePathfindingRebakeRegion(), "Tools.EnablePathfindingRebakeRegion"); +	view_listener_t::addMenu(new LLToolsVisiblePathfindingRebakeRegion(), "Tools.VisiblePathfindingRebakeRegion");  	// Help menu  	// most items use the ShowFloater method diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index ec45a507e8..1605a910c9 100755 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -1931,11 +1931,10 @@ void LLViewerWindow::initWorldUI()  	LLPanelStandStopFlying* panel_stand_stop_flying	= LLPanelStandStopFlying::getInstance();  	panel_ssf_container->addChild(panel_stand_stop_flying); -	LLPanelPathfindingRebakeNavmesh *panel_rebake_navmesh = LLPanelPathfindingRebakeNavmesh::getInstance(); -	panel_ssf_container->addChild(panel_rebake_navmesh); -  	panel_ssf_container->setVisible(TRUE); +	LLMenuOptionPathfindingRebakeNavmesh::getInstance()->initialize(); +  	// Load and make the toolbars visible  	// Note: we need to load the toolbars only *after* the user is logged in and IW  	if (gToolBarView) @@ -2005,6 +2004,8 @@ void LLViewerWindow::shutdownViews()  	mRootView = NULL;  	llinfos << "RootView deleted." << llendl ; +	LLMenuOptionPathfindingRebakeNavmesh::getInstance()->quit(); +  	// Automatically deleted as children of mRootView.  Fix the globals.  	gStatusBar = NULL;  	gIMMgr = NULL; diff --git a/indra/newview/skins/default/xui/de/panel_navmesh_rebake.xml b/indra/newview/skins/default/xui/de/panel_navmesh_rebake.xml deleted file mode 100644 index 44be6d67b1..0000000000 --- a/indra/newview/skins/default/xui/de/panel_navmesh_rebake.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="panel_navmesh_rebake"> -	<button label="Region neu formen" name="navmesh_btn" tool_tip="Klicken, um das Navmesh der Region neu zu formen."/> -	<button label="Neuformen wird angefordert" name="navmesh_btn_sending" tool_tip="Anforderung zum Neuformen wird an den Server gesendet."/> -	<button label="Region wird neu geformt" name="navmesh_btn_baking" tool_tip="Region wird neu geformt. Nach Abschluss des Vorgangs verschwindet diese Schaltfläche."/> -</panel> diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index 0adac8630e..abfaf75b7f 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -984,6 +984,16 @@            <menu_item_call.on_enable                function="Tools.EnablePathfindingView" />          </menu_item_call> +        <menu_item_call +            label="Rebake region" +            name="pathfinding_rebake_navmesh_item"> +          <menu_item_call.on_click +              function="Tools.DoPathfindingRebakeRegion"/> +          <menu_item_call.on_enable +              function="Tools.EnablePathfindingRebakeRegion" /> +          <menu_item_call.on_visible +              function="Tools.VisiblePathfindingRebakeRegion" /> +        </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 8e6de6ed4f..9dae77a304 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -6076,26 +6076,6 @@ This area has building disabled. You can't build or rez objects here.    <notification     icon="alertmodal.tga" -   name="PathfindingRebakeNavmesh" -   type="alertmodal"> -    <unique/> -    Changing certain objects in this region could cause other moving objects to behave incorrectly.  To make moving objects behave correctly, click the “Rebake region” button.  Choose “Help” for more information. -    <url -      option="1" -      name="url" -      target = "_external"> -      http://wiki.secondlife.com/wiki/Pathfinding_Tools_in_the_Second_Life_Viewer -    </url> -    <usetemplate -     name="okhelpignore" -     ignoretext="Changing certain objects in this region could cause other moving objects to behave incorrectly." -     yestext="OK" -     helptext="Help" -     /> -  </notification> - -  <notification -   icon="alertmodal.tga"     name="PathfindingCannotRebakeNavmesh"     type="alertmodal">      <unique/> diff --git a/indra/newview/skins/default/xui/en/panel_navmesh_rebake.xml b/indra/newview/skins/default/xui/en/panel_navmesh_rebake.xml deleted file mode 100644 index 90308a2ca9..0000000000 --- a/indra/newview/skins/default/xui/en/panel_navmesh_rebake.xml +++ /dev/null @@ -1,45 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<panel -    height="25" -    layout="topleft" -    name="panel_navmesh_rebake" -    mouse_opaque="false" -    visible="true" -    width="133"> -  <button -      follows="left|bottom" -      height="19" -      label="Rebake region" -      layout="topleft" -      left="10" -      name="navmesh_btn" -      tool_tip="Click to rebake the region's navmesh." -      top="2" -      visible="false" -      enabled="true" -      width="120" /> -  <button -      follows="left|bottom" -      height="19" -      label="Requesting rebake" -      layout="topleft" -      left="10" -      name="navmesh_btn_sending" -      tool_tip="Sending rebake request to the server." -      top="2" -      visible="false" -      enabled="false" -      width="120" /> -  <button -      follows="left|bottom" -      height="19" -      label="Region is rebaking" -      layout="topleft" -      left="10" -      name="navmesh_btn_baking" -      tool_tip="Region is being rebaked.  When completed, this button will disappear." -      top="2" -      visible="false" -      enabled="false" -      width="120" /> -</panel> diff --git a/indra/newview/skins/default/xui/es/panel_navmesh_rebake.xml b/indra/newview/skins/default/xui/es/panel_navmesh_rebake.xml deleted file mode 100644 index 96df844512..0000000000 --- a/indra/newview/skins/default/xui/es/panel_navmesh_rebake.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="panel_navmesh_rebake"> -	<button label="Recargar la región" name="navmesh_btn" tool_tip="Pulsa para recargar el navmesh de la región."/> -	<button label="Solicitando recarga" name="navmesh_btn_sending" tool_tip="Enviando la solicitud de recarga al servidor."/> -	<button label="La región se está recargando" name="navmesh_btn_baking" tool_tip="La región se está recargando.  Este botón desaparecerá cuando finalice la recarga."/> -</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_navmesh_rebake.xml b/indra/newview/skins/default/xui/fr/panel_navmesh_rebake.xml deleted file mode 100644 index 7acf092257..0000000000 --- a/indra/newview/skins/default/xui/fr/panel_navmesh_rebake.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="panel_navmesh_rebake"> -	<button label="Refiger la région" name="navmesh_btn" tool_tip="Cliquer pour refiger le maillage de navigation de la région."/> -	<button label="Demande consistant à refiger la région en cours..." name="navmesh_btn_sending" tool_tip="Envoi de la demande consistant à refiger la région au serveur..."/> -	<button label="La région se refige..." name="navmesh_btn_baking" tool_tip="La région se refige. Ce bouton disparaîtra lorsque le processus sera terminé."/> -</panel> diff --git a/indra/newview/skins/default/xui/it/panel_navmesh_rebake.xml b/indra/newview/skins/default/xui/it/panel_navmesh_rebake.xml deleted file mode 100644 index 432754076a..0000000000 --- a/indra/newview/skins/default/xui/it/panel_navmesh_rebake.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="panel_navmesh_rebake"> -	<button label="Rebake regione" name="navmesh_btn" tool_tip="Fai clic per eseguire rebake sul navmesh della regione"/> -	<button label="Richiesta rebake" name="navmesh_btn_sending" tool_tip="Invio richiesta rebake al server."/> -	<button label="Rebake regione in corso" name="navmesh_btn_baking" tool_tip="Rebake della regione in corso.  Al termine, questo pulsante non sarà più visibile."/> -</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_navmesh_rebake.xml b/indra/newview/skins/default/xui/ja/panel_navmesh_rebake.xml deleted file mode 100644 index ea3ec32424..0000000000 --- a/indra/newview/skins/default/xui/ja/panel_navmesh_rebake.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="panel_navmesh_rebake"> -	<button label="地域の再構築" name="navmesh_btn" tool_tip="クリックしてこの地域のナビメッシュを再構築します。"/> -	<button label="再構築をリクエスト中" name="navmesh_btn_sending" tool_tip="再構築リクエストをサーバーに送信しています。"/> -	<button label="地域(リージョン)を再構築中" name="navmesh_btn_baking" tool_tip="地域を再構築しています。完了すると、このボタンは消えます。"/> -</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_navmesh_rebake.xml b/indra/newview/skins/default/xui/pt/panel_navmesh_rebake.xml deleted file mode 100644 index aa885ae031..0000000000 --- a/indra/newview/skins/default/xui/pt/panel_navmesh_rebake.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="panel_navmesh_rebake"> -	<button label="Recarregar região" name="navmesh_btn" tool_tip="Clique para recarregar o navmesh da região."/> -	<button label="Solicitando recarregamento" name="navmesh_btn_sending" tool_tip="Enviando solicitação de recarregamento para o servidor."/> -	<button label="A região está recarregando" name="navmesh_btn_baking" tool_tip="A região está sendo recarregada.  Este botão desaparecerá após a conclusão."/> -</panel> diff --git a/indra/newview/skins/default/xui/ru/panel_navmesh_rebake.xml b/indra/newview/skins/default/xui/ru/panel_navmesh_rebake.xml deleted file mode 100644 index fdc374a024..0000000000 --- a/indra/newview/skins/default/xui/ru/panel_navmesh_rebake.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="panel_navmesh_rebake"> -	<button label="Восстановить регион" name="navmesh_btn" tool_tip="Восстановить навигационную сетку региона."/> -	<button label="Запрос на восстановление" name="navmesh_btn_sending" tool_tip="Отправка запроса на восстановление на сервер."/> -	<button label="Идет восстановление региона" name="navmesh_btn_baking" tool_tip="Идет восстановление региона.  Когда оно завершится, эта кнопка исчезнет."/> -</panel> diff --git a/indra/newview/skins/default/xui/tr/panel_navmesh_rebake.xml b/indra/newview/skins/default/xui/tr/panel_navmesh_rebake.xml deleted file mode 100644 index 78cb8bcc02..0000000000 --- a/indra/newview/skins/default/xui/tr/panel_navmesh_rebake.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="panel_navmesh_rebake"> -	<button label="Bölgeyi yeniden kaydet" name="navmesh_btn" tool_tip="Bölgenin navigasyon örgüsünü tekrar kaydetmek için tıkla."/> -	<button label="Yeniden kaydetme talep ediliyor" name="navmesh_btn_sending" tool_tip="Yeniden kaydetme talebi sunucuya gönderiliyor."/> -	<button label="Bölge yeniden kaydediliyor" name="navmesh_btn_baking" tool_tip="Bölge yeniden kaydediliyor.  Tamamlandığında bu düğme kaybolacak."/> -</panel> | 
