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