summaryrefslogtreecommitdiff
path: root/indra/llcharacter
diff options
context:
space:
mode:
authorprep <prep@lindenlab.com>2011-02-16 10:32:12 -0500
committerprep <prep@lindenlab.com>2011-02-16 10:32:12 -0500
commit8bbbcd9c22010a259d42d23c517e04fe7afd41fd (patch)
treede55aabef71e6743cb1287a6411a9d976e95a2b4 /indra/llcharacter
parent7fe0d4215e8f312f115449dba76e4fde0007241e (diff)
Fix for SH-816
Diffstat (limited to 'indra/llcharacter')
-rw-r--r--indra/llcharacter/lljoint.cpp4
-rw-r--r--indra/llcharacter/lljoint.h11
2 files changed, 14 insertions, 1 deletions
diff --git a/indra/llcharacter/lljoint.cpp b/indra/llcharacter/lljoint.cpp
index d68abcef5a..19907933cb 100644
--- a/indra/llcharacter/lljoint.cpp
+++ b/indra/llcharacter/lljoint.cpp
@@ -50,6 +50,7 @@ LLJoint::LLJoint()
mUpdateXform = TRUE;
mJointNum = -1;
touch();
+ mResetAfterRestoreOldXform = false;
}
@@ -250,6 +251,7 @@ void LLJoint::setDefaultFromCurrentXform( void )
void LLJoint::storeCurrentXform( const LLVector3& pos )
{
mOldXform = mXform;
+ mResetAfterRestoreOldXform = true;
setPosition( pos );
}
//--------------------------------------------------------------------
@@ -257,6 +259,7 @@ void LLJoint::storeCurrentXform( const LLVector3& pos )
//--------------------------------------------------------------------
void LLJoint::restoreOldXform( void )
{
+ mResetAfterRestoreOldXform = false;
mXform = mOldXform;
}
//--------------------------------------------------------------------
@@ -556,3 +559,4 @@ void LLJoint::clampRotation(LLQuaternion old_rot, LLQuaternion new_rot)
}
// End
+
diff --git a/indra/llcharacter/lljoint.h b/indra/llcharacter/lljoint.h
index cbfca588b0..dc3c58cf64 100644
--- a/indra/llcharacter/lljoint.h
+++ b/indra/llcharacter/lljoint.h
@@ -88,6 +88,8 @@ public:
U32 mDirtyFlags;
BOOL mUpdateXform;
+ BOOL mResetAfterRestoreOldXform;
+
// describes the skin binding pose
LLVector3 mSkinOffset;
@@ -181,10 +183,17 @@ public:
void restoreOldXform( void );
void restoreToDefaultXform( void );
void setDefaultFromCurrentXform( void );
-
void storeCurrentXform( const LLVector3& pos );
+
+ //Accessor for the joint id
LLUUID getId( void ) { return mId; }
+ //Setter for the joints id
void setId( const LLUUID& id ) { mId = id;}
+
+ //If the old transform flag has been set, then the reset logic in avatar needs to be aware(test) of it
+ const BOOL doesJointNeedToBeReset( void ) const { return mResetAfterRestoreOldXform; }
+ //Setter for joint reset flag
+ void setJointToBeReset( BOOL val ) { mResetAfterRestoreOldXform = val; }
};
#endif // LL_LLJOINT_H