kfbxcharacter.h

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 (C) 2001 - 2010 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 #include <fbxfilesdk/fbxfilesdk_def.h>
00042 
00043 #include <fbxfilesdk/kfbxmath/kfbxvector4.h>
00044 
00045 #include <fbxfilesdk/components/kbaselib/klib/kstring.h>
00046 #include <fbxfilesdk/components/kbaselib/klib/kerror.h>
00047 
00048 #include <fbxfilesdk/components/kcharacterdef/kfiltersetenum.h>
00049 
00050 #include <fbxfilesdk/kfbxplugins/kfbxconstraint.h>
00051 #include <fbxfilesdk/kfbxplugins/kfbxnodelimits.h>
00052 #include <fbxfilesdk/kfbxplugins/kfbxgroupname.h>
00053 
00054 #include <fbxfilesdk/fbxfilesdk_nsbegin.h>
00055 
00056 class KFbxNode;
00057 class KFbxControlSet;
00058 class KFbxSdkManager;
00059 
00067 typedef enum 
00068 { 
00069     eCharacterInputActor = 0, 
00070     eCharacterInputCharacter = 1, 
00071     eCharacterInputMarkerSet = 2, 
00072     eCharacterOutputMarkerSet = 3, 
00073     eCharacterInputStance = 4 
00074 } ECharacterInputType;
00075 
00078 typedef enum  
00079 {       
00080     eCharacterHips = 0,             
00081     eCharacterLeftHip,              
00082     eCharacterLeftKnee,             
00083     eCharacterLeftAnkle,            
00084     eCharacterLeftFoot,
00085     eCharacterRightHip,             
00086     eCharacterRightKnee,            
00087     eCharacterRightAnkle,           
00088     eCharacterRightFoot,
00089     eCharacterWaist,                
00090     eCharacterChest,                
00091     eCharacterLeftCollar,
00092     eCharacterLeftShoulder,         
00093     eCharacterLeftElbow,            
00094     eCharacterLeftWrist,            
00095     eCharacterRightCollar,
00096     eCharacterRightShoulder,        
00097     eCharacterRightElbow,           
00098     eCharacterRightWrist,           
00099     eCharacterNeck,
00100     eCharacterHead,                 
00101     eCharacterLeftHipRoll,
00102     eCharacterLeftKneeRoll,
00103     eCharacterRightHipRoll,
00104     eCharacterRightKneeRoll,
00105     eCharacterLeftShoulderRoll,
00106     eCharacterLeftElbowRoll,
00107     eCharacterRightShoulderRoll,
00108     eCharacterRightElbowRoll,
00109     eCharacterSpine2,
00110     eCharacterSpine3,
00111     eCharacterSpine4,
00112     eCharacterSpine5,
00113     eCharacterSpine6,
00114     eCharacterSpine7,
00115     eCharacterSpine8,
00116     eCharacterSpine9,
00117     eCharacterLeftThumbA,
00118     eCharacterLeftThumbB,
00119     eCharacterLeftThumbC,
00120     eCharacterLeftIndexA,
00121     eCharacterLeftIndexB,
00122     eCharacterLeftIndexC,
00123     eCharacterLeftMiddleA,
00124     eCharacterLeftMiddleB,
00125     eCharacterLeftMiddleC,
00126     eCharacterLeftRingA,
00127     eCharacterLeftRingB,
00128     eCharacterLeftRingC,
00129     eCharacterLeftPinkyA,
00130     eCharacterLeftPinkyB,
00131     eCharacterLeftPinkyC,
00132     eCharacterRightThumbA,
00133     eCharacterRightThumbB,
00134     eCharacterRightThumbC,
00135     eCharacterRightIndexA,
00136     eCharacterRightIndexB,
00137     eCharacterRightIndexC,
00138     eCharacterRightMiddleA,
00139     eCharacterRightMiddleB,
00140     eCharacterRightMiddleC,
00141     eCharacterRightRingA,
00142     eCharacterRightRingB,
00143     eCharacterRightRingC,
00144     eCharacterRightPinkyA,
00145     eCharacterRightPinkyB,
00146     eCharacterRightPinkyC,
00147     eCharacterReference,
00148     eCharacterLeftFloor,
00149     eCharacterRightFloor,
00150     eCharacterHipsTranslation,
00151     eCharacterProps0,
00152     eCharacterProps1,
00153     eCharacterProps2,
00154     eCharacterProps3,
00155     eCharacterProps4,
00156 
00157     // Added in 4.0x as patch.
00158 
00159     eCharacterGameModeParentLeftHipRoll,
00160     eCharacterGameModeParentLeftKnee,
00161     eCharacterGameModeParentLeftKneeRoll,
00162     eCharacterGameModeParentRightHipRoll,
00163     eCharacterGameModeParentRightKnee,
00164     eCharacterGameModeParentRightKneeRoll,
00165     eCharacterGameModeParentLeftShoulderRoll,       
00166     eCharacterGameModeParentLeftElbow,      
00167     eCharacterGameModeParentLeftElbowRoll,  
00168     eCharacterGameModeParentRightShoulderRoll,
00169     eCharacterGameModeParentRightElbow,             
00170     eCharacterGameModeParentRightElbowRoll, 
00171 
00172 
00173     // Elements added for Dominus.
00174     // From this point, the enum doesn't have to be synchronized with the HumanIK library.
00175 
00176     eCharacterLeftHandFloor,
00177     eCharacterRightHandFloor,
00178 
00179     eCharacterLeftHand,
00180     eCharacterRightHand,
00181 
00182     eCharacterNeck1,
00183     eCharacterNeck2,
00184     eCharacterNeck3,
00185     eCharacterNeck4,
00186     eCharacterNeck5,
00187     eCharacterNeck6,
00188     eCharacterNeck7,
00189     eCharacterNeck8,
00190     eCharacterNeck9,
00191 
00192     eCharacterLeftInHandThumb,
00193     eCharacterLeftThumbD,
00194 
00195     eCharacterLeftInHandIndex,
00196     eCharacterLeftIndexD,
00197 
00198     eCharacterLeftInHandMiddle,
00199     eCharacterLeftMiddleD,
00200 
00201     eCharacterLeftInHandRing,
00202     eCharacterLeftRingD,
00203 
00204     eCharacterLeftInHandPinky,
00205     eCharacterLeftPinkyD,
00206 
00207     eCharacterLeftInHandExtraFinger,
00208     eCharacterLeftExtraFingerA,
00209     eCharacterLeftExtraFingerB,
00210     eCharacterLeftExtraFingerC,
00211     eCharacterLeftExtraFingerD,
00212 
00213     eCharacterRightInHandThumb,
00214     eCharacterRightThumbD,
00215 
00216     eCharacterRightInHandIndex,
00217     eCharacterRightIndexD,
00218 
00219     eCharacterRightInHandMiddle,
00220     eCharacterRightMiddleD,
00221 
00222     eCharacterRightInHandRing,
00223     eCharacterRightRingD,
00224 
00225     eCharacterRightInHandPinky,
00226     eCharacterRightPinkyD,
00227 
00228     eCharacterRightInHandExtraFinger,
00229     eCharacterRightExtraFingerA,
00230     eCharacterRightExtraFingerB,
00231     eCharacterRightExtraFingerC,
00232     eCharacterRightExtraFingerD,
00233 
00234     eCharacterLeftInFootThumb,
00235     eCharacterLeftFootThumbA,
00236     eCharacterLeftFootThumbB,
00237     eCharacterLeftFootThumbC,
00238     eCharacterLeftFootThumbD,
00239     eCharacterLeftInFootIndex,
00240     eCharacterLeftFootIndexA,
00241     eCharacterLeftFootIndexB,
00242     eCharacterLeftFootIndexC,
00243     eCharacterLeftFootIndexD,
00244     eCharacterLeftInFootMiddle,
00245     eCharacterLeftFootMiddleA,
00246     eCharacterLeftFootMiddleB,
00247     eCharacterLeftFootMiddleC,
00248     eCharacterLeftFootMiddleD,
00249     eCharacterLeftInFootRing,
00250     eCharacterLeftFootRingA,
00251     eCharacterLeftFootRingB,
00252     eCharacterLeftFootRingC,
00253     eCharacterLeftFootRingD,
00254     eCharacterLeftInFootPinky,
00255     eCharacterLeftFootPinkyA,
00256     eCharacterLeftFootPinkyB,
00257     eCharacterLeftFootPinkyC,
00258     eCharacterLeftFootPinkyD,
00259     eCharacterLeftInFootExtraFinger,
00260     eCharacterLeftFootExtraFingerA,
00261     eCharacterLeftFootExtraFingerB,
00262     eCharacterLeftFootExtraFingerC,
00263     eCharacterLeftFootExtraFingerD,
00264 
00265     eCharacterRightInFootThumb,
00266     eCharacterRightFootThumbA,
00267     eCharacterRightFootThumbB,
00268     eCharacterRightFootThumbC,
00269     eCharacterRightFootThumbD,
00270     eCharacterRightInFootIndex,
00271     eCharacterRightFootIndexA,
00272     eCharacterRightFootIndexB,
00273     eCharacterRightFootIndexC,
00274     eCharacterRightFootIndexD,
00275     eCharacterRightInFootMiddle,
00276     eCharacterRightFootMiddleA,
00277     eCharacterRightFootMiddleB,
00278     eCharacterRightFootMiddleC,
00279     eCharacterRightFootMiddleD,
00280     eCharacterRightInFootRing,
00281     eCharacterRightFootRingA,
00282     eCharacterRightFootRingB,
00283     eCharacterRightFootRingC,
00284     eCharacterRightFootRingD,
00285     eCharacterRightInFootPinky,
00286     eCharacterRightFootPinkyA,
00287     eCharacterRightFootPinkyB,
00288     eCharacterRightFootPinkyC,
00289     eCharacterRightFootPinkyD,
00290     eCharacterRightInFootExtraFinger,
00291     eCharacterRightFootExtraFingerA,
00292     eCharacterRightFootExtraFingerB,
00293     eCharacterRightFootExtraFingerC,
00294     eCharacterRightFootExtraFingerD,
00295     eCharacterLeftCollarExtra,
00296     eCharacterRightCollarExtra,
00297 
00298     eCharacterLastNodeId
00299 } ECharacterNodeId;
00300 
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     // Tempo Bug #266854 >>>>>
00322     eCharacterGroup_FloorContact,
00323     // Tempo Bug #266854 <<<<<
00324 
00325     eLastCharacterGroupId
00326 } ECharacterGroupId;
00327 
00330 typedef enum 
00331 {
00332     eCharacterLink,
00333     eControlSetLink,
00334     eControlSetEffector,
00335     eControlSetEffectorAux
00336 } ECharacterLinkType;
00337 
00343 class KFBX_DLL KFbxCharacterLink
00344 {
00345 public:
00348     KFbxCharacterLink();
00351     KFbxCharacterLink(const KFbxCharacterLink& pCharacterLink);
00352     
00356     KFbxCharacterLink& operator=(const KFbxCharacterLink& pCharacterLink);
00357     
00360     void Reset();
00361 
00363     KFbxNode* mNode;
00364 
00367     KString mTemplateName;
00368 
00370     KFbxVector4 mOffsetT;
00372     KFbxVector4 mOffsetR;
00374     KFbxVector4 mOffsetS;
00376     KFbxVector4 mParentROffset;
00377 
00379     bool            mHasRotSpace;
00381     KFbxLimits  mRLimits;
00383     KFbxVector4 mPreRotation;
00385     KFbxVector4 mPostRotation;
00387     int                     mRotOrder;
00389     double          mAxisLen;
00390 
00391 
00393 //
00394 //  WARNING!
00395 //
00396 //      Anything beyond these lines may not be documented accurately and is 
00397 //      subject to change without notice.
00398 //
00400 #ifndef DOXYGEN_SHOULD_SKIP_THIS        
00401     KFbxProperty mPropertyLink;
00402     KFbxProperty mPropertyOffsetT;
00403     KFbxProperty mPropertyOffsetR;
00404     KFbxProperty mPropertyOffsetS;
00405     KFbxProperty mPropertyParentOffsetR;
00406     KFbxProperty mPropertyTemplateName;
00407 #endif // #ifndef DOXYGEN_SHOULD_SKIP_THIS
00408 };
00409 
00420 class KFBX_DLL KFbxCharacter : public KFbxConstraint
00421 {
00422         KFBXOBJECT_DECLARE(KFbxCharacter,KFbxConstraint);
00423 
00424 public:
00425 
00432         void Reset();
00433 
00438         void SetInput(ECharacterInputType pInputType, KFbxObject* pInputObject = NULL);
00439 
00441         ECharacterInputType GetInputType() const;
00442 
00448         KFbxObject* GetInputObject() const;
00449 
00457         bool SetCharacterLink(ECharacterNodeId pCharacterNodeId, const KFbxCharacterLink& pCharacterLink, bool pUpdateObjectList = true);
00458 
00464         bool GetCharacterLink(ECharacterNodeId pCharacterNodeId, KFbxCharacterLink* pCharacterLink = NULL) const;
00465 
00469         KFbxControlSet& GetControlSet() const;
00470 
00475         static int GetCharacterGroupCount(ECharacterGroupId pCharacterGroupId);
00476 
00482         static ECharacterNodeId GetCharacterGroupElementByIndex(ECharacterGroupId pCharacterGroupId, int pIndex);
00483 
00484     
00490         static char* GetCharacterGroupNameByIndex(ECharacterGroupId pCharacterGroupId, int pIndex);
00491 
00497         static int GetCharacterGroupVersionByIndex(ECharacterGroupId pCharacterGroupId, int pIndex);
00498 
00506         static bool FindCharacterGroupIndexByName(const char* pName, bool pForceGroupId, ECharacterGroupId& pCharacterGroupId, int& pIndex);
00507 
00515         static bool GetCharacterGroupIndexByElement(ECharacterNodeId pCharacterNodeId, ECharacterGroupId& pCharacterGroupId, int& pIndex);
00516 
00523         static bool GetCharacterGroupVersionByElement(ECharacterNodeId pCharacterNodeId, int& pVersion);
00524 
00532         static bool GetCharacterNodeNameFromNodeId(ECharacterNodeId pCharacterNodeId, char*& pName);
00533 
00539         static bool GetCharacterNodeIdFromNodeName(const char* pName, ECharacterNodeId& pCharacterNodeId);
00540 
00541         typedef enum 
00542         {
00543                 eINTERNAL_ERROR,
00544                 eERROR_COUNT
00545         } EError; 
00546         
00547         // KFbxCharacter Properties
00548         KFbxTypedProperty<fbxInteger1>                          PullIterationCount;
00549         KFbxTypedProperty<kCharacterPosture>                    Posture;
00550         KFbxTypedProperty<fbxBool1>                             ForceActorSpace;
00551         KFbxTypedProperty<fbxDouble1>                           ScaleCompensation;
00552         KFbxTypedProperty<kCharacterOffAutoUser>                ScaleCompensationMode;
00553         KFbxTypedProperty<fbxDouble1>                           HipsHeightCompensation;
00554         KFbxTypedProperty<kCharacterOffAutoUser>                HipsHeightCompensationMode;
00555         KFbxTypedProperty<fbxDouble1>                           AnkleHeightCompensation;
00556         KFbxTypedProperty<kCharacterOffAutoUser>                AnkleHeightCompensationMode;
00557         KFbxTypedProperty<fbxDouble1>                           AnkleProximityCompensation;
00558         KFbxTypedProperty<kCharacterOffAutoUser>                AnkleProximityCompensationMode;
00559         KFbxTypedProperty<fbxDouble1>                           MassCenterCompensation;
00560         KFbxTypedProperty<fbxBool1>                             ApplyLimits;
00561         KFbxTypedProperty<fbxDouble1>                           ChestReduction;
00562         KFbxTypedProperty<fbxDouble1>                           CollarReduction;
00563         KFbxTypedProperty<fbxDouble1>                           NeckReduction;
00564         KFbxTypedProperty<fbxDouble1>                           HeadReduction;
00565         KFbxTypedProperty<fbxDouble1>                           ReachActorLeftAnkle;
00566         KFbxTypedProperty<fbxDouble1>                           ReachActorRightAnkle;
00567         KFbxTypedProperty<fbxDouble1>                           ReachActorLeftKnee;
00568         KFbxTypedProperty<fbxDouble1>                           ReachActorRightKnee;
00569         KFbxTypedProperty<fbxDouble1>                           ReachActorChest;
00570         KFbxTypedProperty<fbxDouble1>                           ReachActorHead;
00571         KFbxTypedProperty<fbxDouble1>                           ReachActorLeftWrist;
00572         KFbxTypedProperty<fbxDouble1>                           ReachActorRightWrist;
00573         KFbxTypedProperty<fbxDouble1>                           ReachActorLeftElbow;
00574         KFbxTypedProperty<fbxDouble1>                           ReachActorRightElbow;
00575         KFbxTypedProperty<fbxDouble1>                           ReachActorLeftFingerBase;
00576         KFbxTypedProperty<fbxDouble1>                           ReachActorRightFingerBase;
00577         KFbxTypedProperty<fbxDouble1>                           ReachActorLeftToesBase;
00578         KFbxTypedProperty<fbxDouble1>                           ReachActorRightToesBase;
00579         KFbxTypedProperty<fbxDouble1>                           ReachActorLeftFingerBaseRotation;
00580         KFbxTypedProperty<fbxDouble1>                           ReachActorRightFingerBaseRotation;
00581         KFbxTypedProperty<fbxDouble1>                           ReachActorLeftToesBaseRotation;
00582         KFbxTypedProperty<fbxDouble1>                           ReachActorRightToesBaseRotation;
00583         KFbxTypedProperty<fbxDouble1>                           ReachActorLeftAnkleRotation;
00584         KFbxTypedProperty<fbxDouble1>                           ReachActorRightAnkleRotation;
00585         KFbxTypedProperty<fbxDouble1>                           ReachActorHeadRotation;
00586         KFbxTypedProperty<fbxDouble1>                           ReachActorLeftWristRotation;
00587         KFbxTypedProperty<fbxDouble1>                           ReachActorRightWristRotation;
00588         KFbxTypedProperty<fbxDouble1>                           ReachActorChestRotation;
00589         KFbxTypedProperty<fbxDouble1>                           ReachActorLowerChestRotation;
00590         KFbxTypedProperty<fbxDouble3>                           HipsTOffset;
00591         KFbxTypedProperty<fbxDouble3>                           ChestTOffset;
00592         KFbxTypedProperty<kCharacterRollExtractionMode>         RollExtractionMode;
00593         KFbxTypedProperty<fbxDouble1>                           LeftUpLegRoll;
00594         KFbxTypedProperty<fbxBool1>                             LeftUpLegRollMode;
00595         KFbxTypedProperty<fbxDouble1>                           LeftLegRoll;
00596         KFbxTypedProperty<fbxBool1>                             LeftLegRollMode;
00597         KFbxTypedProperty<fbxDouble1>                           RightUpLegRoll;
00598         KFbxTypedProperty<fbxBool1>                             RightUpLegRollMode;
00599         KFbxTypedProperty<fbxDouble1>                           RightLegRoll;
00600         KFbxTypedProperty<fbxBool1>                             RightLegRollMode;
00601         KFbxTypedProperty<fbxDouble1>                           LeftArmRoll;
00602         KFbxTypedProperty<fbxBool1>                             LeftArmRollMode;
00603         KFbxTypedProperty<fbxDouble1>                           LeftForeArmRoll;
00604         KFbxTypedProperty<fbxBool1>                             LeftForeArmRollMode;
00605         KFbxTypedProperty<fbxDouble1>                           RightArmRoll;
00606         KFbxTypedProperty<fbxBool1>                             RightArmRollMode;
00607         KFbxTypedProperty<fbxDouble1>                           RightForeArmRoll;
00608         KFbxTypedProperty<fbxBool1>                             RightForeArmRollMode;
00609         KFbxTypedProperty<kCharacterContactBehaviour>           ContactBehaviour;
00610         KFbxTypedProperty<fbxBool1>                             FootFloorContact;
00611         KFbxTypedProperty<fbxBool1>                             FootAutomaticToes;
00612         KFbxTypedProperty<kCharacterFloorPivot>                 FootFloorPivot;
00613         KFbxTypedProperty<fbxDouble1>                           FootBottomToAnkle;
00614         KFbxTypedProperty<fbxDouble1>                           FootBackToAnkle;
00615         KFbxTypedProperty<fbxDouble1>                           FootMiddleToAnkle;
00616         KFbxTypedProperty<fbxDouble1>                           FootFrontToMiddle;
00617         KFbxTypedProperty<fbxDouble1>                           FootInToAnkle;
00618         KFbxTypedProperty<fbxDouble1>                           FootOutToAnkle;
00619         KFbxTypedProperty<fbxDouble1>                           FootContactSize;
00620         KFbxTypedProperty<fbxBool1>                             FootFingerContact;
00621         KFbxTypedProperty<kCharacterFootContactType>            FootContactType;
00622         KFbxTypedProperty<kCharacterFingerContactMode>          FootFingerContactMode;
00623         KFbxTypedProperty<fbxDouble1>                           FootContactStiffness;
00624         KFbxTypedProperty<fbxDouble1>                           FootFingerContactRollStiffness;
00625         KFbxTypedProperty<fbxBool1>                             HandFloorContact;
00626         KFbxTypedProperty<fbxBool1>                             HandAutomaticFingers;
00627         KFbxTypedProperty<kCharacterFloorPivot>                 HandFloorPivot;
00628         KFbxTypedProperty<fbxDouble1>                           HandBottomToWrist;
00629         KFbxTypedProperty<fbxDouble1>                           HandBackToWrist;
00630         KFbxTypedProperty<fbxDouble1>                           HandMiddleToWrist;
00631         KFbxTypedProperty<fbxDouble1>                           HandFrontToMiddle;
00632         KFbxTypedProperty<fbxDouble1>                           HandInToWrist;
00633         KFbxTypedProperty<fbxDouble1>                           HandOutToWrist;
00634         KFbxTypedProperty<fbxDouble1>                           HandContactSize;
00635         KFbxTypedProperty<fbxBool1>                             HandFingerContact;
00636         KFbxTypedProperty<kCharacterHandContactType>            HandContactType;
00637         KFbxTypedProperty<kCharacterFingerContactMode>          HandFingerContactMode;
00638         KFbxTypedProperty<fbxDouble1>                           HandContactStiffness;
00639         KFbxTypedProperty<fbxDouble1>                           HandFingerContactRollStiffness;
00640         KFbxTypedProperty<fbxDouble1>                           LeftHandThumbTip;
00641         KFbxTypedProperty<fbxDouble1>                           LeftHandIndexTip;
00642         KFbxTypedProperty<fbxDouble1>                           LeftHandMiddleTip;
00643         KFbxTypedProperty<fbxDouble1>                           LeftHandRingTip;
00644         KFbxTypedProperty<fbxDouble1>                           LeftHandPinkyTip;
00645         KFbxTypedProperty<fbxDouble1>                           LeftHandExtraFingerTip;
00646         KFbxTypedProperty<fbxDouble1>                           RightHandThumbTip;
00647         KFbxTypedProperty<fbxDouble1>                           RightHandIndexTip;
00648         KFbxTypedProperty<fbxDouble1>                           RightHandMiddleTip;
00649         KFbxTypedProperty<fbxDouble1>                           RightHandRingTip;
00650         KFbxTypedProperty<fbxDouble1>                           RightHandPinkyTip;
00651         KFbxTypedProperty<fbxDouble1>                           RightHandExtraFingerTip;
00652         KFbxTypedProperty<fbxDouble1>                           LeftFootThumbTip;
00653         KFbxTypedProperty<fbxDouble1>                           LeftFootIndexTip;
00654         KFbxTypedProperty<fbxDouble1>                           LeftFootMiddleTip;
00655         KFbxTypedProperty<fbxDouble1>                           LeftFootRingTip;
00656         KFbxTypedProperty<fbxDouble1>                           LeftFootPinkyTip;
00657         KFbxTypedProperty<fbxDouble1>                           LeftFootExtraFingerTip;
00658         KFbxTypedProperty<fbxDouble1>                           RightFootThumbTip;
00659         KFbxTypedProperty<fbxDouble1>                           RightFootIndexTip;
00660         KFbxTypedProperty<fbxDouble1>                           RightFootMiddleTip;
00661         KFbxTypedProperty<fbxDouble1>                           RightFootRingTip;
00662         KFbxTypedProperty<fbxDouble1>                           RightFootPinkyTip;
00663         KFbxTypedProperty<fbxDouble1>                           RightFootExtraFingerTip;
00664         KFbxTypedProperty<fbxBool1>                             FingerSolving;
00665         KFbxTypedProperty<fbxDouble1>                           CtrlPullLeftToeBase;
00666         KFbxTypedProperty<fbxDouble1>                           CtrlPullLeftFoot;
00667         KFbxTypedProperty<fbxDouble1>                           CtrlPullLeftKnee;
00668         KFbxTypedProperty<fbxDouble1>                           CtrlPullRightToeBase;
00669         KFbxTypedProperty<fbxDouble1>                           CtrlPullRightFoot;
00670         KFbxTypedProperty<fbxDouble1>                           CtrlPullRightKnee;
00671         KFbxTypedProperty<fbxDouble1>                           CtrlPullLeftFingerBase;
00672         KFbxTypedProperty<fbxDouble1>                           CtrlPullLeftHand;
00673         KFbxTypedProperty<fbxDouble1>                           CtrlPullLeftElbow;
00674         KFbxTypedProperty<fbxDouble1>                           CtrlPullRightFingerBase;
00675         KFbxTypedProperty<fbxDouble1>                           CtrlPullRightHand;
00676         KFbxTypedProperty<fbxDouble1>                           CtrlPullRightElbow;
00677         KFbxTypedProperty<fbxDouble1>                           CtrlChestPullLeftHand;
00678         KFbxTypedProperty<fbxDouble1>                           CtrlChestPullRightHand;
00679         KFbxTypedProperty<fbxDouble1>                           CtrlPullHead;
00680         KFbxTypedProperty<fbxDouble1>                           CtrlResistHipsPosition;
00681         KFbxTypedProperty<fbxDouble1>                           CtrlEnforceGravity;
00682         KFbxTypedProperty<fbxDouble1>                           CtrlResistHipsOrientation;
00683         KFbxTypedProperty<fbxDouble1>                           CtrlResistChestPosition;
00684         KFbxTypedProperty<fbxDouble1>                           CtrlResistChestOrientation;
00685         KFbxTypedProperty<fbxDouble1>                           CtrlResistLeftCollar;
00686         KFbxTypedProperty<fbxDouble1>                           CtrlResistRightCollar;
00687         KFbxTypedProperty<fbxDouble1>                           CtrlResistLeftKnee;
00688         KFbxTypedProperty<fbxDouble1>                           CtrlResistMaximumExtensionLeftKnee;
00689         KFbxTypedProperty<fbxDouble1>                           CtrlResistCompressionFactorLeftKnee;
00690         KFbxTypedProperty<fbxDouble1>                           CtrlResistRightKnee;
00691         KFbxTypedProperty<fbxDouble1>                           CtrlResistMaximumExtensionRightKnee;
00692         KFbxTypedProperty<fbxDouble1>                           CtrlResistCompressionFactorRightKnee;
00693         KFbxTypedProperty<fbxDouble1>                           CtrlResistLeftElbow;
00694         KFbxTypedProperty<fbxDouble1>                           CtrlResistMaximumExtensionLeftElbow;
00695         KFbxTypedProperty<fbxDouble1>                           CtrlResistCompressionFactorLeftElbow;
00696         KFbxTypedProperty<fbxDouble1>                           CtrlResistRightElbow;
00697         KFbxTypedProperty<fbxDouble1>                           CtrlResistMaximumExtensionRightElbow;
00698         KFbxTypedProperty<fbxDouble1>                           CtrlResistCompressionFactorRightElbow;
00699         KFbxTypedProperty<fbxDouble1>                           CtrlSpineStiffness;
00700         KFbxTypedProperty<fbxDouble1>                           CtrlNeckStiffness;
00701         KFbxTypedProperty<fbxBool1>                             MirrorMode;
00702         KFbxTypedProperty<fbxDouble1>                           ShoulderCorrection;
00703         KFbxTypedProperty<fbxBool1>                             LeftKneeKillPitch;
00704         KFbxTypedProperty<fbxBool1>                             RightKneeKillPitch;
00705         KFbxTypedProperty<fbxBool1>                             LeftElbowKillPitch;
00706         KFbxTypedProperty<fbxBool1>                             RightElbowKillPitch;
00707         KFbxTypedProperty<kCharacterHipsTranslationMode>        HipsTranslationMode;
00708         KFbxTypedProperty<fbxBool1>                             WriteReference;
00709         KFbxTypedProperty<fbxBool1>                             SyncMode;
00710         KFbxTypedProperty<fbxDouble1>                           Damping;
00711         KFbxTypedProperty<fbxDouble1>                           OrientationDamping;
00712         KFbxTypedProperty<kCharacterOffAutoUser>                OrientationDampingMode;
00713         KFbxTypedProperty<fbxDouble1>                           DisplacementDamping;
00714         KFbxTypedProperty<kCharacterOffAutoUser>                DisplacementDampingMode;
00715         KFbxTypedProperty<fbxDouble1>                           DisplacementMemory;
00716         KFbxTypedProperty<kCharacterAutoUser>                   DisplacementMemoryMode;
00717         KFbxTypedProperty<fbxDouble1>                           HipsDisplacementDamping;
00718         KFbxTypedProperty<kCharacterAutoUser>                   HipsDisplacementDampingMode;
00719         KFbxTypedProperty<fbxDouble1>                           AnkleDisplacementDamping;
00720         KFbxTypedProperty<kCharacterAutoUser>                   AnkleDisplacementDampingMode;
00721         KFbxTypedProperty<fbxDouble1>                           WristDisplacementDamping;
00722         KFbxTypedProperty<kCharacterAutoUser>                   WristDisplacementDampingMode;
00723         KFbxTypedProperty<fbxDouble1>                           Stabilization;
00724         KFbxTypedProperty<fbxDouble1>                           AnkleStabilizationTime;
00725         KFbxTypedProperty<kCharacterAutoUser>                   AnkleStabilizationTimeMode;
00726         KFbxTypedProperty<fbxDouble1>                           AnkleStabilizationPerimeter;
00727         KFbxTypedProperty<kCharacterAutoUser>                   AnkleStabilizationPerimeterMode;
00728         KFbxTypedProperty<fbxDouble1>                           AnkleStabilizationAngularPerimeter;
00729         KFbxTypedProperty<kCharacterOffAutoUser>                AnkleStabilizationAngularPerimeterMode;
00730         KFbxTypedProperty<fbxDouble1>                           AnkleStabilizationFloorProximity;
00731         KFbxTypedProperty<kCharacterOffAutoUser>                AnkleStabilizationFloorProximityMode;
00732         KFbxTypedProperty<fbxDouble1>                           AnkleStabilizationDamping;
00733         KFbxTypedProperty<kCharacterOffAutoUser>                AnkleStabilizationDampingMode;
00734         KFbxTypedProperty<fbxDouble1>                           AnkleStabilizationRecoveryTime;
00735         KFbxTypedProperty<kCharacterOffAutoUser>                AnkleStabilizationRecoveryTimeMode;
00736 
00737     KFbxTypedProperty<fbxReference*>                    SourceObject;
00738     KFbxTypedProperty<fbxReference*>                    DestinationObject;
00739     KFbxTypedProperty<fbxReference*>                    Actor;
00740     KFbxTypedProperty<fbxReference*>                    Character;
00741     KFbxTypedProperty<fbxReference*>                    ControlSet;
00742 
00743     KFbxTypedProperty<fbxDouble1>                          HikVersion;
00744     KFbxTypedProperty<fbxBool1>                            Characterize;
00745     KFbxTypedProperty<fbxBool1>                            LockXForm;
00746     KFbxTypedProperty<fbxBool1>                            LockPick;
00747     
00749 //
00750 //  WARNING!
00751 //
00752 //      Anything beyond these lines may not be documented accurately and is 
00753 //      subject to change without notice.
00754 //
00756 
00757 #ifndef DOXYGEN_SHOULD_SKIP_THIS        
00758 
00759         virtual KFbxObject& Copy(const KFbxObject& pObject);
00760 
00761         KFbxCharacter(KFbxSdkManager& pManager, char const* pName);
00762 
00763         virtual void Construct(const KFbxCharacter* pFrom);
00764         virtual void Destruct(bool pRecursive, bool pDependents);
00765 
00766         virtual EConstraintType GetConstraintType() const;
00767 
00768         virtual KStringList     GetTypeFlags() const;
00769 
00770         virtual bool    ConnecNotify (KFbxConnectEvent const &pEvent);
00771 
00772         // Used when bridging to HumanIK Middleware
00773         const void GetKFbxCharacterPropertyFromHIKProperty(     char* &pKFbxCharacterPropertyName, 
00774                                                                 char* &pKFbxCharacterPropertyModeName,  
00775                                                                 kCharacterPropertyUnit &pUnit,
00776                                                                 int &pPropertyIndex,
00777                                                                 const char* pHIKPropertyName) const;
00778         
00779         const void GetHIKPropertyFromKFbxCharacterProperty(     char* &pHIKPropertyName,                                                                                                                
00780                                                                 kCharacterPropertyUnit &pUnit,
00781                                                                 const char* pKFbxCharacterPropertyName) const ;
00782 
00783         const void GetPropertyInfo(     char* &pKFbxCharacterPropertyName, 
00784                                                                 char* &pKFbxCharacterPropertyModeName,  
00785                                                                 kCharacterPropertyUnit &pUnit,
00786                                                                 int &pPropertyIndex,
00787                                                                 char* &pHIKPropertyName,
00788                                                                 int pIndex) const;
00789         int GetPropertyInfoCount();
00790 
00791         KError                  mError;
00792 
00793         KString                 mName;  
00794         KFbxCharacterLink       mCharacterLink[eCharacterLastNodeId];
00795         KFbxControlSet*         mControlSet;
00796         
00797         friend class KFbxScene;
00798         friend class KFbxNode;
00799 
00800 #endif // #ifndef DOXYGEN_SHOULD_SKIP_THIS
00801 
00802 protected:
00803         
00804 };
00805 
00806 typedef KFbxCharacter* HKFbxCharacter;
00807 
00808 inline EFbxType FbxTypeOf( kCharacterOffAutoUser const &pItem )             { return eENUM; }
00809 inline EFbxType FbxTypeOf( kCharacterAutoUser const &pItem )                { return eENUM; }
00810 inline EFbxType FbxTypeOf( kCharacterPosture const &pItem )                 { return eENUM; }
00811 inline EFbxType FbxTypeOf( kCharacterFloorPivot const &pItem )              { return eENUM; }
00812 inline EFbxType FbxTypeOf( kCharacterRollExtractionMode const &pItem )      { return eENUM; }
00813 inline EFbxType FbxTypeOf( kCharacterHipsTranslationMode const &pItem )     { return eENUM; }
00814 inline EFbxType FbxTypeOf( kCharacterFootContactType const &pItem )         { return eENUM; }
00815 inline EFbxType FbxTypeOf( kCharacterHandContactType const &pItem )         { return eENUM; }
00816 inline EFbxType FbxTypeOf( kCharacterFingerContactMode const &pItem )       { return eENUM; }
00817 inline EFbxType FbxTypeOf( kCharacterContactBehaviour const &pItem )        { return eENUM; }
00818 
00819 #include <fbxfilesdk/fbxfilesdk_nsend.h>
00820 
00821 #endif // FBXFILESDK_KFBXCHARACTER_KFBXCHARACTER_H
00822