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.cpp57
1 files changed, 54 insertions, 3 deletions
diff --git a/indra/newview/llpathfindingcharacter.cpp b/indra/newview/llpathfindingcharacter.cpp
index 61c2e39d63..0696783bf7 100644
--- a/indra/newview/llpathfindingcharacter.cpp
+++ b/indra/newview/llpathfindingcharacter.cpp
@@ -32,7 +32,10 @@
#include "llpathfindingobject.h"
#include "llsd.h"
-#define CHARACTER_CPU_TIME_FIELD "cpu_time"
+#define CHARACTER_CPU_TIME_FIELD "cpu_time"
+#define CHARACTER_HORIZONTAL_FIELD "horizontal"
+#define CHARACTER_LENGTH_FIELD "length"
+#define CHARACTER_RADIUS_FIELD "radius"
//---------------------------------------------------------------------------
// LLPathfindingCharacter
@@ -40,14 +43,26 @@
LLPathfindingCharacter::LLPathfindingCharacter(const std::string &pUUID, const LLSD& pCharacterData)
: LLPathfindingObject(pUUID, pCharacterData),
- mCPUTime(0U)
+ mCPUTime(0U),
+#ifndef SERVER_SIDE_CHARACTER_SHAPE_ROLLOUT_COMPLETE
+ mHasShapeData(false),
+#endif // SERVER_SIDE_CHARACTER_SHAPE_ROLLOUT_COMPLETE
+ mIsHorizontal(FALSE),
+ mLength(0.0f),
+ mRadius(0.0f)
{
parseCharacterData(pCharacterData);
}
LLPathfindingCharacter::LLPathfindingCharacter(const LLPathfindingCharacter& pOther)
: LLPathfindingObject(pOther),
- mCPUTime(pOther.mCPUTime)
+ mCPUTime(pOther.mCPUTime),
+#ifndef SERVER_SIDE_CHARACTER_SHAPE_ROLLOUT_COMPLETE
+ mHasShapeData(pOther.mHasShapeData),
+#endif // SERVER_SIDE_CHARACTER_SHAPE_ROLLOUT_COMPLETE
+ mIsHorizontal(pOther.mIsHorizontal),
+ mLength(pOther.mLength),
+ mRadius(pOther.mRadius)
{
}
@@ -60,6 +75,12 @@ LLPathfindingCharacter& LLPathfindingCharacter::operator =(const LLPathfindingCh
dynamic_cast<LLPathfindingObject &>(*this) = pOther;
mCPUTime = pOther.mCPUTime;
+#ifndef SERVER_SIDE_CHARACTER_SHAPE_ROLLOUT_COMPLETE
+ mHasShapeData = pOther.mHasShapeData;
+#endif // SERVER_SIDE_CHARACTER_SHAPE_ROLLOUT_COMPLETE
+ mIsHorizontal = pOther.mIsHorizontal;
+ mLength = pOther.mLength;
+ mRadius = pOther.mRadius;
return *this;
}
@@ -69,4 +90,34 @@ 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();
+
+#ifndef SERVER_SIDE_CHARACTER_SHAPE_ROLLOUT_COMPLETE
+ mHasShapeData = pCharacterData.has(CHARACTER_HORIZONTAL_FIELD);
+ if (mHasShapeData)
+ {
+ llassert(pCharacterData.has(CHARACTER_HORIZONTAL_FIELD));
+ llassert(pCharacterData.get(CHARACTER_HORIZONTAL_FIELD).isBoolean());
+ mIsHorizontal = pCharacterData.get(CHARACTER_HORIZONTAL_FIELD).asBoolean();
+
+ llassert(pCharacterData.has(CHARACTER_LENGTH_FIELD));
+ llassert(pCharacterData.get(CHARACTER_LENGTH_FIELD).isReal());
+ mLength = pCharacterData.get(CHARACTER_LENGTH_FIELD).asReal();
+
+ llassert(pCharacterData.has(CHARACTER_RADIUS_FIELD));
+ llassert(pCharacterData.get(CHARACTER_RADIUS_FIELD).isReal());
+ mRadius = pCharacterData.get(CHARACTER_RADIUS_FIELD).asReal();
+ }
+#else // SERVER_SIDE_CHARACTER_SHAPE_ROLLOUT_COMPLETE
+ llassert(pCharacterData.has(CHARACTER_HORIZONTAL_FIELD));
+ llassert(pCharacterData.get(CHARACTER_HORIZONTAL_FIELD).isBoolean());
+ mIsHorizontal = pCharacterData.get(CHARACTER_HORIZONTAL_FIELD).asBoolean();
+
+ llassert(pCharacterData.has(CHARACTER_LENGTH_FIELD));
+ llassert(pCharacterData.get(CHARACTER_LENGTH_FIELD).isReal());
+ mLength = pCharacterData.get(CHARACTER_LENGTH_FIELD).asReal();
+
+ llassert(pCharacterData.has(CHARACTER_RADIUS_FIELD));
+ llassert(pCharacterData.get(CHARACTER_RADIUS_FIELD).isReal());
+ mRadius = pCharacterData.get(CHARACTER_RADIUS_FIELD).asReal();
+#endif // SERVER_SIDE_CHARACTER_SHAPE_ROLLOUT_COMPLETE
}