Files
SingularityViewer/indra/newview/llpathfindingnavmeshstatus.cpp

146 lines
3.9 KiB
C++

/**
* @file llpathfindingnavmeshstatus.cpp
* @brief Implementation of llpathfindingnavmeshstatus
* @author Stinson@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$
*/
#include "llviewerprecompiledheaders.h"
#include "llpathfindingnavmeshstatus.h"
#include <string>
#include "llsd.h"
#include "llstring.h"
#include "lluuid.h"
#define REGION_FIELD "region_id"
#define STATUS_FIELD "status"
#define VERSION_FIELD "version"
const std::string LLPathfindingNavMeshStatus::sStatusPending("pending");
const std::string LLPathfindingNavMeshStatus::sStatusBuilding("building");
const std::string LLPathfindingNavMeshStatus::sStatusComplete("complete");
const std::string LLPathfindingNavMeshStatus::sStatusRepending("repending");
//---------------------------------------------------------------------------
// LLPathfindingNavMeshStatus
//---------------------------------------------------------------------------
LLPathfindingNavMeshStatus::LLPathfindingNavMeshStatus()
: mIsValid(false),
mRegionUUID(),
mVersion(0U),
mStatus(kComplete)
{
}
LLPathfindingNavMeshStatus::LLPathfindingNavMeshStatus(const LLUUID &pRegionUUID)
: mIsValid(false),
mRegionUUID(pRegionUUID),
mVersion(0U),
mStatus(kComplete)
{
}
LLPathfindingNavMeshStatus::LLPathfindingNavMeshStatus(const LLUUID &pRegionUUID, const LLSD &pContent)
: mIsValid(true),
mRegionUUID(pRegionUUID),
mVersion(0U),
mStatus(kComplete)
{
parseStatus(pContent);
}
LLPathfindingNavMeshStatus::LLPathfindingNavMeshStatus(const LLSD &pContent)
: mIsValid(true),
mRegionUUID(),
mVersion(0U),
mStatus(kComplete)
{
llassert(pContent.has(REGION_FIELD));
llassert(pContent.get(REGION_FIELD).isUUID());
mRegionUUID = pContent.get(REGION_FIELD).asUUID();
parseStatus(pContent);
}
LLPathfindingNavMeshStatus::LLPathfindingNavMeshStatus(const LLPathfindingNavMeshStatus &pOther)
: mIsValid(pOther.mIsValid),
mRegionUUID(pOther.mRegionUUID),
mVersion(pOther.mVersion),
mStatus(pOther.mStatus)
{
}
LLPathfindingNavMeshStatus::~LLPathfindingNavMeshStatus()
{
}
LLPathfindingNavMeshStatus &LLPathfindingNavMeshStatus::operator =(const LLPathfindingNavMeshStatus &pOther)
{
mIsValid = pOther.mIsValid;
mRegionUUID = pOther.mRegionUUID;
mVersion = pOther.mVersion;
mStatus = pOther.mStatus;
return *this;
}
void LLPathfindingNavMeshStatus::parseStatus(const LLSD &pContent)
{
llassert(pContent.has(VERSION_FIELD));
llassert(pContent.get(VERSION_FIELD).isInteger());
llassert(pContent.get(VERSION_FIELD).asInteger() >= 0);
mVersion = static_cast<U32>(pContent.get(VERSION_FIELD).asInteger());
llassert(pContent.has(STATUS_FIELD));
llassert(pContent.get(STATUS_FIELD).isString());
std::string status = pContent.get(STATUS_FIELD).asString();
if (LLStringUtil::compareStrings(status, sStatusPending) == 0)
{
mStatus = kPending;
}
else if (LLStringUtil::compareStrings(status, sStatusBuilding) == 0)
{
mStatus = kBuilding;
}
else if (LLStringUtil::compareStrings(status, sStatusComplete) == 0)
{
mStatus = kComplete;
}
else if (LLStringUtil::compareStrings(status, sStatusRepending) == 0)
{
mStatus = kRepending;
}
else
{
mStatus = kComplete;
llassert(0);
}
}