diff options
author | William Todd Stinson <stinson@lindenlab.com> | 2012-11-27 17:28:49 -0800 |
---|---|---|
committer | William Todd Stinson <stinson@lindenlab.com> | 2012-11-27 17:28:49 -0800 |
commit | 0011fb5e698732511ed8acafbd631909953536d8 (patch) | |
tree | c24535b1f459192b6d39b2634419132d704d69d0 /indra/newview/llmenuoptionpathfindingrebakenavmesh.h | |
parent | e46c10d7971b6cb422e5ac73e667491260521742 (diff) | |
parent | f5a47417fde70f78b99744386c6da0bcf78e60d5 (diff) |
Pull and merge from https://bitbucket.org/lindenlab/viewer-development.
Diffstat (limited to 'indra/newview/llmenuoptionpathfindingrebakenavmesh.h')
-rw-r--r-- | indra/newview/llmenuoptionpathfindingrebakenavmesh.h | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/indra/newview/llmenuoptionpathfindingrebakenavmesh.h b/indra/newview/llmenuoptionpathfindingrebakenavmesh.h new file mode 100644 index 0000000000..7b1d2873ba --- /dev/null +++ b/indra/newview/llmenuoptionpathfindingrebakenavmesh.h @@ -0,0 +1,85 @@ +/** +* @file llmenuoptionpathfindingrebakenavmesh.h +* @brief Header file for llmenuoptionpathfindingrebakenavmesh +* @author Prep@lindenlab.com +* +* $LicenseInfo:firstyear=2012&license=viewerlgpl$ +* Second Life Viewer Source Code +* Copyright (C) 2012, 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$ +*/ +#ifndef LL_LLMENUOPTIONPATHFINDINGREBAKENAVMESH_H +#define LL_LLMENUOPTIONPATHFINDINGREBAKENAVMESH_H + +#include <boost/signals2.hpp> + +#include "llpathfindingmanager.h" +#include "llpathfindingnavmesh.h" +#include "llsingleton.h" + +class LLPathfindingNavMeshStatus; + +class LLMenuOptionPathfindingRebakeNavmesh : public LLSingleton<LLMenuOptionPathfindingRebakeNavmesh> +{ + LOG_CLASS(LLMenuOptionPathfindingRebakeNavmesh); + +public: + typedef enum + { + kRebakeNavMesh_Available, + kRebakeNavMesh_RequestSent, + kRebakeNavMesh_InProgress, + kRebakeNavMesh_NotAvailable, + kRebakeNavMesh_Default = kRebakeNavMesh_NotAvailable + } ERebakeNavMeshMode; + + LLMenuOptionPathfindingRebakeNavmesh(); + virtual ~LLMenuOptionPathfindingRebakeNavmesh(); + + void initialize(); + void quit(); + + bool canRebakeRegion() const; + ERebakeNavMeshMode getMode() const; + + void sendRequestRebakeNavmesh(); + +protected: + +private: + void setMode(ERebakeNavMeshMode pRebakeNavMeshMode); + + void handleAgentState(BOOL pCanRebakeRegion); + void handleRebakeNavMeshResponse(bool pResponseStatus); + void handleNavMeshStatus(const LLPathfindingNavMeshStatus &pNavMeshStatus); + void handleRegionBoundaryCrossed(); + + void createNavMeshStatusListenerForCurrentRegion(); + + bool mIsInitialized; + + bool mCanRebakeRegion; + ERebakeNavMeshMode mRebakeNavMeshMode; + + LLPathfindingNavMesh::navmesh_slot_t mNavMeshSlot; + boost::signals2::connection mRegionCrossingSlot; + LLPathfindingManager::agent_state_slot_t mAgentStateSlot; +}; + +#endif // LL_LLMENUOPTIONPATHFINDINGREBAKENAVMESH_H |