summaryrefslogtreecommitdiff
path: root/indra/newview/llpathfindingcharacter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llpathfindingcharacter.cpp')
-rw-r--r--indra/newview/llpathfindingcharacter.cpp73
1 files changed, 21 insertions, 52 deletions
diff --git a/indra/newview/llpathfindingcharacter.cpp b/indra/newview/llpathfindingcharacter.cpp
index 0a3d737b73..61c2e39d63 100644
--- a/indra/newview/llpathfindingcharacter.cpp
+++ b/indra/newview/llpathfindingcharacter.cpp
@@ -3,9 +3,9 @@
* @author William Todd Stinson
* @brief Definition of a pathfinding character that contains various properties required for havok pathfinding.
*
- * $LicenseInfo:firstyear=2002&license=viewerlgpl$
+ * $LicenseInfo:firstyear=2012&license=viewerlgpl$
* Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
+ * 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
@@ -26,62 +26,28 @@
*/
#include "llviewerprecompiledheaders.h"
+
#include "llpathfindingcharacter.h"
+
+#include "llpathfindingobject.h"
#include "llsd.h"
-#include "v3math.h"
-#include "lluuid.h"
-#include "llavatarname.h"
-#include "llavatarnamecache.h"
-#define CHARACTER_NAME_FIELD "name"
-#define CHARACTER_DESCRIPTION_FIELD "description"
-#define CHARACTER_OWNER_FIELD "owner"
-#define CHARACTER_CPU_TIME_FIELD "cpu_time"
-#define CHARACTER_POSITION_FIELD "position"
+#define CHARACTER_CPU_TIME_FIELD "cpu_time"
//---------------------------------------------------------------------------
// LLPathfindingCharacter
//---------------------------------------------------------------------------
-LLPathfindingCharacter::LLPathfindingCharacter(const std::string &pUUID, const LLSD& pCharacterItem)
- : mUUID(pUUID),
- mName(),
- mDescription(),
- mOwnerUUID(),
- mOwnerName(),
- mCPUTime(0U),
- mLocation(LLVector3::zero)
+LLPathfindingCharacter::LLPathfindingCharacter(const std::string &pUUID, const LLSD& pCharacterData)
+ : LLPathfindingObject(pUUID, pCharacterData),
+ mCPUTime(0U)
{
- llassert(pCharacterItem.has(CHARACTER_NAME_FIELD));
- llassert(pCharacterItem.get(CHARACTER_NAME_FIELD).isString());
- mName = pCharacterItem.get(CHARACTER_NAME_FIELD).asString();
-
- llassert(pCharacterItem.has(CHARACTER_DESCRIPTION_FIELD));
- llassert(pCharacterItem.get(CHARACTER_DESCRIPTION_FIELD).isString());
- mDescription = pCharacterItem.get(CHARACTER_DESCRIPTION_FIELD).asString();
-
- llassert(pCharacterItem.has(CHARACTER_OWNER_FIELD));
- llassert(pCharacterItem.get(CHARACTER_OWNER_FIELD).isUUID());
- mOwnerUUID = pCharacterItem.get(CHARACTER_OWNER_FIELD).asUUID();
- LLAvatarNameCache::get(mOwnerUUID, &mOwnerName);
-
- llassert(pCharacterItem.has(CHARACTER_CPU_TIME_FIELD));
- llassert(pCharacterItem.get(CHARACTER_CPU_TIME_FIELD).isReal());
- mCPUTime = pCharacterItem.get(CHARACTER_CPU_TIME_FIELD).asReal();
-
- llassert(pCharacterItem.has(CHARACTER_POSITION_FIELD));
- llassert(pCharacterItem.get(CHARACTER_POSITION_FIELD).isArray());
- mLocation.setValue(pCharacterItem.get(CHARACTER_POSITION_FIELD));
+ parseCharacterData(pCharacterData);
}
LLPathfindingCharacter::LLPathfindingCharacter(const LLPathfindingCharacter& pOther)
- : mUUID(pOther.mUUID),
- mName(pOther.mName),
- mDescription(pOther.mDescription),
- mOwnerUUID(pOther.mOwnerUUID),
- mOwnerName(pOther.mOwnerName),
- mCPUTime(pOther.mCPUTime),
- mLocation(pOther.mLocation)
+ : LLPathfindingObject(pOther),
+ mCPUTime(pOther.mCPUTime)
{
}
@@ -91,13 +57,16 @@ LLPathfindingCharacter::~LLPathfindingCharacter()
LLPathfindingCharacter& LLPathfindingCharacter::operator =(const LLPathfindingCharacter& pOther)
{
- mUUID = pOther.mUUID;
- mName = pOther.mName;
- mDescription = pOther.mDescription;
- mOwnerUUID = pOther.mOwnerUUID;
- mOwnerName = pOther.mOwnerName;
+ dynamic_cast<LLPathfindingObject &>(*this) = pOther;
+
mCPUTime = pOther.mCPUTime;
- mLocation = pOther.mLocation;
return *this;
}
+
+void LLPathfindingCharacter::parseCharacterData(const LLSD &pCharacterData)
+{
+ llassert(pCharacterData.has(CHARACTER_CPU_TIME_FIELD));
+ llassert(pCharacterData.get(CHARACTER_CPU_TIME_FIELD).isReal());
+ mCPUTime = pCharacterData.get(CHARACTER_CPU_TIME_FIELD).asReal();
+}