summaryrefslogtreecommitdiff
path: root/indra/newview/llpathfindingnavmesh.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llpathfindingnavmesh.cpp')
-rw-r--r--indra/newview/llpathfindingnavmesh.cpp198
1 files changed, 99 insertions, 99 deletions
diff --git a/indra/newview/llpathfindingnavmesh.cpp b/indra/newview/llpathfindingnavmesh.cpp
index c297cac771..52a7383da6 100644
--- a/indra/newview/llpathfindingnavmesh.cpp
+++ b/indra/newview/llpathfindingnavmesh.cpp
@@ -1,4 +1,4 @@
-/**
+/**
* @file llpathfindingnavmesh.cpp
* @brief Implementation of llpathfindingnavmesh
* @author Stinson@lindenlab.com
@@ -45,10 +45,10 @@
//---------------------------------------------------------------------------
LLPathfindingNavMesh::LLPathfindingNavMesh(const LLUUID &pRegionUUID)
- : mNavMeshStatus(pRegionUUID),
- mNavMeshRequestStatus(kNavMeshRequestUnknown),
- mNavMeshSignal(),
- mNavMeshData()
+ : mNavMeshStatus(pRegionUUID),
+ mNavMeshRequestStatus(kNavMeshRequestUnknown),
+ mNavMeshSignal(),
+ mNavMeshData()
{
}
@@ -59,146 +59,146 @@ LLPathfindingNavMesh::~LLPathfindingNavMesh()
LLPathfindingNavMesh::navmesh_slot_t LLPathfindingNavMesh::registerNavMeshListener(navmesh_callback_t pNavMeshCallback)
{
- return mNavMeshSignal.connect(pNavMeshCallback);
+ return mNavMeshSignal.connect(pNavMeshCallback);
}
bool LLPathfindingNavMesh::hasNavMeshVersion(const LLPathfindingNavMeshStatus &pNavMeshStatus) const
{
- return ((mNavMeshStatus.getVersion() == pNavMeshStatus.getVersion()) &&
- ((mNavMeshRequestStatus == kNavMeshRequestStarted) || (mNavMeshRequestStatus == kNavMeshRequestCompleted) ||
- ((mNavMeshRequestStatus == kNavMeshRequestChecking) && !mNavMeshData.empty())));
+ return ((mNavMeshStatus.getVersion() == pNavMeshStatus.getVersion()) &&
+ ((mNavMeshRequestStatus == kNavMeshRequestStarted) || (mNavMeshRequestStatus == kNavMeshRequestCompleted) ||
+ ((mNavMeshRequestStatus == kNavMeshRequestChecking) && !mNavMeshData.empty())));
}
void LLPathfindingNavMesh::handleNavMeshWaitForRegionLoad()
{
- setRequestStatus(kNavMeshRequestWaiting);
+ setRequestStatus(kNavMeshRequestWaiting);
}
void LLPathfindingNavMesh::handleNavMeshCheckVersion()
{
- setRequestStatus(kNavMeshRequestChecking);
+ setRequestStatus(kNavMeshRequestChecking);
}
void LLPathfindingNavMesh::handleRefresh(const LLPathfindingNavMeshStatus &pNavMeshStatus)
{
- llassert(mNavMeshStatus.getRegionUUID() == pNavMeshStatus.getRegionUUID());
- llassert(mNavMeshStatus.getVersion() == pNavMeshStatus.getVersion());
- mNavMeshStatus = pNavMeshStatus;
- if (mNavMeshRequestStatus == kNavMeshRequestChecking)
- {
- llassert(!mNavMeshData.empty());
- setRequestStatus(kNavMeshRequestCompleted);
- }
- else
- {
- sendStatus();
- }
+ llassert(mNavMeshStatus.getRegionUUID() == pNavMeshStatus.getRegionUUID());
+ llassert(mNavMeshStatus.getVersion() == pNavMeshStatus.getVersion());
+ mNavMeshStatus = pNavMeshStatus;
+ if (mNavMeshRequestStatus == kNavMeshRequestChecking)
+ {
+ llassert(!mNavMeshData.empty());
+ setRequestStatus(kNavMeshRequestCompleted);
+ }
+ else
+ {
+ sendStatus();
+ }
}
void LLPathfindingNavMesh::handleNavMeshNewVersion(const LLPathfindingNavMeshStatus &pNavMeshStatus)
{
- llassert(mNavMeshStatus.getRegionUUID() == pNavMeshStatus.getRegionUUID());
- if (mNavMeshStatus.getVersion() == pNavMeshStatus.getVersion())
- {
- mNavMeshStatus = pNavMeshStatus;
- sendStatus();
- }
- else
- {
- mNavMeshData.clear();
- mNavMeshStatus = pNavMeshStatus;
- setRequestStatus(kNavMeshRequestNeedsUpdate);
- }
+ llassert(mNavMeshStatus.getRegionUUID() == pNavMeshStatus.getRegionUUID());
+ if (mNavMeshStatus.getVersion() == pNavMeshStatus.getVersion())
+ {
+ mNavMeshStatus = pNavMeshStatus;
+ sendStatus();
+ }
+ else
+ {
+ mNavMeshData.clear();
+ mNavMeshStatus = pNavMeshStatus;
+ setRequestStatus(kNavMeshRequestNeedsUpdate);
+ }
}
void LLPathfindingNavMesh::handleNavMeshStart(const LLPathfindingNavMeshStatus &pNavMeshStatus)
{
- llassert(mNavMeshStatus.getRegionUUID() == pNavMeshStatus.getRegionUUID());
- mNavMeshStatus = pNavMeshStatus;
- setRequestStatus(kNavMeshRequestStarted);
+ llassert(mNavMeshStatus.getRegionUUID() == pNavMeshStatus.getRegionUUID());
+ mNavMeshStatus = pNavMeshStatus;
+ setRequestStatus(kNavMeshRequestStarted);
}
void LLPathfindingNavMesh::handleNavMeshResult(const LLSD &pContent, U32 pNavMeshVersion)
{
- llassert(pContent.has(NAVMESH_VERSION_FIELD));
- if (pContent.has(NAVMESH_VERSION_FIELD))
- {
- llassert(pContent.get(NAVMESH_VERSION_FIELD).isInteger());
- llassert(pContent.get(NAVMESH_VERSION_FIELD).asInteger() >= 0);
- U32 embeddedNavMeshVersion = static_cast<U32>(pContent.get(NAVMESH_VERSION_FIELD).asInteger());
- llassert(embeddedNavMeshVersion == pNavMeshVersion); // stinson 03/13/2012 : does this ever occur?
- if (embeddedNavMeshVersion != pNavMeshVersion)
- {
- LL_WARNS() << "Mismatch between expected and embedded navmesh versions occurred" << LL_ENDL;
- pNavMeshVersion = embeddedNavMeshVersion;
- }
- }
-
- if (mNavMeshStatus.getVersion() == pNavMeshVersion)
- {
- ENavMeshRequestStatus status;
- if ( pContent.has(NAVMESH_DATA_FIELD) )
- {
- const LLSD::Binary &value = pContent.get(NAVMESH_DATA_FIELD).asBinary();
- unsigned int binSize = value.size();
- std::string newStr(reinterpret_cast<const char *>(&value[0]), binSize);
- std::istringstream streamdecomp( newStr );
- size_t decompBinSize = 0;
- bool valid = false;
- U8* pUncompressedNavMeshContainer = unzip_llsdNavMesh( valid, decompBinSize, streamdecomp, binSize ) ;
- if ( !valid )
- {
- LL_WARNS() << "Unable to decompress the navmesh llsd." << LL_ENDL;
- status = kNavMeshRequestError;
- }
- else
- {
- llassert(pUncompressedNavMeshContainer);
- mNavMeshData.resize( decompBinSize );
- memcpy( &mNavMeshData[0], &pUncompressedNavMeshContainer[0], decompBinSize );
- status = kNavMeshRequestCompleted;
- }
- if ( pUncompressedNavMeshContainer )
- {
- free( pUncompressedNavMeshContainer );
- }
- }
- else
- {
- LL_WARNS() << "No mesh data received" << LL_ENDL;
- status = kNavMeshRequestError;
- }
- setRequestStatus(status);
- }
+ llassert(pContent.has(NAVMESH_VERSION_FIELD));
+ if (pContent.has(NAVMESH_VERSION_FIELD))
+ {
+ llassert(pContent.get(NAVMESH_VERSION_FIELD).isInteger());
+ llassert(pContent.get(NAVMESH_VERSION_FIELD).asInteger() >= 0);
+ U32 embeddedNavMeshVersion = static_cast<U32>(pContent.get(NAVMESH_VERSION_FIELD).asInteger());
+ llassert(embeddedNavMeshVersion == pNavMeshVersion); // stinson 03/13/2012 : does this ever occur?
+ if (embeddedNavMeshVersion != pNavMeshVersion)
+ {
+ LL_WARNS() << "Mismatch between expected and embedded navmesh versions occurred" << LL_ENDL;
+ pNavMeshVersion = embeddedNavMeshVersion;
+ }
+ }
+
+ if (mNavMeshStatus.getVersion() == pNavMeshVersion)
+ {
+ ENavMeshRequestStatus status;
+ if ( pContent.has(NAVMESH_DATA_FIELD) )
+ {
+ const LLSD::Binary &value = pContent.get(NAVMESH_DATA_FIELD).asBinary();
+ unsigned int binSize = value.size();
+ std::string newStr(reinterpret_cast<const char *>(&value[0]), binSize);
+ std::istringstream streamdecomp( newStr );
+ size_t decompBinSize = 0;
+ bool valid = false;
+ U8* pUncompressedNavMeshContainer = unzip_llsdNavMesh( valid, decompBinSize, streamdecomp, binSize ) ;
+ if ( !valid )
+ {
+ LL_WARNS() << "Unable to decompress the navmesh llsd." << LL_ENDL;
+ status = kNavMeshRequestError;
+ }
+ else
+ {
+ llassert(pUncompressedNavMeshContainer);
+ mNavMeshData.resize( decompBinSize );
+ memcpy( &mNavMeshData[0], &pUncompressedNavMeshContainer[0], decompBinSize );
+ status = kNavMeshRequestCompleted;
+ }
+ if ( pUncompressedNavMeshContainer )
+ {
+ free( pUncompressedNavMeshContainer );
+ }
+ }
+ else
+ {
+ LL_WARNS() << "No mesh data received" << LL_ENDL;
+ status = kNavMeshRequestError;
+ }
+ setRequestStatus(status);
+ }
}
void LLPathfindingNavMesh::handleNavMeshNotEnabled()
{
- mNavMeshData.clear();
- setRequestStatus(kNavMeshRequestNotEnabled);
+ mNavMeshData.clear();
+ setRequestStatus(kNavMeshRequestNotEnabled);
}
void LLPathfindingNavMesh::handleNavMeshError()
{
- mNavMeshData.clear();
- setRequestStatus(kNavMeshRequestError);
+ mNavMeshData.clear();
+ setRequestStatus(kNavMeshRequestError);
}
void LLPathfindingNavMesh::handleNavMeshError(U32 pNavMeshVersion)
{
- if (mNavMeshStatus.getVersion() == pNavMeshVersion)
- {
- handleNavMeshError();
- }
+ if (mNavMeshStatus.getVersion() == pNavMeshVersion)
+ {
+ handleNavMeshError();
+ }
}
void LLPathfindingNavMesh::setRequestStatus(ENavMeshRequestStatus pNavMeshRequestStatus)
{
- mNavMeshRequestStatus = pNavMeshRequestStatus;
- sendStatus();
+ mNavMeshRequestStatus = pNavMeshRequestStatus;
+ sendStatus();
}
void LLPathfindingNavMesh::sendStatus()
{
- mNavMeshSignal(mNavMeshRequestStatus, mNavMeshStatus, mNavMeshData);
+ mNavMeshSignal(mNavMeshRequestStatus, mNavMeshStatus, mNavMeshData);
}