summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorTodd Stinson <stinson@lindenlab.com>2012-06-13 17:19:52 -0700
committerTodd Stinson <stinson@lindenlab.com>2012-06-13 17:19:52 -0700
commit8973a3db31af2e3ce77fb3c614f15aac65a0ed07 (patch)
tree041bd7092dad94368a5d4acbc353b4bca66d054b /indra
parent379aff3520d368d1119e00f46684670030472832 (diff)
parent76f7c0e58c75add62c0fb989bf13bfa50952c4bd (diff)
Pull and merge from ssh://hg@bitbucket.org/stinson_linden/viewer-development-havokai.
Diffstat (limited to 'indra')
-rw-r--r--indra/newview/llfloaterpathfindingconsole.cpp4
-rw-r--r--indra/newview/llpanelnavmeshrebake.cpp90
-rw-r--r--indra/newview/llpanelnavmeshrebake.h20
-rw-r--r--indra/newview/llpathfindingmanager.cpp20
-rw-r--r--indra/newview/llpathfindingmanager.h4
-rw-r--r--indra/newview/llviewerwindow.cpp10
6 files changed, 37 insertions, 111 deletions
diff --git a/indra/newview/llfloaterpathfindingconsole.cpp b/indra/newview/llfloaterpathfindingconsole.cpp
index eae7aa4bcc..7d3efb5454 100644
--- a/indra/newview/llfloaterpathfindingconsole.cpp
+++ b/indra/newview/llfloaterpathfindingconsole.cpp
@@ -51,6 +51,7 @@
#include "pipeline.h"
#include "llpathinglib.h"
#include "llviewerparcelmgr.h"
+#include "llpanelnavmeshrebake.h"
#define XUI_RENDER_HEATMAP_NONE 0
#define XUI_RENDER_HEATMAP_A 1
@@ -264,6 +265,9 @@ void LLFloaterPathfindingConsole::onClose(bool pIsAppQuitting)
setDefaultInputs();
setConsoleState(kConsoleStateUnknown);
cleanupRenderableRestoreItems();
+ LLPanelNavMeshRebake* pPanelNavMeshRebake = LLPanelNavMeshRebake::getInstance();
+ if ( pPanelNavMeshRebake ) { pPanelNavMeshRebake->setVisible( FALSE ); }
+
LLFloater::onClose(pIsAppQuitting);
}
diff --git a/indra/newview/llpanelnavmeshrebake.cpp b/indra/newview/llpanelnavmeshrebake.cpp
index 92a082467f..0f88c6f1d3 100644
--- a/indra/newview/llpanelnavmeshrebake.cpp
+++ b/indra/newview/llpanelnavmeshrebake.cpp
@@ -1,7 +1,7 @@
/**
* @file LLPanelNavMeshRebake.cpp
- * @author
- * @brief
+ * @author prep
+ * @brief handles the buttons for navmesh rebaking
*
* $LicenseInfo:firstyear=2002&license=viewerlgpl$
* Second Life Viewer Source Code
@@ -26,18 +26,13 @@
*/
#include "llviewerprecompiledheaders.h"
-
#include "llpathfindingmanager.h"
-
#include <string>
#include <map>
-
#include <boost/function.hpp>
#include <boost/signals2.hpp>
-
#include "llpanelnavmeshrebake.h"
#include "llagent.h"
-#include "llfloaterreg.h"
#include "llhints.h"
#include "lltooltip.h"
#include "llbutton.h"
@@ -46,7 +41,6 @@
LLPanelNavMeshRebake::LLPanelNavMeshRebake()
: mNavMeshRebakeButton( NULL )
, mNavMeshBakingButton( NULL )
-, mAttached(false)
{
// make sure we have the only instance of this class
static bool b = true;
@@ -54,47 +48,21 @@ LLPanelNavMeshRebake::LLPanelNavMeshRebake()
b=false;
}
-// static
LLPanelNavMeshRebake* LLPanelNavMeshRebake::getInstance()
{
static LLPanelNavMeshRebake* panel = getPanel();
return panel;
}
-//static
-void LLPanelNavMeshRebake::setMode( ESNavMeshRebakeMode mode )
-{
- LLPanelNavMeshRebake* panel = getInstance();
-
- panel->mNavMeshRebakeButton->setVisible( true );
-
- //visibility of it should be updated after updating visibility of the buttons
- panel->setVisible(TRUE);
-}
-
-void LLPanelNavMeshRebake::clearMode( ESNavMeshRebakeMode mode )
-{
- LLPanelNavMeshRebake* panel = getInstance();
- switch(mode)
- {
- case NMRM_Visible:
- panel->mNavMeshRebakeButton->setVisible(FALSE);
- break;
-
- default:
- llerrs << "Unexpected mode is passed: " << mode << llendl;
- }
-}
-
BOOL LLPanelNavMeshRebake::postBuild()
{
- //Rebake
+ //Rebake initiated
mNavMeshRebakeButton = getChild<LLButton>("navmesh_btn");
mNavMeshRebakeButton->setCommitCallback(boost::bind(&LLPanelNavMeshRebake::onNavMeshRebakeClick, this));
mNavMeshRebakeButton->setVisible( TRUE );
LLHints::registerHintTarget("navmesh_btn", mNavMeshRebakeButton->getHandle());
- //Baking
+ //Baking...
mNavMeshBakingButton = getChild<LLButton>("navmesh_btn_baking");
mNavMeshBakingButton->setVisible( FALSE );
LLHints::registerHintTarget("navmesh_btn_baking", mNavMeshBakingButton->getHandle());
@@ -103,11 +71,10 @@ BOOL LLPanelNavMeshRebake::postBuild()
void LLPanelNavMeshRebake::setVisible( BOOL visible )
{
-
LLPanel::setVisible(visible);
}
-BOOL LLPanelNavMeshRebake::handleToolTip(S32 x, S32 y, MASK mask)
+BOOL LLPanelNavMeshRebake::handleToolTip( S32 x, S32 y, MASK mask )
{
LLToolTipMgr::instance().unblockToolTips();
@@ -118,67 +85,36 @@ BOOL LLPanelNavMeshRebake::handleToolTip(S32 x, S32 y, MASK mask)
return LLPanel::handleToolTip(x, y, mask);
}
-void LLPanelNavMeshRebake::reparent(LLView* rootp)
+void LLPanelNavMeshRebake::reparent( LLView* rootp )
{
- LLPanel* parent = dynamic_cast<LLPanel*>(getParent());
+ LLPanel* parent = dynamic_cast<LLPanel*>( getParent() );
if (!parent)
{
return;
}
-
rootp->addChild(this);
- mAttached = true;
}
-//static
LLPanelNavMeshRebake* LLPanelNavMeshRebake::getPanel()
{
LLPanelNavMeshRebake* panel = new LLPanelNavMeshRebake();
panel->buildFromFile("panel_navmesh_rebake.xml");
panel->setVisible(FALSE);
- //prep#panel->updatePosition();
+ //panel->updatePosition();
return panel;
}
void LLPanelNavMeshRebake::onNavMeshRebakeClick()
{
- setFocus(FALSE);
mNavMeshRebakeButton->setVisible( FALSE );
mNavMeshBakingButton->setVisible( TRUE );
mNavMeshBakingButton->setForcePressedState( TRUE );
- //post
+ LLPathfindingManager::getInstance()->triggerNavMeshRebuild();
}
-/**
- * Updates position to be center aligned with Move button.
- */
-/*
-void LLPanelNavMeshRebake::updatePosition()
+void LLPanelNavMeshRebake::resetButtonStates()
{
- if (mAttached) return;
-
- 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>("navmesh_rebake_container"))
- {
- panel_ssf_container->setOrigin(0, y_pos);
- }
-
- S32 x_pos = bottom_tb_center-getRect().getWidth()/2 - left_tb_width;
-
- setOrigin( x_pos, 0);
-
+ mNavMeshRebakeButton->setVisible( TRUE );
+ mNavMeshBakingButton->setVisible( FALSE );
+}
- */
diff --git a/indra/newview/llpanelnavmeshrebake.h b/indra/newview/llpanelnavmeshrebake.h
index 12a3902d8b..4e2381b6d6 100644
--- a/indra/newview/llpanelnavmeshrebake.h
+++ b/indra/newview/llpanelnavmeshrebake.h
@@ -1,7 +1,7 @@
/**
* @file llpanelenavmeshrebake.h
- * @author
- * @brief
+ * @author prep
+ * @brief handles the buttons for navmesh rebaking
*
* $LicenseInfo:firstyear=2002&license=viewerlgpl$
* Second Life Viewer Source Code
@@ -31,6 +31,7 @@
class LLPanelNavMeshRebake : public LLPanel
{
+
LOG_CLASS(LLPanelNavMeshRebake);
public:
@@ -43,10 +44,9 @@ public:
} ESNavMeshRebakeMode;
void reparent( LLView* rootp );
-
+ void resetButtonStates();
static LLPanelNavMeshRebake* getInstance();
- static void setMode( ESNavMeshRebakeMode mode );
- static void clearMode( ESNavMeshRebakeMode mode );
+
/*virtual*/ BOOL postBuild();
/*virtual*/ void setVisible( BOOL visible );
@@ -54,10 +54,9 @@ public:
/*virtual*/ void draw(){/*updatePosition(); */LLPanel::draw();}
/*virtual*/ BOOL handleToolTip( S32 x, S32 y, MASK mask );
-
protected:
- LLPanelNavMeshRebake();
+ LLPanelNavMeshRebake();
private:
static LLPanelNavMeshRebake* getPanel();
@@ -65,13 +64,10 @@ private:
//void updatePosition();
LLButton* mNavMeshRebakeButton;
- LLButton* mNavMeshBakingButton;
-
-
- LLHandle<LLPanel> mOriginalParent;
+ LLButton* mNavMeshBakingButton;
+ LLHandle<LLPanel> mOriginalParent;
- bool mAttached;
};
#endif //LL_NAVMESHREBAKE_H
diff --git a/indra/newview/llpathfindingmanager.cpp b/indra/newview/llpathfindingmanager.cpp
index fc296a4b83..7ce34fcfcb 100644
--- a/indra/newview/llpathfindingmanager.cpp
+++ b/indra/newview/llpathfindingmanager.cpp
@@ -333,7 +333,7 @@ LLPathfindingNavMesh::navmesh_slot_t LLPathfindingManager::registerNavMeshListen
void LLPathfindingManager::requestGetNavMeshForRegion(LLViewerRegion *pRegion)
{
LLPathfindingNavMeshPtr navMeshPtr = getNavMeshForRegion(pRegion);
-
+
if (pRegion == NULL)
{
navMeshPtr->handleNavMeshNotEnabled();
@@ -702,31 +702,30 @@ void LLPathfindingManager::displayNavMeshRebakePanel()
panel_nmr_container->setVisible( TRUE );
panel_namesh_rebake->reparent( rootp );
LLPanelNavMeshRebake::getInstance()->setVisible( TRUE );
+ LLPanelNavMeshRebake::getInstance()->resetButtonStates();
}
-void LLPathfindingManager::hideNavMeshRebakePanel()
+void LLPathfindingManager::hideNavMeshRebakePanel()
{
LLPanelNavMeshRebake::getInstance()->setVisible( FALSE );
}
-void LLPathfindingManager::handleNavMeshRebakeResult( const LLSD &pContent )
+void LLPathfindingManager::handleNavMeshRebakeError(U32 pStatus, const std::string &pReason, const std::string &pURL)
{
-
+ llwarns << "error with request to URL '" << pURL << "' because " << pReason << " (statusCode:" << pStatus << ")" << llendl;
}
-void LLPathfindingManager::handleNavMeshRebakeError(U32 pStatus, const std::string &pReason, const std::string &pURL)
+void LLPathfindingManager::handleNavMeshRebakeResult( const LLSD &pContent )
{
- llwarns << "error with request to URL '" << pURL << "' because " << pReason << " (statusCode:" << pStatus << ")" << llendl;
+ hideNavMeshRebakePanel();
}
-//prep#
+
void LLPathfindingManager::triggerNavMeshRebuild()
{
- LLSD mPostData;
std::string url = getNavMeshStatusURLForRegion( getCurrentRegion() );
-
if ( url.empty() )
{
- //prep#fix#error?
+ llwarns << "Error with request due to nonexistent URL"<<llendl;
}
else
{
@@ -735,7 +734,6 @@ void LLPathfindingManager::triggerNavMeshRebuild()
LLHTTPClient::ResponderPtr responder = new NavMeshRebakeResponder( url );
LLHTTPClient::post( url, mPostData, responder );
}
-
}
//---------------------------------------------------------------------------
// LLNavMeshSimStateChangeNode
diff --git a/indra/newview/llpathfindingmanager.h b/indra/newview/llpathfindingmanager.h
index 535c681499..b4bfbc7a34 100644
--- a/indra/newview/llpathfindingmanager.h
+++ b/indra/newview/llpathfindingmanager.h
@@ -93,7 +93,8 @@ public:
#endif // XXX_STINSON_AGENT_STATE_DELETE_ME
void handleNavMeshRebakeResult( const LLSD &pContent );
- void handleNavMeshRebakeError(U32 pStatus, const std::string &pReason, const std::string &pURL);
+ void handleNavMeshRebakeError( U32 pStatus, const std::string &pReason, const std::string &pURL );
+ void triggerNavMeshRebuild();
protected:
@@ -123,7 +124,6 @@ private:
void displayNavMeshRebakePanel();
void hideNavMeshRebakePanel();
- void triggerNavMeshRebuild();
#ifdef XXX_STINSON_AGENT_STATE_DELETE_ME
void requestGetAgentState();
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 4d31876bea..8bdab7d27a 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -200,9 +200,6 @@
#include "llviewerwindowlistener.h"
#include "llpaneltopinfobar.h"
-//prep#
-#include "llpathfindingmanager.h"
-
#if LL_WINDOWS
#include <tchar.h> // For Unicode conversion methods
#endif
@@ -1926,12 +1923,7 @@ void LLViewerWindow::initWorldUI()
LLPanelStandStopFlying* panel_stand_stop_flying = LLPanelStandStopFlying::getInstance();
panel_ssf_container->addChild(panel_stand_stop_flying);
panel_ssf_container->setVisible(TRUE);
- //prep#
- /*LLPanel* panel_nmr_container = getRootView()->getChild<LLPanel>("navmesh_rebake_container");
- LLPanelNavMeshRebake* panel_namesh_rebake = LLPanelNavMeshRebake::getInstance();
- panel_nmr_container->addChild(panel_namesh_rebake);
- panel_nmr_container->setVisible(TRUE);
- */
+
// Load and make the toolbars visible
// Note: we need to load the toolbars only *after* the user is logged in and IW
if (gToolBarView)