Putting into place a work-around for missing "modifiable" field datum in the linksets service.

master
Todd Stinson 2012-03-06 12:26:49 -08:00
parent 36d7de33b2
commit e4537a0685
2 changed files with 32 additions and 0 deletions

View File

@ -65,6 +65,9 @@ LLPathfindingLinkset::LLPathfindingLinkset(const LLSD& pTerrainLinksetItem)
mDescription(),
mLandImpact(0U),
mLocation(LLVector3::zero),
#ifdef MISSING_MODIFIABLE_FIELD_WAR
mHasModifiable(true),
#endif // MISSING_MODIFIABLE_FIELD_WAR
mIsModifiable(TRUE),
mLinksetUse(kUnknown),
mWalkabilityCoefficientA(MIN_WALKABILITY_VALUE),
@ -82,6 +85,9 @@ LLPathfindingLinkset::LLPathfindingLinkset(const std::string &pUUID, const LLSD&
mDescription(),
mLandImpact(0U),
mLocation(LLVector3::zero),
#ifdef MISSING_MODIFIABLE_FIELD_WAR
mHasModifiable(false),
#endif // MISSING_MODIFIABLE_FIELD_WAR
mIsModifiable(TRUE),
mLinksetUse(kUnknown),
mWalkabilityCoefficientA(MIN_WALKABILITY_VALUE),
@ -99,7 +105,12 @@ LLPathfindingLinkset::LLPathfindingLinkset(const LLPathfindingLinkset& pOther)
mDescription(pOther.mDescription),
mLandImpact(pOther.mLandImpact),
mLocation(pOther.mLocation),
#ifdef MISSING_MODIFIABLE_FIELD_WAR
mHasModifiable(pOther.mHasModifiable),
mIsModifiable(pOther.mHasModifiable ? pOther.mIsModifiable : TRUE),
#else // MISSING_MODIFIABLE_FIELD_WAR
mIsModifiable(pOther.mIsModifiable),
#endif // MISSING_MODIFIABLE_FIELD_WAR
mLinksetUse(pOther.mLinksetUse),
mWalkabilityCoefficientA(pOther.mWalkabilityCoefficientA),
mWalkabilityCoefficientB(pOther.mWalkabilityCoefficientB),
@ -119,7 +130,15 @@ LLPathfindingLinkset& LLPathfindingLinkset::operator =(const LLPathfindingLinkse
mDescription = pOther.mDescription;
mLandImpact = pOther.mLandImpact;
mLocation = pOther.mLocation;
#ifdef MISSING_MODIFIABLE_FIELD_WAR
if (pOther.mHasModifiable)
{
mHasModifiable = pOther.mHasModifiable;
mIsModifiable = pOther.mIsModifiable;
}
#else // MISSING_MODIFIABLE_FIELD_WAR
mIsModifiable = pOther.mIsModifiable;
#endif // MISSING_MODIFIABLE_FIELD_WAR
mLinksetUse = pOther.mLinksetUse;
mWalkabilityCoefficientA = pOther.mWalkabilityCoefficientA;
mWalkabilityCoefficientB = pOther.mWalkabilityCoefficientB;
@ -223,9 +242,18 @@ void LLPathfindingLinkset::parseObjectData(const LLSD &pLinksetItem)
llassert(pLinksetItem.get(LINKSET_LAND_IMPACT_FIELD).asInteger() >= 0);
mLandImpact = pLinksetItem.get(LINKSET_LAND_IMPACT_FIELD).asInteger();
#ifdef MISSING_MODIFIABLE_FIELD_WAR
mHasModifiable = pLinksetItem.has(LINKSET_MODIFIABLE_FIELD);
if (mHasModifiable)
{
llassert(pLinksetItem.get(LINKSET_MODIFIABLE_FIELD).isBoolean());
mIsModifiable = pLinksetItem.get(LINKSET_MODIFIABLE_FIELD).asBoolean();
}
#else // MISSING_MODIFIABLE_FIELD_WAR
llassert(pLinksetItem.has(LINKSET_MODIFIABLE_FIELD));
llassert(pLinksetItem.get(LINKSET_MODIFIABLE_FIELD).isBoolean());
mIsModifiable = pLinksetItem.get(LINKSET_MODIFIABLE_FIELD).asBoolean();
#endif // MISSING_MODIFIABLE_FIELD_WAR
llassert(pLinksetItem.has(LINKSET_POSITION_FIELD));
llassert(pLinksetItem.get(LINKSET_POSITION_FIELD).isArray());

View File

@ -39,6 +39,7 @@ class LLPathfindingLinkset;
typedef boost::shared_ptr<LLPathfindingLinkset> LLPathfindingLinksetPtr;
#define DEPRECATED_NAVMESH_PERMANENT_WALKABLE_FLAGS
#define MISSING_MODIFIABLE_FIELD_WAR
class LLPathfindingLinkset
{
@ -113,6 +114,9 @@ private:
std::string mDescription;
U32 mLandImpact;
LLVector3 mLocation;
#ifdef MISSING_MODIFIABLE_FIELD_WAR
bool mHasModifiable;
#endif // MISSING_MODIFIABLE_FIELD_WAR
BOOL mIsModifiable;
ELinksetUse mLinksetUse;
S32 mWalkabilityCoefficientA;