From 1598724b462b062670a94353e397b092c1dbb598 Mon Sep 17 00:00:00 2001 From: Todd Stinson Date: Fri, 16 Dec 2011 18:11:43 -0800 Subject: Moving the call to initialize the LLPathingLib instance to the pathfinding console floater onOpen() callback. --- indra/newview/llfloaterpathfindingconsole.cpp | 262 ++++++++++++--------- indra/newview/llfloaterpathfindingconsole.h | 5 + indra/newview/llviewermenufile.cpp | 44 ---- indra/newview/skins/default/xui/en/menu_viewer.xml | 17 -- 4 files changed, 155 insertions(+), 173 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llfloaterpathfindingconsole.cpp b/indra/newview/llfloaterpathfindingconsole.cpp index 129921d93e..a7195fee83 100644 --- a/indra/newview/llfloaterpathfindingconsole.cpp +++ b/indra/newview/llfloaterpathfindingconsole.cpp @@ -1,85 +1,123 @@ -/** - * @file llfloaterpathfindingconsole.cpp - * @author William Todd Stinson - * @brief "Pathfinding console" floater, allowing manipulation of the Havok AI pathfinding settings. - * - * $LicenseInfo:firstyear=2002&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA - * $/LicenseInfo$ - */ - -#include "llviewerprecompiledheaders.h" -#include "llfloaterpathfindingconsole.h" -#include "llfloaterpathfindinglinksets.h" - -#include "llsd.h" -#include "llbutton.h" -#include "llcheckboxctrl.h" - +/** + * @file llfloaterpathfindingconsole.cpp + * @author William Todd Stinson + * @brief "Pathfinding console" floater, allowing manipulation of the Havok AI pathfinding settings. + * + * $LicenseInfo:firstyear=2002&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2010, Linden Research, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA + * $/LicenseInfo$ + */ + +#include "llviewerprecompiledheaders.h" +#include "llfloaterpathfindingconsole.h" +#include "llfloaterpathfindinglinksets.h" + +#include "llsd.h" +#include "llagent.h" +#include "llbutton.h" +#include "llcheckboxctrl.h" +#include "llnavmeshstation.h" +#include "llviewerregion.h" + #include "llpathinglib.h" - -//--------------------------------------------------------------------------- -// LLFloaterPathfindingConsole -//--------------------------------------------------------------------------- - -BOOL LLFloaterPathfindingConsole::postBuild() -{ - childSetAction("view_and_edit_linksets", boost::bind(&LLFloaterPathfindingConsole::onViewEditLinksetClicked, this)); - - mShowNavmeshCheckBox = findChild("show_navmesh_overlay"); - llassert(mShowNavmeshCheckBox != NULL); - mShowNavmeshCheckBox->setCommitCallback(boost::bind(&LLFloaterPathfindingConsole::onShowNavmeshToggle, this)); - - mShowExcludeVolumesCheckBox = findChild("show_exclusion_volumes"); - llassert(mShowExcludeVolumesCheckBox != NULL); - mShowExcludeVolumesCheckBox->setCommitCallback(boost::bind(&LLFloaterPathfindingConsole::onShowExcludeVolumesToggle, this)); - - mShowPathCheckBox = findChild("show_path"); - llassert(mShowPathCheckBox != NULL); - mShowPathCheckBox->setCommitCallback(boost::bind(&LLFloaterPathfindingConsole::onShowPathToggle, this)); - - mShowWaterPlaneCheckBox = findChild("show_water_plane"); - llassert(mShowWaterPlaneCheckBox != NULL); - mShowWaterPlaneCheckBox->setCommitCallback(boost::bind(&LLFloaterPathfindingConsole::onShowWaterPlaneToggle, this)); - - return LLFloater::postBuild(); -} - -LLFloaterPathfindingConsole::LLFloaterPathfindingConsole(const LLSD& pSeed) - : LLFloater(pSeed), - mShowNavmeshCheckBox(NULL), - mShowExcludeVolumesCheckBox(NULL), - mShowPathCheckBox(NULL), - mShowWaterPlaneCheckBox(NULL) -{ -} - -LLFloaterPathfindingConsole::~LLFloaterPathfindingConsole() -{ -} - -void LLFloaterPathfindingConsole::onShowNavmeshToggle() -{ - BOOL checkBoxValue = mShowNavmeshCheckBox->get(); - - LLPathingLib *llPathingLibInstance = LLPathingLib::getInstance(); + +//--------------------------------------------------------------------------- +// LLFloaterPathfindingConsole +//--------------------------------------------------------------------------- + +BOOL LLFloaterPathfindingConsole::postBuild() +{ + childSetAction("view_and_edit_linksets", boost::bind(&LLFloaterPathfindingConsole::onViewEditLinksetClicked, this)); + + mShowNavmeshCheckBox = findChild("show_navmesh_overlay"); + llassert(mShowNavmeshCheckBox != NULL); + mShowNavmeshCheckBox->setCommitCallback(boost::bind(&LLFloaterPathfindingConsole::onShowNavmeshToggle, this)); + + mShowExcludeVolumesCheckBox = findChild("show_exclusion_volumes"); + llassert(mShowExcludeVolumesCheckBox != NULL); + mShowExcludeVolumesCheckBox->setCommitCallback(boost::bind(&LLFloaterPathfindingConsole::onShowExcludeVolumesToggle, this)); + + mShowPathCheckBox = findChild("show_path"); + llassert(mShowPathCheckBox != NULL); + mShowPathCheckBox->setCommitCallback(boost::bind(&LLFloaterPathfindingConsole::onShowPathToggle, this)); + + mShowWaterPlaneCheckBox = findChild("show_water_plane"); + llassert(mShowWaterPlaneCheckBox != NULL); + mShowWaterPlaneCheckBox->setCommitCallback(boost::bind(&LLFloaterPathfindingConsole::onShowWaterPlaneToggle, this)); + + return LLFloater::postBuild(); +} + +LLFloaterPathfindingConsole::LLFloaterPathfindingConsole(const LLSD& pSeed) + : LLFloater(pSeed), + mShowNavmeshCheckBox(NULL), + mShowExcludeVolumesCheckBox(NULL), + mShowPathCheckBox(NULL), + mShowWaterPlaneCheckBox(NULL), + mNavmeshDownloadObserver() +{ +} + +LLFloaterPathfindingConsole::~LLFloaterPathfindingConsole() +{ +} + +void LLFloaterPathfindingConsole::onOpen(const LLSD& pKey) +{ + //make sure we have a pathing system + if ( !LLPathingLib::getInstance() ) + { + LLPathingLib::initSystem(); + } + //prep# test remove + //LLSD content; + //LLPathingLib::getInstance()->extractNavMeshSrcFromLLSD( content ); + //return true; + //prep# end test + if ( LLPathingLib::getInstance() == NULL ) + { + llinfos<<"No implementation of pathing library."<getCapability( capability ); + if ( !url.empty() ) + { + llinfos<<"Region has required caps of type ["<setNavMeshDownloadURL( url ); + LLNavMeshStation::getInstance()->downloadNavMeshSrc( mNavmeshDownloadObserver.getObserverHandle() ); + } + else + { + llinfos<<"Region has does not required caps of type ["<get(); + + LLPathingLib *llPathingLibInstance = LLPathingLib::getInstance(); if (llPathingLibInstance != NULL) { llPathingLibInstance->setRenderNavMesh(checkBoxValue); @@ -89,13 +127,13 @@ void LLFloaterPathfindingConsole::onShowNavmeshToggle() mShowNavmeshCheckBox->set(FALSE); llwarns << "cannot find LLPathingLib instance" << llendl; } -} - -void LLFloaterPathfindingConsole::onShowExcludeVolumesToggle() -{ - BOOL checkBoxValue = mShowExcludeVolumesCheckBox->get(); - - LLPathingLib *llPathingLibInstance = LLPathingLib::getInstance(); +} + +void LLFloaterPathfindingConsole::onShowExcludeVolumesToggle() +{ + BOOL checkBoxValue = mShowExcludeVolumesCheckBox->get(); + + LLPathingLib *llPathingLibInstance = LLPathingLib::getInstance(); if (llPathingLibInstance != NULL) { llPathingLibInstance->setRenderNavMeshandShapes(checkBoxValue); @@ -105,27 +143,27 @@ void LLFloaterPathfindingConsole::onShowExcludeVolumesToggle() mShowExcludeVolumesCheckBox->set(FALSE); llwarns << "cannot find LLPathingLib instance" << llendl; } -} - -void LLFloaterPathfindingConsole::onShowPathToggle() -{ - BOOL checkBoxValue = mShowPathCheckBox->get(); - - llwarns << "functionality has not yet been implemented to toggle '" - << mShowPathCheckBox->getLabel() << "' to " - << (checkBoxValue ? "ON" : "OFF") << llendl; -} - -void LLFloaterPathfindingConsole::onShowWaterPlaneToggle() -{ - BOOL checkBoxValue = mShowWaterPlaneCheckBox->get(); - - llwarns << "functionality has not yet been implemented to toggle '" - << mShowWaterPlaneCheckBox->getLabel() << "' to " - << (checkBoxValue ? "ON" : "OFF") << llendl; -} - -void LLFloaterPathfindingConsole::onViewEditLinksetClicked() -{ - LLFloaterPathfindingLinksets::openLinksetsEditor(); -} +} + +void LLFloaterPathfindingConsole::onShowPathToggle() +{ + BOOL checkBoxValue = mShowPathCheckBox->get(); + + llwarns << "functionality has not yet been implemented to toggle '" + << mShowPathCheckBox->getLabel() << "' to " + << (checkBoxValue ? "ON" : "OFF") << llendl; +} + +void LLFloaterPathfindingConsole::onShowWaterPlaneToggle() +{ + BOOL checkBoxValue = mShowWaterPlaneCheckBox->get(); + + llwarns << "functionality has not yet been implemented to toggle '" + << mShowWaterPlaneCheckBox->getLabel() << "' to " + << (checkBoxValue ? "ON" : "OFF") << llendl; +} + +void LLFloaterPathfindingConsole::onViewEditLinksetClicked() +{ + LLFloaterPathfindingLinksets::openLinksetsEditor(); +} diff --git a/indra/newview/llfloaterpathfindingconsole.h b/indra/newview/llfloaterpathfindingconsole.h index b6107ea64b..8dc9ccd342 100644 --- a/indra/newview/llfloaterpathfindingconsole.h +++ b/indra/newview/llfloaterpathfindingconsole.h @@ -29,6 +29,7 @@ #define LL_LLFLOATERPATHFINDINGCONSOLE_H #include "llfloater.h" +#include "llnavmeshstation.h" class LLSD; class LLCheckBoxCtrl; @@ -49,6 +50,8 @@ private: LLFloaterPathfindingConsole(const LLSD& pSeed); virtual ~LLFloaterPathfindingConsole(); + virtual void onOpen(const LLSD& pKey); + void onShowNavmeshToggle(); void onShowExcludeVolumesToggle(); void onShowPathToggle(); @@ -59,6 +62,8 @@ private: LLCheckBoxCtrl *mShowExcludeVolumesCheckBox; LLCheckBoxCtrl *mShowPathCheckBox; LLCheckBoxCtrl *mShowWaterPlaneCheckBox; + + LLNavMeshDownloadObserver mNavmeshDownloadObserver; }; #endif // LL_LLFLOATERPATHFINDINGCONSOLE_H diff --git a/indra/newview/llviewermenufile.cpp b/indra/newview/llviewermenufile.cpp index b5df16566a..99d08087d4 100644 --- a/indra/newview/llviewermenufile.cpp +++ b/indra/newview/llviewermenufile.cpp @@ -74,52 +74,10 @@ #include "lluuid.h" #include "llvorbisencode.h" #include "message.h" -#include "llpathinglib.h" -#include "llnavmeshstation.h" // system libraries #include -//prep# -class LLPathingTools : public view_listener_t, LLNavMeshDownloadObserver -{ - - bool handleEvent(const LLSD& userdata) - { - //make sure we have a pathing system - if ( !LLPathingLib::getInstance() ) - { - LLPathingLib::initSystem(); - } - //prep# test remove - //LLSD content; - //LLPathingLib::getInstance()->extractNavMeshSrcFromLLSD( content ); - //return true; - //prep# end test - if ( LLPathingLib::getInstance() == NULL ) - { - llinfos<<"No implementation of pathing library."<getCapability( capability ); - if ( !url.empty() ) - { - llinfos<<"Region has required caps of type ["<setNavMeshDownloadURL( url ); - LLNavMeshStation::getInstance()->downloadNavMeshSrc( getObserverHandle() ); - } - else - { - llinfos<<"Region has does not required caps of type ["< - - - - - - - - -