FBX SDK Reference Guide: kfbxcharacter.h Source File
Go to the documentation of this file.
00001 
00004 #ifndef FBXFILESDK_KFBXCHARACTER_KFBXCHARACTER_H
00005 #define FBXFILESDK_KFBXCHARACTER_KFBXCHARACTER_H
00006 
00007 /**************************************************************************************
00008 
00009  Copyright © 2001 - 2008 Autodesk, Inc. and/or its licensors.
00010  All Rights Reserved.
00011 
00012  The coded instructions, statements, computer programs, and/or related material 
00013  (collectively the "Data") in these files contain unpublished information 
00014  proprietary to Autodesk, Inc. and/or its licensors, which is protected by 
00015  Canada and United States of America federal copyright law and by international 
00016  treaties. 
00017  
00018  The Data may not be disclosed or distributed to third parties, in whole or in
00019  part, without the prior written consent of Autodesk, Inc. ("Autodesk").
00020 
00021  THE DATA IS PROVIDED "AS IS" AND WITHOUT WARRANTY.
00022  ALL WARRANTIES ARE EXPRESSLY EXCLUDED AND DISCLAIMED. AUTODESK MAKES NO
00023  WARRANTY OF ANY KIND WITH RESPECT TO THE DATA, EXPRESS, IMPLIED OR ARISING
00024  BY CUSTOM OR TRADE USAGE, AND DISCLAIMS ANY IMPLIED WARRANTIES OF TITLE, 
00025  NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE OR USE. 
00026  WITHOUT LIMITING THE FOREGOING, AUTODESK DOES NOT WARRANT THAT THE OPERATION
00027  OF THE DATA WILL BE UNINTERRUPTED OR ERROR FREE. 
00028  
00029  IN NO EVENT SHALL AUTODESK, ITS AFFILIATES, PARENT COMPANIES, LICENSORS
00030  OR SUPPLIERS ("AUTODESK GROUP") BE LIABLE FOR ANY LOSSES, DAMAGES OR EXPENSES
00031  OF ANY KIND (INCLUDING WITHOUT LIMITATION PUNITIVE OR MULTIPLE DAMAGES OR OTHER
00032  SPECIAL, DIRECT, INDIRECT, EXEMPLARY, INCIDENTAL, LOSS OF PROFITS, REVENUE
00033  OR DATA, COST OF COVER OR CONSEQUENTIAL LOSSES OR DAMAGES OF ANY KIND),
00034  HOWEVER CAUSED, AND REGARDLESS OF THE THEORY OF LIABILITY, WHETHER DERIVED
00035  FROM CONTRACT, TORT (INCLUDING, BUT NOT LIMITED TO, NEGLIGENCE), OR OTHERWISE,
00036  ARISING OUT OF OR RELATING TO THE DATA OR ITS USE OR ANY OTHER PERFORMANCE,
00037  WHETHER OR NOT AUTODESK HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSS
00038  OR DAMAGE. 
00039 
00040 **************************************************************************************/
00041 
00042 #include <fbxfilesdk/components/kbaselib/kaydaradef_h.h>
00043 #include <fbxfilesdk/components/kbaselib/kaydara.h>
00044 
00045 #include <fbxfilesdk/kfbxmath/kfbxvector4.h>
00046 
00047 #include <fbxfilesdk/components/kbaselib/klib/kstring.h>
00048 #include <fbxfilesdk/components/kbaselib/klib/kerror.h>
00049 
00050 #include <fbxfilesdk/components/kcharacterdef/kfiltersetenum.h>
00051 
00052 #include <fbxfilesdk/kfbxplugins/kfbxconstraint.h>
00053 #include <fbxfilesdk/kfbxplugins/kfbxnodelimits.h>
00054 #include <fbxfilesdk/kfbxplugins/kfbxgroupname.h>
00055 
00056 #include <fbxfilesdk/fbxfilesdk_nsbegin.h>
00057 
00058 class KFbxNode;
00059 class KFbxControlSet;
00060 class KFbxSdkManager;
00061 
00062 
00063 
00071 typedef enum 
00072 { 
00073         eCharacterInputActor = 0, 
00074         eCharacterInputCharacter = 1, 
00075         eCharacterInputMarkerSet = 2, 
00076         eCharacterOutputMarkerSet = 3, 
00077         eCharacterInputStance = 4 
00078 } ECharacterInputType;
00079 
00080 
00081 typedef enum  
00082 {       
00083         eCharacterHips = 0,             // Required
00084     eCharacterLeftHip,              // Required
00085     eCharacterLeftKnee,             // Required
00086         eCharacterLeftAnkle,            // Required
00087         eCharacterLeftFoot,
00088         eCharacterRightHip,             // Required
00089         eCharacterRightKnee,            // Required
00090         eCharacterRightAnkle,           // Required
00091         eCharacterRightFoot,
00092         eCharacterWaist,                                // Spine0, Required
00093         eCharacterChest,                        // Spine1
00094         eCharacterLeftCollar,
00095         eCharacterLeftShoulder,         // Required
00096         eCharacterLeftElbow,            // Required
00097         eCharacterLeftWrist,            // Required
00098         eCharacterRightCollar,
00099         eCharacterRightShoulder,        // Required
00100         eCharacterRightElbow,           // Required
00101         eCharacterRightWrist,           // Required
00102         eCharacterNeck,
00103         eCharacterHead,                 // Required
00104         eCharacterLeftHipRoll,
00105         eCharacterLeftKneeRoll,
00106         eCharacterRightHipRoll,
00107         eCharacterRightKneeRoll,
00108         eCharacterLeftShoulderRoll,
00109         eCharacterLeftElbowRoll,
00110         eCharacterRightShoulderRoll,
00111         eCharacterRightElbowRoll,
00112         eCharacterSpine2,
00113         eCharacterSpine3,
00114         eCharacterSpine4,
00115         eCharacterSpine5,
00116         eCharacterSpine6,
00117         eCharacterSpine7,
00118         eCharacterSpine8,
00119         eCharacterSpine9,
00120         eCharacterLeftThumbA,
00121         eCharacterLeftThumbB,
00122         eCharacterLeftThumbC,
00123         eCharacterLeftIndexA,
00124         eCharacterLeftIndexB,
00125         eCharacterLeftIndexC,
00126         eCharacterLeftMiddleA,
00127         eCharacterLeftMiddleB,
00128         eCharacterLeftMiddleC,
00129         eCharacterLeftRingA,
00130         eCharacterLeftRingB,
00131         eCharacterLeftRingC,
00132         eCharacterLeftPinkyA,
00133         eCharacterLeftPinkyB,
00134         eCharacterLeftPinkyC,
00135         eCharacterRightThumbA,
00136         eCharacterRightThumbB,
00137         eCharacterRightThumbC,
00138         eCharacterRightIndexA,
00139         eCharacterRightIndexB,
00140         eCharacterRightIndexC,
00141         eCharacterRightMiddleA,
00142         eCharacterRightMiddleB,
00143         eCharacterRightMiddleC,
00144         eCharacterRightRingA,
00145         eCharacterRightRingB,
00146         eCharacterRightRingC,
00147         eCharacterRightPinkyA,
00148         eCharacterRightPinkyB,
00149         eCharacterRightPinkyC,
00150         eCharacterReference,
00151         eCharacterLeftFloor,
00152         eCharacterRightFloor,
00153         eCharacterHipsTranslation,
00154         eCharacterProps0,
00155         eCharacterProps1,
00156         eCharacterProps2,
00157         eCharacterProps3,
00158         eCharacterProps4,
00159 
00160         // Added in 4.0x as patch.
00161 
00162         eCharacterGameModeParentLeftHipRoll,
00163         eCharacterGameModeParentLeftKnee,
00164         eCharacterGameModeParentLeftKneeRoll,
00165         eCharacterGameModeParentRightHipRoll,
00166         eCharacterGameModeParentRightKnee,
00167         eCharacterGameModeParentRightKneeRoll,
00168         eCharacterGameModeParentLeftShoulderRoll,       
00169         eCharacterGameModeParentLeftElbow,      
00170         eCharacterGameModeParentLeftElbowRoll,  
00171         eCharacterGameModeParentRightShoulderRoll,
00172         eCharacterGameModeParentRightElbow,             
00173         eCharacterGameModeParentRightElbowRoll, 
00174 
00175 
00176         // Elements added for Dominus.
00177         // From this point, the enum doesn't have to be synchronized with the HumanIK library.
00178 
00179         eCharacterLeftHandFloor,
00180         eCharacterRightHandFloor,
00181 
00182         eCharacterLeftHand,
00183         eCharacterRightHand,
00184         
00185         eCharacterNeck1,
00186         eCharacterNeck2,
00187         eCharacterNeck3,
00188         eCharacterNeck4,
00189         eCharacterNeck5,
00190         eCharacterNeck6,
00191         eCharacterNeck7,
00192         eCharacterNeck8,
00193         eCharacterNeck9,
00194 
00195         eCharacterLeftInHandThumb,
00196         eCharacterLeftThumbD,
00197         
00198         eCharacterLeftInHandIndex,
00199         eCharacterLeftIndexD,
00200         
00201         eCharacterLeftInHandMiddle,
00202         eCharacterLeftMiddleD,
00203         
00204         eCharacterLeftInHandRing,
00205         eCharacterLeftRingD,
00206         
00207         eCharacterLeftInHandPinky,
00208         eCharacterLeftPinkyD,
00209 
00210         eCharacterLeftInHandExtraFinger,
00211         eCharacterLeftExtraFingerA,
00212         eCharacterLeftExtraFingerB,
00213         eCharacterLeftExtraFingerC,
00214         eCharacterLeftExtraFingerD,
00215 
00216         eCharacterRightInHandThumb,
00217         eCharacterRightThumbD,
00218         
00219         eCharacterRightInHandIndex,
00220         eCharacterRightIndexD,
00221         
00222         eCharacterRightInHandMiddle,
00223         eCharacterRightMiddleD,
00224         
00225         eCharacterRightInHandRing,
00226         eCharacterRightRingD,
00227         
00228         eCharacterRightInHandPinky,
00229         eCharacterRightPinkyD,
00230 
00231         eCharacterRightInHandExtraFinger,
00232         eCharacterRightExtraFingerA,
00233         eCharacterRightExtraFingerB,
00234         eCharacterRightExtraFingerC,
00235         eCharacterRightExtraFingerD,
00236 
00237         eCharacterLeftInFootThumb,
00238         eCharacterLeftFootThumbA,
00239         eCharacterLeftFootThumbB,
00240         eCharacterLeftFootThumbC,
00241         eCharacterLeftFootThumbD,
00242         eCharacterLeftInFootIndex,
00243         eCharacterLeftFootIndexA,
00244         eCharacterLeftFootIndexB,
00245         eCharacterLeftFootIndexC,
00246         eCharacterLeftFootIndexD,
00247         eCharacterLeftInFootMiddle,
00248         eCharacterLeftFootMiddleA,
00249         eCharacterLeftFootMiddleB,
00250         eCharacterLeftFootMiddleC,
00251         eCharacterLeftFootMiddleD,
00252         eCharacterLeftInFootRing,
00253         eCharacterLeftFootRingA,
00254         eCharacterLeftFootRingB,
00255         eCharacterLeftFootRingC,
00256         eCharacterLeftFootRingD,
00257         eCharacterLeftInFootPinky,
00258         eCharacterLeftFootPinkyA,
00259         eCharacterLeftFootPinkyB,
00260         eCharacterLeftFootPinkyC,
00261         eCharacterLeftFootPinkyD,
00262         eCharacterLeftInFootExtraFinger,
00263         eCharacterLeftFootExtraFingerA,
00264         eCharacterLeftFootExtraFingerB,
00265         eCharacterLeftFootExtraFingerC,
00266         eCharacterLeftFootExtraFingerD,
00267 
00268         eCharacterRightInFootThumb,
00269         eCharacterRightFootThumbA,
00270         eCharacterRightFootThumbB,
00271         eCharacterRightFootThumbC,
00272         eCharacterRightFootThumbD,
00273         eCharacterRightInFootIndex,
00274         eCharacterRightFootIndexA,
00275         eCharacterRightFootIndexB,
00276         eCharacterRightFootIndexC,
00277         eCharacterRightFootIndexD,
00278         eCharacterRightInFootMiddle,
00279         eCharacterRightFootMiddleA,
00280         eCharacterRightFootMiddleB,
00281         eCharacterRightFootMiddleC,
00282         eCharacterRightFootMiddleD,
00283         eCharacterRightInFootRing,
00284         eCharacterRightFootRingA,
00285         eCharacterRightFootRingB,
00286         eCharacterRightFootRingC,
00287         eCharacterRightFootRingD,
00288         eCharacterRightInFootPinky,
00289         eCharacterRightFootPinkyA,
00290         eCharacterRightFootPinkyB,
00291         eCharacterRightFootPinkyC,
00292         eCharacterRightFootPinkyD,
00293         eCharacterRightInFootExtraFinger,
00294         eCharacterRightFootExtraFingerA,
00295         eCharacterRightFootExtraFingerB,
00296         eCharacterRightFootExtraFingerC,
00297         eCharacterRightFootExtraFingerD,
00298 
00299         eCharacterLastNodeId
00300 } ECharacterNodeId;
00301 
00302 
00303 typedef enum 
00304 {
00305         eCharacterGroup_Base,
00306         eCharacterGroup_Auxiliary,
00307         eCharacterGroup_Spine,
00308         eCharacterGroup_Roll,
00309         eCharacterGroup_Special,
00310         eCharacterGroup_LeftHand,
00311         eCharacterGroup_RightHand,
00312         eCharacterGroup_Props,
00313         eCharacterGroup_GameModeParent,
00314 
00315         // Added for 4.5 
00316 
00317         eCharacterGroup_Neck,
00318         eCharacterGroup_LeftFoot,
00319         eCharacterGroup_RightFoot,
00320 
00321         eLastCharacterGroupId
00322 } ECharacterGroupId;
00323 
00324 
00325 typedef enum 
00326 {
00327         eCharacterLink,
00328         eControlSetLink,
00329         eControlSetEffector,
00330         eControlSetEffectorAux
00331 } ECharacterLinkType;
00332 
00338 class KFBX_DLL KFbxCharacterLink
00339 {
00340 public:
00341 
00342         KFbxCharacterLink();
00343         KFbxCharacterLink(const KFbxCharacterLink& pCharacterLink);
00344         KFbxCharacterLink& operator=(const KFbxCharacterLink& pCharacterLink);
00345         void Reset();
00346 
00348         KFbxNode* mNode;
00349 
00352         KString mTemplateName;
00353 
00355         KFbxVector4 mOffsetT;
00357         KFbxVector4 mOffsetR;
00359         KFbxVector4 mOffsetS;
00361         KFbxVector4 mParentROffset;
00362 
00364         bool            mHasRotSpace;
00366         KFbxLimits  mRLimits;
00368         KFbxVector4 mPreRotation;
00370         KFbxVector4 mPostRotation;
00372         int                     mRotOrder;
00374         double          mAxisLen;
00375 
00376 
00378 //
00379 //  WARNING!
00380 //
00381 //      Anything beyond these lines may not be documented accurately and is 
00382 //      subject to change without notice.
00383 //
00385 
00386 #ifndef DOXYGEN_SHOULD_SKIP_THIS        
00387 
00388         KFbxProperty mPropertyLink;
00389         KFbxProperty mPropertyOffsetT;
00390         KFbxProperty mPropertyOffsetR;
00391         KFbxProperty mPropertyOffsetS;
00392         KFbxProperty mPropertyParentOffsetR;
00393         KFbxProperty mPropertyTemplateName;
00394 
00395 #endif // #ifndef DOXYGEN_SHOULD_SKIP_THIS
00396 
00397 };
00398 
00411 class KFBX_DLL KFbxCharacter : public KFbxConstraint
00412 {
00413         KFBXOBJECT_DECLARE(KFbxCharacter,KFbxConstraint);
00414 
00415 public:
00416 
00423         void Reset();
00424 
00429         void SetInput(ECharacterInputType pInputType, KFbxObject* pInputObject = NULL);
00430 
00432         ECharacterInputType GetInputType() const;
00433 
00439         KFbxObject* GetInputObject() const;
00440 
00448         bool SetCharacterLink(ECharacterNodeId pCharacterNodeId, const KFbxCharacterLink& pCharacterLink, bool pUpdateObjectList = true);
00449 
00455         bool GetCharacterLink(ECharacterNodeId pCharacterNodeId, KFbxCharacterLink* pCharacterLink = NULL) const;
00456 
00460         KFbxControlSet& GetControlSet() const;
00461 
00466         static int GetCharacterGroupCount(ECharacterGroupId pCharacterGroupId);
00467 
00473         static ECharacterNodeId GetCharacterGroupElementByIndex(ECharacterGroupId pCharacterGroupId, int pIndex);
00474 
00475     
00481         static char* GetCharacterGroupNameByIndex(ECharacterGroupId pCharacterGroupId, int pIndex);
00482 
00488         static int GetCharacterGroupVersionByIndex(ECharacterGroupId pCharacterGroupId, int pIndex);
00489 
00497         static bool FindCharacterGroupIndexByName(char* pName, bool pForceGroupId, ECharacterGroupId& pCharacterGroupId, int& pIndex);
00498 
00506         static bool GetCharacterGroupIndexByElement(ECharacterNodeId pCharacterNodeId, ECharacterGroupId& pCharacterGroupId, int& pIndex);
00507 
00514         static bool GetCharacterGroupVersionByElement(ECharacterNodeId pCharacterNodeId, int& pVersion);
00515 
00523         static bool GetCharacterNodeNameFromNodeId(ECharacterNodeId pCharacterNodeId, char*& pName);
00524 
00530         static bool GetCharacterNodeIdFromNodeName(char* pName, ECharacterNodeId& pCharacterNodeId);
00531 
00532         typedef enum 
00533         {
00534                 eINTERNAL_ERROR,
00535                 eERROR_COUNT
00536         } EError; 
00537         
00538         // KFbxConstraint Properties                            
00539         KFbxTypedProperty<fbxBool1>                             Active;
00540         KFbxTypedProperty<fbxBool1>                             Lock;
00541         KFbxTypedProperty<fbxDouble1>                           Weight;
00542 
00543         // KFbxCharacter Properties
00544         KFbxTypedProperty<fbxInteger1>                          PullIterationCount;
00545         KFbxTypedProperty<kCharacterPosture>                    Posture;
00546         KFbxTypedProperty<fbxBool1>                             ForceActorSpace;
00547         KFbxTypedProperty<fbxDouble1>                           ScaleCompensation;
00548         KFbxTypedProperty<kCharacterOffAutoUser>                ScaleCompensationMode;
00549         KFbxTypedProperty<fbxDouble1>                           HipsHeightCompensation;
00550         KFbxTypedProperty<kCharacterOffAutoUser>                HipsHeightCompensationMode;
00551         KFbxTypedProperty<fbxDouble1>                           AnkleHeightCompensation;
00552         KFbxTypedProperty<kCharacterOffAutoUser>                AnkleHeightCompensationMode;
00553         KFbxTypedProperty<fbxDouble1>                           AnkleProximityCompensation;
00554         KFbxTypedProperty<kCharacterOffAutoUser>                AnkleProximityCompensationMode;
00555         KFbxTypedProperty<fbxDouble1>                           MassCenterCompensation;
00556         KFbxTypedProperty<fbxBool1>                             ApplyLimits;
00557         KFbxTypedProperty<fbxDouble1>                           ChestReduction;
00558         KFbxTypedProperty<fbxDouble1>                           CollarReduction;
00559         KFbxTypedProperty<fbxDouble1>                           NeckReduction;
00560         KFbxTypedProperty<fbxDouble1>                           HeadReduction;
00561         KFbxTypedProperty<fbxDouble1>                           ReachActorLeftAnkle;
00562         KFbxTypedProperty<fbxDouble1>                           ReachActorRightAnkle;
00563         KFbxTypedProperty<fbxDouble1>                           ReachActorLeftKnee;
00564         KFbxTypedProperty<fbxDouble1>                           ReachActorRightKnee;
00565         KFbxTypedProperty<fbxDouble1>                           ReachActorChest;
00566         KFbxTypedProperty<fbxDouble1>                           ReachActorHead;
00567         KFbxTypedProperty<fbxDouble1>                           ReachActorLeftWrist;
00568         KFbxTypedProperty<fbxDouble1>                           ReachActorRightWrist;
00569         KFbxTypedProperty<fbxDouble1>                           ReachActorLeftElbow;
00570         KFbxTypedProperty<fbxDouble1>                           ReachActorRightElbow;
00571         KFbxTypedProperty<fbxDouble1>                           ReachActorLeftFingerBase;
00572         KFbxTypedProperty<fbxDouble1>                           ReachActorRightFingerBase;
00573         KFbxTypedProperty<fbxDouble1>                           ReachActorLeftToesBase;
00574         KFbxTypedProperty<fbxDouble1>                           ReachActorRightToesBase;
00575         KFbxTypedProperty<fbxDouble1>                           ReachActorLeftFingerBaseRotation;
00576         KFbxTypedProperty<fbxDouble1>                           ReachActorRightFingerBaseRotation;
00577         KFbxTypedProperty<fbxDouble1>                           ReachActorLeftToesBaseRotation;
00578         KFbxTypedProperty<fbxDouble1>                           ReachActorRightToesBaseRotation;
00579         KFbxTypedProperty<fbxDouble1>                           ReachActorLeftAnkleRotation;
00580         KFbxTypedProperty<fbxDouble1>                           ReachActorRightAnkleRotation;
00581         KFbxTypedProperty<fbxDouble1>                           ReachActorHeadRotation;
00582         KFbxTypedProperty<fbxDouble1>                           ReachActorLeftWristRotation;
00583         KFbxTypedProperty<fbxDouble1>                           ReachActorRightWristRotation;
00584         KFbxTypedProperty<fbxDouble1>                           ReachActorChestRotation;
00585         KFbxTypedProperty<fbxDouble1>                           ReachActorLowerChestRotation;
00586         KFbxTypedProperty<fbxDouble3>                           HipsTOffset;
00587         KFbxTypedProperty<fbxDouble3>                           ChestTOffset;
00588         KFbxTypedProperty<kCharacterRollExtractionMode>         RollExtractionMode;
00589         KFbxTypedProperty<fbxDouble1>                           LeftUpLegRoll;
00590         KFbxTypedProperty<fbxBool1>                             LeftUpLegRollMode;
00591         KFbxTypedProperty<fbxDouble1>                           LeftLegRoll;
00592         KFbxTypedProperty<fbxBool1>                             LeftLegRollMode;
00593         KFbxTypedProperty<fbxDouble1>                           RightUpLegRoll;
00594         KFbxTypedProperty<fbxBool1>                             RightUpLegRollMode;
00595         KFbxTypedProperty<fbxDouble1>                           RightLegRoll;
00596         KFbxTypedProperty<fbxBool1>                             RightLegRollMode;
00597         KFbxTypedProperty<fbxDouble1>                           LeftArmRoll;
00598         KFbxTypedProperty<fbxBool1>                             LeftArmRollMode;
00599         KFbxTypedProperty<fbxDouble1>                           LeftForeArmRoll;
00600         KFbxTypedProperty<fbxBool1>                             LeftForeArmRollMode;
00601         KFbxTypedProperty<fbxDouble1>                           RightArmRoll;
00602         KFbxTypedProperty<fbxBool1>                             RightArmRollMode;
00603         KFbxTypedProperty<fbxDouble1>                           RightForeArmRoll;
00604         KFbxTypedProperty<fbxBool1>                             RightForeArmRollMode;
00605         KFbxTypedProperty<kCharacterContactBehaviour>           ContactBehaviour;
00606         KFbxTypedProperty<fbxBool1>                             FootFloorContact;
00607         KFbxTypedProperty<fbxBool1>                             FootAutomaticToes;
00608         KFbxTypedProperty<kCharacterFloorPivot>                 FootFloorPivot;
00609         KFbxTypedProperty<fbxDouble1>                           FootBottomToAnkle;
00610         KFbxTypedProperty<fbxDouble1>                           FootBackToAnkle;
00611         KFbxTypedProperty<fbxDouble1>                           FootMiddleToAnkle;
00612         KFbxTypedProperty<fbxDouble1>                           FootFrontToMiddle;
00613         KFbxTypedProperty<fbxDouble1>                           FootInToAnkle;
00614         KFbxTypedProperty<fbxDouble1>                           FootOutToAnkle;
00615         KFbxTypedProperty<fbxDouble1>                           FootContactSize;
00616         KFbxTypedProperty<fbxBool1>                             FootFingerContact;
00617         KFbxTypedProperty<kCharacterFootContactType>            FootContactType;
00618         KFbxTypedProperty<kCharacterFingerContactMode>          FootFingerContactMode;
00619         KFbxTypedProperty<fbxDouble1>                           FootContactStiffness;
00620         KFbxTypedProperty<fbxDouble1>                           FootFingerContactRollStiffness;
00621         KFbxTypedProperty<fbxBool1>                             HandFloorContact;
00622         KFbxTypedProperty<fbxBool1>                             HandAutomaticFingers;
00623         KFbxTypedProperty<kCharacterFloorPivot>                 HandFloorPivot;
00624         KFbxTypedProperty<fbxDouble1>                           HandBottomToWrist;
00625         KFbxTypedProperty<fbxDouble1>                           HandBackToWrist;
00626         KFbxTypedProperty<fbxDouble1>                           HandMiddleToWrist;
00627         KFbxTypedProperty<fbxDouble1>                           HandFrontToMiddle;
00628         KFbxTypedProperty<fbxDouble1>                           HandInToWrist;
00629         KFbxTypedProperty<fbxDouble1>                           HandOutToWrist;
00630         KFbxTypedProperty<fbxDouble1>                           HandContactSize;
00631         KFbxTypedProperty<fbxBool1>                             HandFingerContact;
00632         KFbxTypedProperty<kCharacterHandContactType>            HandContactType;
00633         KFbxTypedProperty<kCharacterFingerContactMode>          HandFingerContactMode;
00634         KFbxTypedProperty<fbxDouble1>                           HandContactStiffness;
00635         KFbxTypedProperty<fbxDouble1>                           HandFingerContactRollStiffness;
00636         KFbxTypedProperty<fbxDouble1>                           LeftHandThumbTip;
00637         KFbxTypedProperty<fbxDouble1>                           LeftHandIndexTip;
00638         KFbxTypedProperty<fbxDouble1>                           LeftHandMiddleTip;
00639         KFbxTypedProperty<fbxDouble1>                           LeftHandRingTip;
00640         KFbxTypedProperty<fbxDouble1>                           LeftHandPinkyTip;
00641         KFbxTypedProperty<fbxDouble1>                           LeftHandExtraFingerTip;
00642         KFbxTypedProperty<fbxDouble1>                           RightHandThumbTip;
00643         KFbxTypedProperty<fbxDouble1>                           RightHandIndexTip;
00644         KFbxTypedProperty<fbxDouble1>                           RightHandMiddleTip;
00645         KFbxTypedProperty<fbxDouble1>                           RightHandRingTip;
00646         KFbxTypedProperty<fbxDouble1>                           RightHandPinkyTip;
00647         KFbxTypedProperty<fbxDouble1>                           RightHandExtraFingerTip;
00648         KFbxTypedProperty<fbxDouble1>                           LeftFootThumbTip;
00649         KFbxTypedProperty<fbxDouble1>                           LeftFootIndexTip;
00650         KFbxTypedProperty<fbxDouble1>                           LeftFootMiddleTip;
00651         KFbxTypedProperty<fbxDouble1>                           LeftFootRingTip;
00652         KFbxTypedProperty<fbxDouble1>                           LeftFootPinkyTip;
00653         KFbxTypedProperty<fbxDouble1>                           LeftFootExtraFingerTip;
00654         KFbxTypedProperty<fbxDouble1>                           RightFootThumbTip;
00655         KFbxTypedProperty<fbxDouble1>                           RightFootIndexTip;
00656         KFbxTypedProperty<fbxDouble1>                           RightFootMiddleTip;
00657         KFbxTypedProperty<fbxDouble1>                           RightFootRingTip;
00658         KFbxTypedProperty<fbxDouble1>                           RightFootPinkyTip;
00659         KFbxTypedProperty<fbxDouble1>                           RightFootExtraFingerTip;
00660         KFbxTypedProperty<fbxBool1>                             FingerSolving;
00661         KFbxTypedProperty<fbxDouble1>                           CtrlPullLeftToeBase;
00662         KFbxTypedProperty<fbxDouble1>                           CtrlPullLeftFoot;
00663         KFbxTypedProperty<fbxDouble1>                           CtrlPullLeftKnee;
00664         KFbxTypedProperty<fbxDouble1>                           CtrlPullRightToeBase;
00665         KFbxTypedProperty<fbxDouble1>                           CtrlPullRightFoot;
00666         KFbxTypedProperty<fbxDouble1>                           CtrlPullRightKnee;
00667         KFbxTypedProperty<fbxDouble1>                           CtrlPullLeftFingerBase;
00668         KFbxTypedProperty<fbxDouble1>                           CtrlPullLeftHand;
00669         KFbxTypedProperty<fbxDouble1>                           CtrlPullLeftElbow;
00670         KFbxTypedProperty<fbxDouble1>                           CtrlPullRightFingerBase;
00671         KFbxTypedProperty<fbxDouble1>                           CtrlPullRightHand;
00672         KFbxTypedProperty<fbxDouble1>                           CtrlPullRightElbow;
00673         KFbxTypedProperty<fbxDouble1>                           CtrlChestPullLeftHand;
00674         KFbxTypedProperty<fbxDouble1>                           CtrlChestPullRightHand;
00675         KFbxTypedProperty<fbxDouble1>                           CtrlPullHead;
00676         KFbxTypedProperty<fbxDouble1>                           CtrlResistHipsPosition;
00677         KFbxTypedProperty<fbxDouble1>                           CtrlEnforceGravity;
00678         KFbxTypedProperty<fbxDouble1>                           CtrlResistHipsOrientation;
00679         KFbxTypedProperty<fbxDouble1>                           CtrlResistChestPosition;
00680         KFbxTypedProperty<fbxDouble1>                           CtrlResistChestOrientation;
00681         KFbxTypedProperty<fbxDouble1>                           CtrlResistLeftCollar;
00682         KFbxTypedProperty<fbxDouble1>                           CtrlResistRightCollar;
00683         KFbxTypedProperty<fbxDouble1>                           CtrlResistLeftKnee;
00684         KFbxTypedProperty<fbxDouble1>                           CtrlResistMaximumExtensionLeftKnee;
00685         KFbxTypedProperty<fbxDouble1>                           CtrlResistCompressionFactorLeftKnee;
00686         KFbxTypedProperty<fbxDouble1>                           CtrlResistRightKnee;
00687         KFbxTypedProperty<fbxDouble1>                           CtrlResistMaximumExtensionRightKnee;
00688         KFbxTypedProperty<fbxDouble1>                           CtrlResistCompressionFactorRightKnee;
00689         KFbxTypedProperty<fbxDouble1>                           CtrlResistLeftElbow;
00690         KFbxTypedProperty<fbxDouble1>                           CtrlResistMaximumExtensionLeftElbow;
00691         KFbxTypedProperty<fbxDouble1>                           CtrlResistCompressionFactorLeftElbow;
00692         KFbxTypedProperty<fbxDouble1>                           CtrlResistRightElbow;
00693         KFbxTypedProperty<fbxDouble1>                           CtrlResistMaximumExtensionRightElbow;
00694         KFbxTypedProperty<fbxDouble1>                           CtrlResistCompressionFactorRightElbow;
00695         KFbxTypedProperty<fbxDouble1>                           CtrlSpineStiffness;
00696         KFbxTypedProperty<fbxDouble1>                           CtrlNeckStiffness;
00697         KFbxTypedProperty<fbxBool1>                             MirrorMode;
00698         KFbxTypedProperty<fbxDouble1>                           ShoulderCorrection;
00699         KFbxTypedProperty<fbxBool1>                             LeftKneeKillPitch;
00700         KFbxTypedProperty<fbxBool1>                             RightKneeKillPitch;
00701         KFbxTypedProperty<fbxBool1>                             LeftElbowKillPitch;
00702         KFbxTypedProperty<fbxBool1>                             RightElbowKillPitch;
00703         KFbxTypedProperty<kCharacterHipsTranslationMode>        HipsTranslationMode;
00704         KFbxTypedProperty<fbxBool1>                             WriteReference;
00705         KFbxTypedProperty<fbxBool1>                             SyncMode;
00706         KFbxTypedProperty<fbxDouble1>                           Damping;
00707         KFbxTypedProperty<fbxDouble1>                           OrientationDamping;
00708         KFbxTypedProperty<kCharacterOffAutoUser>                OrientationDampingMode;
00709         KFbxTypedProperty<fbxDouble1>                           DisplacementDamping;
00710         KFbxTypedProperty<kCharacterOffAutoUser>                DisplacementDampingMode;
00711         KFbxTypedProperty<fbxDouble1>                           DisplacementMemory;
00712         KFbxTypedProperty<kCharacterAutoUser>                   DisplacementMemoryMode;
00713         KFbxTypedProperty<fbxDouble1>                           HipsDisplacementDamping;
00714         KFbxTypedProperty<kCharacterAutoUser>                   HipsDisplacementDampingMode;
00715         KFbxTypedProperty<fbxDouble1>                           AnkleDisplacementDamping;
00716         KFbxTypedProperty<kCharacterAutoUser>                   AnkleDisplacementDampingMode;
00717         KFbxTypedProperty<fbxDouble1>                           WristDisplacementDamping;
00718         KFbxTypedProperty<kCharacterAutoUser>                   WristDisplacementDampingMode;
00719         KFbxTypedProperty<fbxDouble1>                           Stabilization;
00720         KFbxTypedProperty<fbxDouble1>                           AnkleStabilizationTime;
00721         KFbxTypedProperty<kCharacterAutoUser>                   AnkleStabilizationTimeMode;
00722         KFbxTypedProperty<fbxDouble1>                           AnkleStabilizationPerimeter;
00723         KFbxTypedProperty<kCharacterAutoUser>                   AnkleStabilizationPerimeterMode;
00724         KFbxTypedProperty<fbxDouble1>                           AnkleStabilizationAngularPerimeter;
00725         KFbxTypedProperty<kCharacterOffAutoUser>                AnkleStabilizationAngularPerimeterMode;
00726         KFbxTypedProperty<fbxDouble1>                           AnkleStabilizationFloorProximity;
00727         KFbxTypedProperty<kCharacterOffAutoUser>                AnkleStabilizationFloorProximityMode;
00728         KFbxTypedProperty<fbxDouble1>                           AnkleStabilizationDamping;
00729         KFbxTypedProperty<kCharacterOffAutoUser>                AnkleStabilizationDampingMode;
00730         KFbxTypedProperty<fbxDouble1>                           AnkleStabilizationRecoveryTime;
00731         KFbxTypedProperty<kCharacterOffAutoUser>                AnkleStabilizationRecoveryTimeMode;
00732 
00733     KFbxTypedProperty<fbxReference*>                    SourceObject;
00734     KFbxTypedProperty<fbxReference*>                    DestinationObject;
00735     KFbxTypedProperty<fbxReference*>                    Actor;
00736     KFbxTypedProperty<fbxReference*>                    Character;
00737     KFbxTypedProperty<fbxReference*>                    ControlSet;
00738 
00739     KFbxTypedProperty<fbxBool1>                         Characterize;
00740     KFbxTypedProperty<fbxBool1>                         LockXForm;
00741     KFbxTypedProperty<fbxBool1>                         LockPick;
00742     
00744 //
00745 //  WARNING!
00746 //
00747 //      Anything beyond these lines may not be documented accurately and is 
00748 //      subject to change without notice.
00749 //
00751 
00752 #ifndef DOXYGEN_SHOULD_SKIP_THIS        
00753 
00754         // Clone
00755         virtual KFbxObject* Clone(KFbxObject* pContainer, KFbxObject::ECloneType pCloneType) const;
00756 
00757 protected:
00758         KFbxCharacter& operator=(KFbxCharacter const& pCharacter); 
00759 public:
00760         KFbxCharacter(KFbxSdkManager& pManager, char const* pName);
00761         ~KFbxCharacter();
00762 
00763         virtual void Construct(const KFbxCharacter* pFrom);
00764         virtual void Destruct(bool pRecursive, bool pDependents);
00765 
00766         virtual EConstraintType GetConstraintType();
00767         virtual KString                 GetTypeName() const;
00768 
00769         virtual KStringList     GetTypeFlags() const;
00770 
00771         // KFbxTakeNodeContainer virtual functions
00772         virtual void AddChannels(KFbxTakeNode *pTakeNode);
00773 
00774         virtual bool    ConnecNotify (KFbxConnectEvent const &pEvent);
00775 
00776         // Used when bridging to HumanIK Middleware
00777         const void GetKFbxCharacterPropertyFromHIKProperty(     char* &pKFbxCharacterPropertyName, 
00778                                                                 char* &pKFbxCharacterPropertyModeName,  
00779                                                                 kCharacterPropertyUnit &pUnit,
00780                                                                 int &pPropertyIndex,
00781                                                                 const char* pHIKPropertyName) const;
00782         
00783         const void GetHIKPropertyFromKFbxCharacterProperty(     char* &pHIKPropertyName,                                                                                                                
00784                                                                 kCharacterPropertyUnit &pUnit,
00785                                                                 const char* pKFbxCharacterPropertyName) const ;
00786 
00787         const void GetPropertyInfo(     char* &pKFbxCharacterPropertyName, 
00788                                                                 char* &pKFbxCharacterPropertyModeName,  
00789                                                                 kCharacterPropertyUnit &pUnit,
00790                                                                 int &pPropertyIndex,
00791                                                                 char* &pHIKPropertyName,
00792                                                                 int pIndex) const;
00793         int GetPropertyInfoCount();
00794 
00795         KError                  mError;
00796 
00797         KString                 mName;  
00798         KFbxCharacterLink       mCharacterLink[eCharacterLastNodeId];
00799         KFbxControlSet*         mControlSet;
00800         
00801         friend class KFbxScene;
00802         friend class KFbxNode;
00803 
00804 #endif // #ifndef DOXYGEN_SHOULD_SKIP_THIS
00805 
00806 protected:
00807         
00808 };
00809 
00810 typedef KFbxCharacter* HKFbxCharacter;
00811 
00812 inline EFbxType FbxTypeOf( kCharacterOffAutoUser const &pItem )             { return eENUM; }
00813 inline EFbxType FbxTypeOf( kCharacterAutoUser const &pItem )                { return eENUM; }
00814 inline EFbxType FbxTypeOf( kCharacterPosture const &pItem )                 { return eENUM; }
00815 inline EFbxType FbxTypeOf( kCharacterFloorPivot const &pItem )              { return eENUM; }
00816 inline EFbxType FbxTypeOf( kCharacterRollExtractionMode const &pItem )      { return eENUM; }
00817 inline EFbxType FbxTypeOf( kCharacterHipsTranslationMode const &pItem )     { return eENUM; }
00818 inline EFbxType FbxTypeOf( kCharacterFootContactType const &pItem )         { return eENUM; }
00819 inline EFbxType FbxTypeOf( kCharacterHandContactType const &pItem )         { return eENUM; }
00820 inline EFbxType FbxTypeOf( kCharacterFingerContactMode const &pItem )       { return eENUM; }
00821 inline EFbxType FbxTypeOf( kCharacterContactBehaviour const &pItem )        { return eENUM; }
00822 
00823 #include <fbxfilesdk/fbxfilesdk_nsend.h>
00824 
00825 #endif // FBXFILESDK_KFBXCHARACTER_KFBXCHARACTER_H
00826