00001 00032 #ifndef LL_LLKEYFRAMESTANDMOTION_H 00033 #define LL_LLKEYFRAMESTANDMOTION_H 00034 00035 //----------------------------------------------------------------------------- 00036 // Header files 00037 //----------------------------------------------------------------------------- 00038 #include "llkeyframemotion.h" 00039 #include "lljointsolverrp3.h" 00040 00041 00042 //----------------------------------------------------------------------------- 00043 // class LLKeyframeStandMotion 00044 //----------------------------------------------------------------------------- 00045 class LLKeyframeStandMotion : 00046 public LLKeyframeMotion 00047 { 00048 public: 00049 // Constructor 00050 LLKeyframeStandMotion(const LLUUID &id); 00051 00052 // Destructor 00053 virtual ~LLKeyframeStandMotion(); 00054 00055 public: 00056 //------------------------------------------------------------------------- 00057 // functions to support MotionController and MotionRegistry 00058 //------------------------------------------------------------------------- 00059 00060 // static constructor 00061 // all subclasses must implement such a function and register it 00062 static LLMotion *create(const LLUUID &id) { return new LLKeyframeStandMotion(id); } 00063 00064 public: 00065 //------------------------------------------------------------------------- 00066 // animation callbacks to be implemented by subclasses 00067 //------------------------------------------------------------------------- 00068 virtual LLMotionInitStatus onInitialize(LLCharacter *character); 00069 virtual BOOL onActivate(); 00070 void onDeactivate(); 00071 virtual BOOL onUpdate(F32 time, U8* joint_mask); 00072 00073 public: 00074 //------------------------------------------------------------------------- 00075 // Member Data 00076 //------------------------------------------------------------------------- 00077 LLCharacter *mCharacter; 00078 00079 BOOL mFlipFeet; 00080 00081 LLJointState *mPelvisState; 00082 00083 LLJointState *mHipLeftState; 00084 LLJointState *mKneeLeftState; 00085 LLJointState *mAnkleLeftState; 00086 00087 LLJointState *mHipRightState; 00088 LLJointState *mKneeRightState; 00089 LLJointState *mAnkleRightState; 00090 00091 LLJoint mPelvisJoint; 00092 00093 LLJoint mHipLeftJoint; 00094 LLJoint mKneeLeftJoint; 00095 LLJoint mAnkleLeftJoint; 00096 LLJoint mTargetLeft; 00097 00098 LLJoint mHipRightJoint; 00099 LLJoint mKneeRightJoint; 00100 LLJoint mAnkleRightJoint; 00101 LLJoint mTargetRight; 00102 00103 LLJointSolverRP3 mIKLeft; 00104 LLJointSolverRP3 mIKRight; 00105 00106 LLVector3 mPositionLeft; 00107 LLVector3 mPositionRight; 00108 LLVector3 mNormalLeft; 00109 LLVector3 mNormalRight; 00110 LLQuaternion mRotationLeft; 00111 LLQuaternion mRotationRight; 00112 00113 LLQuaternion mLastGoodPelvisRotation; 00114 LLVector3 mLastGoodPosition; 00115 BOOL mTrackAnkles; 00116 00117 S32 mFrameNum; 00118 }; 00119 00120 #endif // LL_LLKEYFRAMESTANDMOTION_H 00121