fbxcharacter.h

Go to the documentation of this file.
00001 /****************************************************************************************
00002  
00003    Copyright (C) 2013 Autodesk, Inc.
00004    All rights reserved.
00005  
00006    Use of this software is subject to the terms of the Autodesk license agreement
00007    provided at the time of installation or download, or which otherwise accompanies
00008    this software in either electronic or hard copy form.
00009  
00010 ****************************************************************************************/
00011 
00013 #ifndef _FBXSDK_SCENE_CONSTRAINT_CHARACTER_H_
00014 #define _FBXSDK_SCENE_CONSTRAINT_CHARACTER_H_
00015 
00016 #include <fbxsdk/fbxsdk_def.h>
00017 
00018 #include <fbxsdk/core/math/fbxtransforms.h>
00019 #include <fbxsdk/scene/constraint/fbxconstraint.h>
00020 
00021 #include <fbxsdk/fbxsdk_nsbegin.h>
00022 
00023 class FbxControlSet;
00024 
00030 class FBXSDK_DLL FbxCharacterLink
00031 {
00032 public:
00034     enum EType
00035     {
00036         eCharacterLink,
00037         eControlSetLink,
00038         eControlSetEffector,
00039         eControlSetEffectorAux
00040     };
00041 
00043     FbxCharacterLink();
00044 
00046     FbxCharacterLink(const FbxCharacterLink& pCharacterLink);
00047 
00051     FbxCharacterLink& operator=(const FbxCharacterLink& pCharacterLink);
00052 
00054     void Reset();
00055 
00056     FbxNode*    mNode;          
00057     FbxString   mTemplateName;  
00058     FbxVector4  mOffsetT;       
00059     FbxVector4  mOffsetR;       
00060     FbxVector4  mOffsetS;       
00061     FbxVector4  mParentROffset; 
00062     bool        mHasRotSpace;   
00063     FbxLimits   mRLimits;       
00064     FbxVector4  mPreRotation;   
00065     FbxVector4  mPostRotation;  
00066     int         mRotOrder;      
00067     double      mAxisLen;       
00068 
00069 /*****************************************************************************************************************************
00070 ** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! **
00071 *****************************************************************************************************************************/
00072 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00073     FbxProperty mPropertyLink;
00074     FbxProperty mPropertyOffsetT;
00075     FbxProperty mPropertyOffsetR;
00076     FbxProperty mPropertyOffsetS;
00077     FbxProperty mPropertyParentOffsetR;
00078     FbxProperty mPropertyTemplateName;
00079 #endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/
00080 };
00081 
00091 class FBXSDK_DLL FbxCharacter : public FbxConstraint
00092 {
00093     FBXSDK_OBJECT_DECLARE(FbxCharacter, FbxConstraint);
00094 
00095 public:
00103     enum EInputType
00104     { 
00105         eInputActor, 
00106         eInputCharacter,
00107         eInputMarkerSet,
00108         eOutputMarkerSet,
00109         eInputStancePose
00110     };
00111 
00113     enum EGroupId
00114     {
00115         eGroupBase,
00116         eGroupAuxiliary,
00117         eGroupSpine,
00118         eGroupRoll,
00119         eGroupSpecial,
00120         eGroupLeftHand,
00121         eGroupRightHand,
00122         eGroupProps,
00123         eGroupGameModeParent,
00124         eGroupNeck,
00125         eGroupLeftFoot,
00126         eGroupRightFoot,
00127         eGroupFloorContact,
00128         eGroupIdCount
00129     };
00130 
00133     enum ENodeId
00134     {       
00135         eHips,
00136         eLeftHip,
00137         eLeftKnee,
00138         eLeftAnkle,
00139         eLeftFoot,
00140         eRightHip,
00141         eRightKnee,
00142         eRightAnkle,
00143         eRightFoot,
00144         eWaist,
00145         eChest,
00146         eLeftCollar,
00147         eLeftShoulder,
00148         eLeftElbow,
00149         eLeftWrist,
00150         eRightCollar,
00151         eRightShoulder,
00152         eRightElbow,
00153         eRightWrist,
00154         eNeck,
00155         eHead,
00156         eLeftHipRoll,
00157         eLeftKneeRoll,
00158         eRightHipRoll,
00159         eRightKneeRoll,
00160         eLeftShoulderRoll,
00161         eLeftElbowRoll,
00162         eRightShoulderRoll,
00163         eRightElbowRoll,
00164         eSpine2,
00165         eSpine3,
00166         eSpine4,
00167         eSpine5,
00168         eSpine6,
00169         eSpine7,
00170         eSpine8,
00171         eSpine9,
00172         eLeftThumbA,
00173         eLeftThumbB,
00174         eLeftThumbC,
00175         eLeftIndexA,
00176         eLeftIndexB,
00177         eLeftIndexC,
00178         eLeftMiddleA,
00179         eLeftMiddleB,
00180         eLeftMiddleC,
00181         eLeftRingA,
00182         eLeftRingB,
00183         eLeftRingC,
00184         eLeftPinkyA,
00185         eLeftPinkyB,
00186         eLeftPinkyC,
00187         eRightThumbA,
00188         eRightThumbB,
00189         eRightThumbC,
00190         eRightIndexA,
00191         eRightIndexB,
00192         eRightIndexC,
00193         eRightMiddleA,
00194         eRightMiddleB,
00195         eRightMiddleC,
00196         eRightRingA,
00197         eRightRingB,
00198         eRightRingC,
00199         eRightPinkyA,
00200         eRightPinkyB,
00201         eRightPinkyC,
00202         eReference,
00203         eLeftFloor,
00204         eRightFloor,
00205         eHipsTranslation,
00206         eProps0,
00207         eProps1,
00208         eProps2,
00209         eProps3,
00210         eProps4,
00211         eGameModeParentLeftHipRoll,
00212         eGameModeParentLeftKnee,
00213         eGameModeParentLeftKneeRoll,
00214         eGameModeParentRightHipRoll,
00215         eGameModeParentRightKnee,
00216         eGameModeParentRightKneeRoll,
00217         eGameModeParentLeftShoulderRoll,       
00218         eGameModeParentLeftElbow,      
00219         eGameModeParentLeftElbowRoll,  
00220         eGameModeParentRightShoulderRoll,
00221         eGameModeParentRightElbow,             
00222         eGameModeParentRightElbowRoll, 
00223         eLeftUpLegRoll,
00224         eLeftLegRoll,
00225         eRightUpLegRoll,
00226         eRightLegRoll,
00227         eLeftArmRoll,
00228         eLeftForeArmRoll,
00229         eRightArmRoll,
00230         eRightForeArmRoll,
00231         eLeftHandFloor,
00232         eRightHandFloor,
00233         eLeftHand,
00234         eRightHand,
00235         eNeck1,
00236         eNeck2,
00237         eNeck3,
00238         eNeck4,
00239         eNeck5,
00240         eNeck6,
00241         eNeck7,
00242         eNeck8,
00243         eNeck9,
00244         eLeftInHandThumb,
00245         eLeftThumbD,
00246         eLeftInHandIndex,
00247         eLeftIndexD,
00248         eLeftInHandMiddle,
00249         eLeftMiddleD,
00250         eLeftInHandRing,
00251         eLeftRingD,
00252         eLeftInHandPinky,
00253         eLeftPinkyD,
00254         eLeftInHandExtraFinger,
00255         eLeftExtraFingerA,
00256         eLeftExtraFingerB,
00257         eLeftExtraFingerC,
00258         eLeftExtraFingerD,
00259         eRightInHandThumb,
00260         eRightThumbD,
00261         eRightInHandIndex,
00262         eRightIndexD,
00263         eRightInHandMiddle,
00264         eRightMiddleD,
00265         eRightInHandRing,
00266         eRightRingD,
00267         eRightInHandPinky,
00268         eRightPinkyD,
00269         eRightInHandExtraFinger,
00270         eRightExtraFingerA,
00271         eRightExtraFingerB,
00272         eRightExtraFingerC,
00273         eRightExtraFingerD,
00274         eLeftInFootThumb,
00275         eLeftFootThumbA,
00276         eLeftFootThumbB,
00277         eLeftFootThumbC,
00278         eLeftFootThumbD,
00279         eLeftInFootIndex,
00280         eLeftFootIndexA,
00281         eLeftFootIndexB,
00282         eLeftFootIndexC,
00283         eLeftFootIndexD,
00284         eLeftInFootMiddle,
00285         eLeftFootMiddleA,
00286         eLeftFootMiddleB,
00287         eLeftFootMiddleC,
00288         eLeftFootMiddleD,
00289         eLeftInFootRing,
00290         eLeftFootRingA,
00291         eLeftFootRingB,
00292         eLeftFootRingC,
00293         eLeftFootRingD,
00294         eLeftInFootPinky,
00295         eLeftFootPinkyA,
00296         eLeftFootPinkyB,
00297         eLeftFootPinkyC,
00298         eLeftFootPinkyD,
00299         eLeftInFootExtraFinger,
00300         eLeftFootExtraFingerA,
00301         eLeftFootExtraFingerB,
00302         eLeftFootExtraFingerC,
00303         eLeftFootExtraFingerD,
00304         eRightInFootThumb,
00305         eRightFootThumbA,
00306         eRightFootThumbB,
00307         eRightFootThumbC,
00308         eRightFootThumbD,
00309         eRightInFootIndex,
00310         eRightFootIndexA,
00311         eRightFootIndexB,
00312         eRightFootIndexC,
00313         eRightFootIndexD,
00314         eRightInFootMiddle,
00315         eRightFootMiddleA,
00316         eRightFootMiddleB,
00317         eRightFootMiddleC,
00318         eRightFootMiddleD,
00319         eRightInFootRing,
00320         eRightFootRingA,
00321         eRightFootRingB,
00322         eRightFootRingC,
00323         eRightFootRingD,
00324         eRightInFootPinky,
00325         eRightFootPinkyA,
00326         eRightFootPinkyB,
00327         eRightFootPinkyC,
00328         eRightFootPinkyD,
00329         eRightInFootExtraFinger,
00330         eRightFootExtraFingerA,
00331         eRightFootExtraFingerB,
00332         eRightFootExtraFingerC,
00333         eRightFootExtraFingerD,
00334         eLeftCollarExtra,
00335         eRightCollarExtra,
00336         eNodeIdCount
00337     };
00338 
00339     enum EOffAutoUser
00340     {
00341         eParamModeOff,
00342         eParamModeAuto,
00343         eParamModeUser
00344     };
00345 
00346     enum EAutoUser
00347     {
00348         eParamModeAuto2,
00349         eParamModeUser2
00350     };
00351 
00352     enum EPostureMode
00353     {
00354         ePostureBiped,
00355         ePostureQuadriped,
00356         ePostureCount
00357     };
00358 
00359     enum EFloorPivot
00360     {
00361         eFloorPivotAuto,
00362         eFloorPivotAnkle,
00363         eFloorPivotToes,
00364         eFloorPivotCount
00365     };
00366 
00367     enum ERollExtractionMode
00368     {
00369         eRelativeRollExtraction,
00370         eAbsoluteRollExtraction,
00371         eRollExtractionTypeCount
00372     };
00373 
00374     enum EHipsTranslationMode
00375     {
00376         eHipsTranslationWorldRigid,
00377         eHipsTranslationBodyRigid,
00378         eHipsTranslationTypeCount
00379     };
00380 
00381     enum EFootContactType
00382     {
00383         eFootTypeNormal,
00384         eFootTypeAnkle,
00385         eFootTypeToeBase,
00386         eFootTypeHoof,
00387         eFootContactModeCount
00388     };
00389 
00390     enum EHandContactType
00391     {
00392         eHandTypeNormal,
00393         eHandTypeWrist,
00394         eHandTypeFingerBase,
00395         eHandTypeHoof,
00396         eHandContactModeCount
00397     };
00398 
00399     enum EFingerContactMode
00400     {
00401         eFingerContactModeSticky,
00402         eFingerContactModeSpread,
00403         eFingerContactModeStickySpread,
00404         eFingerContactModeCount
00405     };
00406 
00407     enum EContactBehaviour
00408     {
00409         eContactNeverSync,
00410         eContactSyncOnKey,
00411         eContactAlwaysSync,
00412         eContactBehaviorCount
00413     };
00414 
00415     enum EPropertyUnit
00416     {
00417         ePropertyNoUnit,
00418         ePropertyPercent,
00419         ePropertySecond,
00420         ePropertyCentimeter,
00421         ePropertyDegree,
00422         ePropertyEnum,
00423         ePropertyReal
00424     };
00425 
00426     enum EErrorCode
00427     {
00428         eInternalError,
00429         eErrorCount
00430     }; 
00431 
00438     void Reset();
00439 
00444     void SetInput(EInputType pInputType, FbxObject* pInputObject = NULL);
00445 
00447     EInputType GetInputType() const;
00448 
00454     FbxObject* GetInputObject() const;
00455 
00463     bool SetCharacterLink(ENodeId pCharacterNodeId, const FbxCharacterLink& pCharacterLink, bool pUpdateObjectList = true);
00464 
00470     bool GetCharacterLink(ENodeId pCharacterNodeId, FbxCharacterLink* pCharacterLink = NULL) const;
00471 
00475     FbxControlSet& GetControlSet() const;
00476 
00481     static int GetCharacterGroupCount(EGroupId pCharacterGroupId);
00482 
00488     static ENodeId GetCharacterGroupElementByIndex(EGroupId pCharacterGroupId, int pIndex);
00489 
00490 
00496     static char* GetCharacterGroupNameByIndex(EGroupId pCharacterGroupId, int pIndex);
00497 
00503     static int GetCharacterGroupVersionByIndex(EGroupId pCharacterGroupId, int pIndex);
00504 
00512     static bool FindCharacterGroupIndexByName(const char* pName, bool pForceGroupId, EGroupId& pCharacterGroupId, int& pIndex);
00513 
00521     static bool GetCharacterGroupIndexByElement(ENodeId pCharacterNodeId, EGroupId& pCharacterGroupId, int& pIndex);
00522 
00529     static bool GetCharacterGroupVersionByElement(ENodeId pCharacterNodeId, int& pVersion);
00530 
00538     static bool GetCharacterNodeNameFromNodeId(ENodeId pCharacterNodeId, char*& pName);
00539 
00545     static bool GetCharacterNodeIdFromNodeName(const char* pName, ENodeId& pCharacterNodeId);
00546         
00547     // FbxCharacter Properties
00548     FbxPropertyT<FbxInt>                PullIterationCount;
00549     FbxPropertyT<EPostureMode>          Posture;
00550     FbxPropertyT<FbxBool>               ForceActorSpace;
00551     FbxPropertyT<FbxDouble>             ScaleCompensation;
00552     FbxPropertyT<EOffAutoUser>          ScaleCompensationMode;
00553     FbxPropertyT<FbxDouble>             HipsHeightCompensation;
00554     FbxPropertyT<EOffAutoUser>          HipsHeightCompensationMode;
00555     FbxPropertyT<FbxDouble>             AnkleHeightCompensation;
00556     FbxPropertyT<EOffAutoUser>          AnkleHeightCompensationMode;
00557     FbxPropertyT<FbxDouble>             AnkleProximityCompensation;
00558     FbxPropertyT<EOffAutoUser>          AnkleProximityCompensationMode;
00559     FbxPropertyT<FbxDouble>             MassCenterCompensation;
00560     FbxPropertyT<FbxBool>               ApplyLimits;
00561     FbxPropertyT<FbxDouble>             ChestReduction;
00562     FbxPropertyT<FbxDouble>             CollarReduction;
00563     FbxPropertyT<FbxDouble>             NeckReduction;
00564     FbxPropertyT<FbxDouble>             HeadReduction;
00565     FbxPropertyT<FbxDouble>             ReachActorLeftAnkle;
00566     FbxPropertyT<FbxDouble>             ReachActorRightAnkle;
00567     FbxPropertyT<FbxDouble>             ReachActorLeftKnee;
00568     FbxPropertyT<FbxDouble>             ReachActorRightKnee;
00569     FbxPropertyT<FbxDouble>             ReachActorChest;
00570     FbxPropertyT<FbxDouble>             ReachActorHead;
00571     FbxPropertyT<FbxDouble>             ReachActorLeftWrist;
00572     FbxPropertyT<FbxDouble>             ReachActorRightWrist;
00573     FbxPropertyT<FbxDouble>             ReachActorLeftElbow;
00574     FbxPropertyT<FbxDouble>             ReachActorRightElbow;
00575     FbxPropertyT<FbxDouble>             ReachActorLeftFingerBase;
00576     FbxPropertyT<FbxDouble>             ReachActorRightFingerBase;
00577     FbxPropertyT<FbxDouble>             ReachActorLeftToesBase;
00578     FbxPropertyT<FbxDouble>             ReachActorRightToesBase;
00579     FbxPropertyT<FbxDouble>             ReachActorLeftFingerBaseRotation;
00580     FbxPropertyT<FbxDouble>             ReachActorRightFingerBaseRotation;
00581     FbxPropertyT<FbxDouble>             ReachActorLeftToesBaseRotation;
00582     FbxPropertyT<FbxDouble>             ReachActorRightToesBaseRotation;
00583     FbxPropertyT<FbxDouble>             ReachActorLeftAnkleRotation;
00584     FbxPropertyT<FbxDouble>             ReachActorRightAnkleRotation;
00585     FbxPropertyT<FbxDouble>             ReachActorHeadRotation;
00586     FbxPropertyT<FbxDouble>             ReachActorLeftWristRotation;
00587     FbxPropertyT<FbxDouble>             ReachActorRightWristRotation;
00588     FbxPropertyT<FbxDouble>             ReachActorChestRotation;
00589     FbxPropertyT<FbxDouble>             ReachActorLowerChestRotation;
00590     FbxPropertyT<FbxDouble3>            HipsTOffset;
00591     FbxPropertyT<FbxDouble3>            ChestTOffset;
00592     FbxPropertyT<ERollExtractionMode>   RollExtractionMode;
00593     FbxPropertyT<FbxDouble>             LeftUpLegRoll;
00594     FbxPropertyT<FbxBool>               LeftUpLegRollMode;
00595     FbxPropertyT<FbxDouble>             LeftLegRoll;
00596     FbxPropertyT<FbxBool>               LeftLegRollMode;
00597     FbxPropertyT<FbxDouble>             RightUpLegRoll;
00598     FbxPropertyT<FbxBool>               RightUpLegRollMode;
00599     FbxPropertyT<FbxDouble>             RightLegRoll;
00600     FbxPropertyT<FbxBool>               RightLegRollMode;
00601     FbxPropertyT<FbxDouble>             LeftArmRoll;
00602     FbxPropertyT<FbxBool>               LeftArmRollMode;
00603     FbxPropertyT<FbxDouble>             LeftForeArmRoll;
00604     FbxPropertyT<FbxBool>               LeftForeArmRollMode;
00605     FbxPropertyT<FbxDouble>             RightArmRoll;
00606     FbxPropertyT<FbxBool>               RightArmRollMode;
00607     FbxPropertyT<FbxDouble>             RightForeArmRoll;
00608     FbxPropertyT<FbxBool>               RightForeArmRollMode;
00609     FbxPropertyT<FbxDouble>             LeftUpLegRollEx;
00610     FbxPropertyT<FbxBool>               LeftUpLegRollExMode;
00611     FbxPropertyT<FbxDouble>             LeftLegRollEx;
00612     FbxPropertyT<FbxBool>               LeftLegRollExMode;
00613     FbxPropertyT<FbxDouble>             RightUpLegRollEx;
00614     FbxPropertyT<FbxBool>               RightUpLegRollExMode;
00615     FbxPropertyT<FbxDouble>             RightLegRollEx;
00616     FbxPropertyT<FbxBool>               RightLegRollExMode;
00617     FbxPropertyT<FbxDouble>             LeftArmRollEx;
00618     FbxPropertyT<FbxBool>               LeftArmRollExMode;
00619     FbxPropertyT<FbxDouble>             LeftForeArmRollEx;
00620     FbxPropertyT<FbxBool>               LeftForeArmRollExMode;
00621     FbxPropertyT<FbxDouble>             RightArmRollEx;
00622     FbxPropertyT<FbxBool>               RightArmRollExMode;
00623     FbxPropertyT<FbxDouble>             RightForeArmExRoll;
00624     FbxPropertyT<FbxBool>               RightForeArmRollExMode;
00625     FbxPropertyT<EContactBehaviour>     ContactBehaviour;
00626     FbxPropertyT<FbxBool>               FootFloorContact;
00627     FbxPropertyT<FbxBool>               FootAutomaticToes;
00628     FbxPropertyT<EFloorPivot>           FootFloorPivot;
00629     FbxPropertyT<FbxDouble>             FootBottomToAnkle;
00630     FbxPropertyT<FbxDouble>             FootBackToAnkle;
00631     FbxPropertyT<FbxDouble>             FootMiddleToAnkle;
00632     FbxPropertyT<FbxDouble>             FootFrontToMiddle;
00633     FbxPropertyT<FbxDouble>             FootInToAnkle;
00634     FbxPropertyT<FbxDouble>             FootOutToAnkle;
00635     FbxPropertyT<FbxDouble>             FootContactSize;
00636     FbxPropertyT<FbxBool>               FootFingerContact;
00637     FbxPropertyT<EFootContactType>      FootContactType;
00638     FbxPropertyT<EFingerContactMode>    FootFingerContactMode;
00639     FbxPropertyT<FbxDouble>             FootContactStiffness;
00640     FbxPropertyT<FbxDouble>             FootFingerContactRollStiffness;
00641     FbxPropertyT<FbxBool>               HandFloorContact;
00642     FbxPropertyT<FbxBool>               HandAutomaticFingers;
00643     FbxPropertyT<EFloorPivot>           HandFloorPivot;
00644     FbxPropertyT<FbxDouble>             HandBottomToWrist;
00645     FbxPropertyT<FbxDouble>             HandBackToWrist;
00646     FbxPropertyT<FbxDouble>             HandMiddleToWrist;
00647     FbxPropertyT<FbxDouble>             HandFrontToMiddle;
00648     FbxPropertyT<FbxDouble>             HandInToWrist;
00649     FbxPropertyT<FbxDouble>             HandOutToWrist;
00650     FbxPropertyT<FbxDouble>             HandContactSize;
00651     FbxPropertyT<FbxBool>               HandFingerContact;
00652     FbxPropertyT<EHandContactType>      HandContactType;
00653     FbxPropertyT<EFingerContactMode>    HandFingerContactMode;
00654     FbxPropertyT<FbxDouble>             HandContactStiffness;
00655     FbxPropertyT<FbxDouble>             HandFingerContactRollStiffness;
00656     FbxPropertyT<FbxDouble>             LeftHandThumbTip;
00657     FbxPropertyT<FbxDouble>             LeftHandIndexTip;
00658     FbxPropertyT<FbxDouble>             LeftHandMiddleTip;
00659     FbxPropertyT<FbxDouble>             LeftHandRingTip;
00660     FbxPropertyT<FbxDouble>             LeftHandPinkyTip;
00661     FbxPropertyT<FbxDouble>             LeftHandExtraFingerTip;
00662     FbxPropertyT<FbxDouble>             RightHandThumbTip;
00663     FbxPropertyT<FbxDouble>             RightHandIndexTip;
00664     FbxPropertyT<FbxDouble>             RightHandMiddleTip;
00665     FbxPropertyT<FbxDouble>             RightHandRingTip;
00666     FbxPropertyT<FbxDouble>             RightHandPinkyTip;
00667     FbxPropertyT<FbxDouble>             RightHandExtraFingerTip;
00668     FbxPropertyT<FbxDouble>             LeftFootThumbTip;
00669     FbxPropertyT<FbxDouble>             LeftFootIndexTip;
00670     FbxPropertyT<FbxDouble>             LeftFootMiddleTip;
00671     FbxPropertyT<FbxDouble>             LeftFootRingTip;
00672     FbxPropertyT<FbxDouble>             LeftFootPinkyTip;
00673     FbxPropertyT<FbxDouble>             LeftFootExtraFingerTip;
00674     FbxPropertyT<FbxDouble>             RightFootThumbTip;
00675     FbxPropertyT<FbxDouble>             RightFootIndexTip;
00676     FbxPropertyT<FbxDouble>             RightFootMiddleTip;
00677     FbxPropertyT<FbxDouble>             RightFootRingTip;
00678     FbxPropertyT<FbxDouble>             RightFootPinkyTip;
00679     FbxPropertyT<FbxDouble>             RightFootExtraFingerTip;
00680     FbxPropertyT<FbxBool>               FingerSolving;
00681     FbxPropertyT<FbxDouble>             CtrlPullLeftToeBase;
00682     FbxPropertyT<FbxDouble>             CtrlPullLeftFoot;
00683     FbxPropertyT<FbxDouble>             CtrlPullLeftKnee;
00684     FbxPropertyT<FbxDouble>             CtrlPullRightToeBase;
00685     FbxPropertyT<FbxDouble>             CtrlPullRightFoot;
00686     FbxPropertyT<FbxDouble>             CtrlPullRightKnee;
00687     FbxPropertyT<FbxDouble>             CtrlPullLeftFingerBase;
00688     FbxPropertyT<FbxDouble>             CtrlPullLeftHand;
00689     FbxPropertyT<FbxDouble>             CtrlPullLeftElbow;
00690     FbxPropertyT<FbxDouble>             CtrlPullRightFingerBase;
00691     FbxPropertyT<FbxDouble>             CtrlPullRightHand;
00692     FbxPropertyT<FbxDouble>             CtrlPullRightElbow;
00693     FbxPropertyT<FbxDouble>             CtrlChestPullLeftHand;
00694     FbxPropertyT<FbxDouble>             CtrlChestPullRightHand;
00695     FbxPropertyT<FbxDouble>             CtrlPullHead;
00696     FbxPropertyT<FbxDouble>             CtrlResistHipsPosition;
00697     FbxPropertyT<FbxDouble>             CtrlEnforceGravity;
00698     FbxPropertyT<FbxDouble>             CtrlResistHipsOrientation;
00699     FbxPropertyT<FbxDouble>             CtrlResistChestPosition;
00700     FbxPropertyT<FbxDouble>             CtrlResistChestOrientation;
00701     FbxPropertyT<FbxDouble>             CtrlResistLeftCollar;
00702     FbxPropertyT<FbxDouble>             CtrlResistRightCollar;
00703     FbxPropertyT<FbxDouble>             CtrlResistLeftKnee;
00704     FbxPropertyT<FbxDouble>             CtrlResistMaximumExtensionLeftKnee;
00705     FbxPropertyT<FbxDouble>             CtrlResistCompressionFactorLeftKnee;
00706     FbxPropertyT<FbxDouble>             CtrlResistRightKnee;
00707     FbxPropertyT<FbxDouble>             CtrlResistMaximumExtensionRightKnee;
00708     FbxPropertyT<FbxDouble>             CtrlResistCompressionFactorRightKnee;
00709     FbxPropertyT<FbxDouble>             CtrlResistLeftElbow;
00710     FbxPropertyT<FbxDouble>             CtrlResistMaximumExtensionLeftElbow;
00711     FbxPropertyT<FbxDouble>             CtrlResistCompressionFactorLeftElbow;
00712     FbxPropertyT<FbxDouble>             CtrlResistRightElbow;
00713     FbxPropertyT<FbxDouble>             CtrlResistMaximumExtensionRightElbow;
00714     FbxPropertyT<FbxDouble>             CtrlResistCompressionFactorRightElbow;
00715     FbxPropertyT<FbxDouble>             CtrlSpineStiffness;
00716     FbxPropertyT<FbxDouble>             CtrlNeckStiffness;
00717     FbxPropertyT<FbxBool>               MirrorMode;
00718     FbxPropertyT<FbxDouble>             ShoulderCorrection;
00719     FbxPropertyT<FbxBool>               LeftKneeKillPitch;
00720     FbxPropertyT<FbxBool>               RightKneeKillPitch;
00721     FbxPropertyT<FbxBool>               LeftElbowKillPitch;
00722     FbxPropertyT<FbxBool>               RightElbowKillPitch;
00723     FbxPropertyT<EHipsTranslationMode>  HipsTranslationMode;
00724     FbxPropertyT<FbxBool>               WriteReference;
00725     FbxPropertyT<FbxBool>               SyncMode;
00726     FbxPropertyT<FbxDouble>             Damping;
00727     FbxPropertyT<FbxDouble>             OrientationDamping;
00728     FbxPropertyT<EOffAutoUser>          OrientationDampingMode;
00729     FbxPropertyT<FbxDouble>             DisplacementDamping;
00730     FbxPropertyT<EOffAutoUser>          DisplacementDampingMode;
00731     FbxPropertyT<FbxDouble>             DisplacementMemory;
00732     FbxPropertyT<EAutoUser>             DisplacementMemoryMode;
00733     FbxPropertyT<FbxDouble>             HipsDisplacementDamping;
00734     FbxPropertyT<EAutoUser>             HipsDisplacementDampingMode;
00735     FbxPropertyT<FbxDouble>             AnkleDisplacementDamping;
00736     FbxPropertyT<EAutoUser>             AnkleDisplacementDampingMode;
00737     FbxPropertyT<FbxDouble>             WristDisplacementDamping;
00738     FbxPropertyT<EAutoUser>             WristDisplacementDampingMode;
00739     FbxPropertyT<FbxDouble>             Stabilization;
00740     FbxPropertyT<FbxDouble>             AnkleStabilizationTime;
00741     FbxPropertyT<EAutoUser>             AnkleStabilizationTimeMode;
00742     FbxPropertyT<FbxDouble>             AnkleStabilizationPerimeter;
00743     FbxPropertyT<EAutoUser>             AnkleStabilizationPerimeterMode;
00744     FbxPropertyT<FbxDouble>             AnkleStabilizationAngularPerimeter;
00745     FbxPropertyT<EOffAutoUser>          AnkleStabilizationAngularPerimeterMode;
00746     FbxPropertyT<FbxDouble>             AnkleStabilizationFloorProximity;
00747     FbxPropertyT<EOffAutoUser>          AnkleStabilizationFloorProximityMode;
00748     FbxPropertyT<FbxDouble>             AnkleStabilizationDamping;
00749     FbxPropertyT<EOffAutoUser>          AnkleStabilizationDampingMode;
00750     FbxPropertyT<FbxDouble>             AnkleStabilizationRecoveryTime;
00751     FbxPropertyT<EOffAutoUser>          AnkleStabilizationRecoveryTimeMode;
00752     FbxPropertyT<FbxReference>          SourceObject;
00753     FbxPropertyT<FbxReference>          DestinationObject;
00754     FbxPropertyT<FbxReference>          Actor;
00755     FbxPropertyT<FbxReference>          Character;
00756     FbxPropertyT<FbxReference>          ControlSet;
00757     FbxPropertyT<FbxDouble>             HikVersion;
00758     FbxPropertyT<FbxBool>               Characterize;
00759     FbxPropertyT<FbxBool>               LockXForm;
00760     FbxPropertyT<FbxBool>               LockPick;
00761 
00762     // HIK 4.6 new properties
00763     FbxPropertyT<FbxDouble>             RealisticShoulder;
00764     FbxPropertyT<FbxDouble>             CollarStiffnessX;
00765     FbxPropertyT<FbxDouble>             CollarStiffnessY; 
00766     FbxPropertyT<FbxDouble>             CollarStiffnessZ; 
00767     FbxPropertyT<FbxDouble>             ExtraCollarRatio;
00768 
00769     FbxPropertyT<FbxDouble>             LeftLegMaxExtensionAngle;
00770     FbxPropertyT<FbxDouble>             RightLegMaxExtensionAngle; 
00771     FbxPropertyT<FbxDouble>             LeftArmMaxExtensionAngle;
00772     FbxPropertyT<FbxDouble>             RightArmMaxExtensionAngle; 
00773                                         
00774     FbxPropertyT<FbxDouble>             StretchStartArmsAndLegs;
00775     FbxPropertyT<FbxDouble>             StretchStopArmsAndLegs;
00776     FbxPropertyT<FbxDouble>             SnSScaleArmsAndLegs;
00777     FbxPropertyT<FbxDouble>             SnSReachLeftWrist;
00778     FbxPropertyT<FbxDouble>             SnSReachRightWrist; 
00779     FbxPropertyT<FbxDouble>             SnSReachLeftAnkle;
00780     FbxPropertyT<FbxDouble>             SnSReachRightAnkle; 
00781     FbxPropertyT<FbxDouble>             SnSScaleSpine;
00782     FbxPropertyT<FbxDouble>             SnSScaleSpineChildren;
00783     FbxPropertyT<FbxDouble>             SnSSpineFreedom;
00784     FbxPropertyT<FbxDouble>             SnSReachChestEnd;
00785     FbxPropertyT<FbxDouble>             SnSScaleNeck;
00786     FbxPropertyT<FbxDouble>             SnSNeckFreedom;
00787     FbxPropertyT<FbxDouble>             SnSReachHead;
00788     
00789 /*****************************************************************************************************************************
00790 ** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! **
00791 *****************************************************************************************************************************/
00792 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00793     void    SetVersion(int pVersion){ mCharacterVersion = pVersion; }
00794     int     Version(){ return mCharacterVersion; }
00795     void    SetValuesFromLegacyLoad();
00796     void    SetValuesForLegacySave(int pVersion);
00797     void    RestoreValuesFromLegacySave();
00798     bool    IsLegacy();
00799 
00800     int     GetPropertyInfoCount();
00801     void    GetPropertyInfo(char* &pCharacterPropertyName, char* &pCharacterPropertyModeName, EPropertyUnit &pUnit, int &pPropertyIndex, char* &pHIKPropertyName, char* &pHIKPropertyModeName, int pIndex) const;
00802     void    GetFbxCharacterPropertyFromHIKProperty(char* &pCharacterPropertyName, char* &pCharacterPropertyModeName, EPropertyUnit &pUnit, int &pPropertyIndex, const char* pHIKPropertyName) const;
00803     
00804     FbxCharacterLink*   GetCharacterLinkPtr(ENodeId pCharacterNodeId);
00805 
00806     virtual FbxObject*  Clone(FbxObject::ECloneType pCloneType=eDeepClone, FbxObject* pContainer=NULL) const;    
00807 
00808 protected:
00809     virtual void Construct(const FbxCharacter* pFrom);
00810     virtual void ConstructProperties(bool pForceSet);
00811     virtual void Destruct(bool pRecursive);
00812 
00813     virtual FbxObject&      Copy(const FbxObject& pObject);
00814     virtual EType           GetConstraintType() const;
00815     virtual FbxStringList   GetTypeFlags() const;
00816     virtual bool            ConnectNotify (FbxConnectEvent const &pEvent);
00817 
00818 private:
00819     bool                    InverseProperty(FbxProperty& pProp);
00820 
00821     int                     mCharacterVersion;
00822     FbxCharacterLink        mCharacterLink[eNodeIdCount];
00823     FbxControlSet*          mControlSet;
00824 
00825     friend class FbxNode;
00826 #endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/
00827 };
00828 
00829 inline EFbxType FbxTypeOf(const FbxCharacter::EOffAutoUser&){ return eFbxEnum; }
00830 inline EFbxType FbxTypeOf(const FbxCharacter::EAutoUser&){ return eFbxEnum; }
00831 inline EFbxType FbxTypeOf(const FbxCharacter::EPostureMode&){ return eFbxEnum; }
00832 inline EFbxType FbxTypeOf(const FbxCharacter::EFloorPivot&){ return eFbxEnum; }
00833 inline EFbxType FbxTypeOf(const FbxCharacter::ERollExtractionMode&){ return eFbxEnum; }
00834 inline EFbxType FbxTypeOf(const FbxCharacter::EHipsTranslationMode&){ return eFbxEnum; }
00835 inline EFbxType FbxTypeOf(const FbxCharacter::EFootContactType&){ return eFbxEnum; }
00836 inline EFbxType FbxTypeOf(const FbxCharacter::EHandContactType&){ return eFbxEnum; }
00837 inline EFbxType FbxTypeOf(const FbxCharacter::EFingerContactMode&){ return eFbxEnum; }
00838 inline EFbxType FbxTypeOf(const FbxCharacter::EContactBehaviour&){ return eFbxEnum; }
00839 
00840 #include <fbxsdk/fbxsdk_nsend.h>
00841 
00842 #endif /* _FBXSDK_SCENE_CONSTRAINT_CHARACTER_H_ */