diff options
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/newview/llpathfindingcharacter.cpp | 57 | ||||
| -rw-r--r-- | indra/newview/llpathfindingcharacter.h | 18 | 
2 files changed, 70 insertions, 5 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  } diff --git a/indra/newview/llpathfindingcharacter.h b/indra/newview/llpathfindingcharacter.h index b030959274..6887a99886 100644 --- a/indra/newview/llpathfindingcharacter.h +++ b/indra/newview/llpathfindingcharacter.h @@ -41,14 +41,28 @@ public:  	LLPathfindingCharacter& operator =(const LLPathfindingCharacter& pOther); -	inline F32 getCPUTime() const {return mCPUTime;}; +	inline F32  getCPUTime() const   {return mCPUTime;}; + +#ifndef SERVER_SIDE_CHARACTER_SHAPE_ROLLOUT_COMPLETE +	inline bool hasShapeData() const {return mHasShapeData;}; +#endif // SERVER_SIDE_CHARACTER_SHAPE_ROLLOUT_COMPLETE +	inline BOOL isHorizontal() const {return mIsHorizontal;}; +	inline F32  getLength() const    {return mLength;}; +	inline F32  getRadius() const    {return mRadius;};  protected:  private:  	void parseCharacterData(const LLSD &pCharacterData); -	F32 mCPUTime; +	F32  mCPUTime; + +#ifndef SERVER_SIDE_CHARACTER_SHAPE_ROLLOUT_COMPLETE +	bool mHasShapeData; +#endif // SERVER_SIDE_CHARACTER_SHAPE_ROLLOUT_COMPLETE +	BOOL mIsHorizontal; +	F32  mLength; +	F32  mRadius;  };  #endif // LL_LLPATHFINDINGCHARACTER_H | 
