kfbxnode.h

Go to the documentation of this file.
00001 /****************************************************************************************
00002 
00003    Copyright (C) 2010 Autodesk, Inc.
00004    All rights reserved.
00005 
00006    Use of this software is subject to the terms of the Autodesk license agreement
00007    provided at the time of installation or download, or which otherwise accompanies
00008    this software in either electronic or hard copy form.
00009 
00010 ****************************************************************************************/
00011 
00014 #ifndef FBXFILESDK_KFBXPLUGINS_KFBXNODE_H
00015 #define FBXFILESDK_KFBXPLUGINS_KFBXNODE_H
00016 
00017 #include <fbxfilesdk/fbxfilesdk_def.h>
00018 
00019 #include <fbxfilesdk/kfbxplugins/kfbxobject.h>
00020 #include <fbxfilesdk/kfbxplugins/kfbxnodelimits.h>
00021 #include <fbxfilesdk/kfbxplugins/kfbxgroupname.h>
00022 
00023 #include <fbxfilesdk/kfbxmath/kfbxtransformation.h>
00024 #include <fbxfilesdk/kfbxmath/kfbxvector4.h>
00025 #include <fbxfilesdk/kfbxmath/kfbxmatrix.h>
00026 #include <fbxfilesdk/kfbxmath/kfbxxmatrix.h>
00027 
00028 #include <fbxfilesdk/components/kbaselib/klib/karrayul.h>
00029 #include <fbxfilesdk/components/kbaselib/klib/kerror.h>
00030 #include <fbxfilesdk/components/kbaselib/klib/kstring.h>
00031 #include <fbxfilesdk/components/kbaselib/klib/ktime.h>
00032 
00033 #include <fbxfilesdk/fbxfilesdk_nsbegin.h>
00034 
00035     class KFbxNodeAttribute;
00036     class KFbxScene;
00037     class KFbxAnimStack;
00038     class KFbxAnimLayer;
00039     class KFbxSdkManager;
00040     class KFbxCachedEffect;
00041     class KFbxLodGroup;
00042     class KFbxNull;
00043     class KFbxMarker;
00044     class KFbxSkeleton;
00045     class KFbxGeometry;
00046     class KFbxMesh;
00047     class KFbxNurb;
00048     class KFbxNurbsCurve;
00049     class KFbxLine;
00050     class KFbxNurbsSurface;
00051     class KFbxTrimNurbsSurface;
00052     class KFbxPatch;
00053     class KFbxCamera;
00054     class KFbxCameraStereo;
00055     class KFbxCameraSwitcher;
00056     class KFbxLight;
00057     class KFbxOpticalReference;
00058     class KFbxCharacter;
00059     class KFbxNode_internal;
00060     class KFbxSurfaceMaterial;
00061     class KFbxSubdiv;
00062     class KFbxNodeEvalState;
00063     class KMBTransform;
00064 
00088     class KFBX_DLL KFbxNode : public KFbxObject
00089     {
00090         KFBXOBJECT_DECLARE(KFbxNode,KFbxObject);
00091         public:
00096 
00100             KFbxNode* GetParent();
00101             KFbxNode const* GetParent() const;
00102 
00110             bool AddChild(KFbxNode* pNode);
00111 
00116             KFbxNode* RemoveChild(KFbxNode* pNode);
00117 
00122             int GetChildCount(bool pRecursive = false) const;
00123 
00128             KFbxNode* GetChild(int pIndex);
00129 
00134             KFbxNode const* GetChild(int pIndex) const;
00135 
00143             KFbxNode* FindChild(char const* pName, bool pRecursive = true, bool pInitial = false);
00144 
00146 
00171 
00175             void SetTarget(KFbxNode* pNode);
00176 
00180             KFbxNode* GetTarget() const;
00181 
00185             void SetPostTargetRotation(KFbxVector4 pVector);
00186 
00190             KFbxVector4 GetPostTargetRotation() const;
00191 
00195             void SetTargetUp(KFbxNode* pNode);
00196 
00200             KFbxNode* GetTargetUp() const;
00201 
00205             void SetTargetUpVector(KFbxVector4 pVector);
00206 
00210             KFbxVector4 GetTargetUpVector() const;
00211 
00213 
00214 
00219         public:
00220             virtual kFbxUpdateId GetUpdateId(eFbxUpdateIdType pUpdateId=eUpdateId_Object) const;
00222 
00242             K_DEPRECATED void SetDefaultVisibility(double pVisibility);
00243 
00258             void SetVisibility(bool pIsVisible);
00259 
00272             K_DEPRECATED double GetDefaultVisibility() const;
00273 
00279             bool GetVisibility() const;
00280 
00287             typedef enum
00288             {
00289                 eHARD_SHADING,              
00290                 eWIRE_FRAME,                
00291                 eFLAT_SHADING,              
00292                 eLIGHT_SHADING,             
00293                 eTEXTURE_SHADING,           
00294                 eLIGHT_TEXTURE_SHADING      
00295             } EShadingMode;
00296 
00300             void SetShadingMode(EShadingMode pShadingMode);
00301 
00305             EShadingMode GetShadingMode() const;
00306 
00308 
00313 
00323             KFbxNodeAttribute* SetNodeAttribute(KFbxNodeAttribute* pNodeAttribute);
00324 
00330             KFbxNodeAttribute* GetNodeAttribute();
00331 
00337             KFbxNodeAttribute const* GetNodeAttribute() const;
00338 
00340             int GetNodeAttributeCount() const;
00341 
00346             int GetDefaultNodeAttributeIndex() const;
00347 
00354             bool SetDefaultNodeAttributeIndex(int pIndex);
00355 
00361             KFbxNodeAttribute* GetNodeAttributeByIndex(int pIndex);
00362 
00368             KFbxNodeAttribute const* GetNodeAttributeByIndex(int pIndex) const;
00369 
00378             int GetNodeAttributeIndex(KFbxNodeAttribute* pNodeAttribute) const;
00379 
00390             bool AddNodeAttribute(KFbxNodeAttribute* pNodeAttribute);
00391 
00397             KFbxNodeAttribute* RemoveNodeAttribute(KFbxNodeAttribute* pNodeAttribute);
00398 
00407             KFbxNodeAttribute* RemoveNodeAttributeByIndex(int pIndex);
00408 
00414             KFbxCachedEffect* GetCachedEffect();
00415 
00421             KFbxLodGroup* GetLodGroup();
00422 
00428             KFbxNull* GetNull();
00429 
00435             KFbxMarker* GetMarker();
00436 
00442             KFbxSkeleton* GetSkeleton();
00443 
00460             KFbxGeometry* GetGeometry();
00461 
00470             KFbxMesh* GetMesh();
00471 
00480             KFbxNurb* GetNurb();
00481 
00490             KFbxNurbsSurface* GetNurbsSurface();
00491 
00500             KFbxNurbsCurve* GetNurbsCurve();
00501 
00510             KFbxLine* GetLine();
00511 
00520             KFbxTrimNurbsSurface* GetTrimNurbsSurface();
00521 
00530             KFbxSubdiv* GetSubdiv();
00531 
00540             KFbxPatch* GetPatch();
00541 
00547             KFbxCamera* GetCamera();
00548             const KFbxCamera* GetCamera() const;
00549 
00555             KFbxCameraStereo* GetCameraStereo();
00556 
00562             KFbxCameraSwitcher* GetCameraSwitcher();
00563 
00569             KFbxLight* GetLight();
00570             const KFbxLight * GetLight() const;
00571 
00577             KFbxOpticalReference* GetOpticalReference();
00579 
00593             void SetTransformationInheritType(ETransformInheritType pInheritType);
00594 
00596             void GetTransformationInheritType(ETransformInheritType& pInheritType) const;
00598 
00716 
00719             typedef enum
00720             {
00721                 eSOURCE_SET,            
00722                 eDESTINATION_SET        
00723             } EPivotSet;
00724 
00727             typedef enum
00728             {
00729                 ePIVOT_STATE_ACTIVE,        
00731                 ePIVOT_STATE_REFERENCE      
00734             } EPivotState;
00735 
00740             void SetPivotState(EPivotSet pPivotSet, EPivotState pPivotState);
00741 
00748             void GetPivotState(EPivotSet pPivotSet, EPivotState& pPivotState) const;
00749 
00755             void SetRotationOrder(EPivotSet pPivotSet, ERotationOrder pRotationOrder);
00756 
00761             void GetRotationOrder(EPivotSet pPivotSet, ERotationOrder& pRotationOrder) const;
00762 
00772             void SetUseRotationSpaceForLimitOnly(EPivotSet pPivotSet, bool pUseForLimitOnly);
00773 
00778             bool GetUseRotationSpaceForLimitOnly(EPivotSet pPivotSet) const;
00779 
00785             void SetRotationActive(bool pVal);
00786 
00790             bool GetRotationActive() const;
00791 
00798             void SetQuaternionInterpolation(EPivotSet pPivotSet, EQuaternionInterpolation pQuatIterp);
00799 
00804             EQuaternionInterpolation GetQuaternionInterpolation(EPivotSet pPivotSet) const;
00805 
00814             K_DEPRECATED void SetUseQuaternionForInterpolation(EPivotSet pPivotSet, bool pUseQuaternion);
00815 
00824             K_DEPRECATED bool GetUseQuaternionForInterpolation(EPivotSet pPivotSet) const;
00825 
00834             void SetRotationStiffness(KFbxVector4 pRotationStiffness);
00835 
00839             KFbxVector4 GetRotationStiffness() const;
00840 
00849             void SetMinDampRange(KFbxVector4 pMinDampRange);
00850 
00854             KFbxVector4 GetMinDampRange() const;
00855 
00856 
00865             void SetMaxDampRange(KFbxVector4 pMaxDampRange);
00866 
00870             KFbxVector4 GetMaxDampRange() const;
00871 
00872 
00881             void SetMinDampStrength(KFbxVector4 pMinDampStrength);
00882 
00886             KFbxVector4 GetMinDampStrength() const;
00887 
00888 
00897             void SetMaxDampStrength(KFbxVector4 pMaxDampStrength);
00898 
00902             KFbxVector4 GetMaxDampStrength() const;
00903 
00909             void SetPreferedAngle(KFbxVector4 pPreferedAngle);
00910 
00914             KFbxVector4 GetPreferedAngle() const;
00915 
00921             void SetRotationOffset(EPivotSet pPivotSet, KFbxVector4 pVector);
00922 
00928             const KFbxVector4& GetRotationOffset(EPivotSet pPivotSet) const;
00929 
00936             void SetRotationPivot(EPivotSet pPivotSet, KFbxVector4 pVector);
00937 
00944             const KFbxVector4& GetRotationPivot(EPivotSet pPivotSet) const;
00945 
00952             void SetPreRotation(EPivotSet pPivotSet, KFbxVector4 pVector);
00953 
00960             const KFbxVector4& GetPreRotation(EPivotSet pPivotSet) const;
00961 
00968             void SetPostRotation(EPivotSet pPivotSet, KFbxVector4 pVector);
00969 
00976             const KFbxVector4& GetPostRotation(EPivotSet pPivotSet) const;
00977 
00983             void SetScalingOffset(EPivotSet pPivotSet, KFbxVector4 pVector);
00984 
00990             const KFbxVector4& GetScalingOffset(EPivotSet pPivotSet) const;
00991 
00998             void SetScalingPivot(EPivotSet pPivotSet, KFbxVector4 pVector);
00999 
01006             const KFbxVector4& GetScalingPivot(EPivotSet pPivotSet) const;
01007 
01016             void SetGeometricTranslation(EPivotSet pPivotSet, KFbxVector4 pVector);
01017 
01022             KFbxVector4 GetGeometricTranslation(EPivotSet pPivotSet) const;
01023 
01032             void SetGeometricRotation(EPivotSet pPivotSet, KFbxVector4 pVector);
01033 
01038             KFbxVector4 GetGeometricRotation(EPivotSet pPivotSet) const;
01039 
01048             void SetGeometricScaling(EPivotSet pPivotSet, KFbxVector4 pVector);
01049 
01054             KFbxVector4 GetGeometricScaling(EPivotSet pPivotSet) const;
01055 
01062             void ResetPivotSet( KFbxNode::EPivotSet pPivotSet );
01063 
01086             void ConvertPivotAnimation(EPivotSet pConversionTarget, double pFrameRate, bool pKeyReduce=true);
01087             
01110             void ConvertPivotAnimationRecursive(const char * pAnimStackName,
01111                 EPivotSet pConversionTarget, double pFrameRate, bool pKeyReduce=true);
01112 
01125             void ResetPivotSetAndConvertAnimation( double pFrameRate=30., bool pKeyReduce=false, bool pToNodeCenter=true, bool pForceResetLimits = false );
01126 
01130             void SetRotationPivotAsCenterRecursive(KFbxVector4 pParentGeometricOffset = KFbxVector4());
01132 
01144             KFbxXMatrix& EvaluateGlobalTransform(KTime pTime=KTIME_INFINITE, KFbxNode::EPivotSet pPivotSet=KFbxNode::eSOURCE_SET, bool pApplyTarget=false, bool pForceEval=false);
01145 
01157             KFbxXMatrix& EvaluateLocalTransform(KTime pTime=KTIME_INFINITE, KFbxNode::EPivotSet pPivotSet=KFbxNode::eSOURCE_SET, bool pApplyTarget=false, bool pForceEval=false);
01158 
01168             KFbxVector4& EvaluateLocalTranslation(KTime pTime=KTIME_INFINITE, KFbxNode::EPivotSet pPivotSet=KFbxNode::eSOURCE_SET, bool pApplyTarget=false, bool pForceEval=false);
01169 
01180             KFbxVector4& EvaluateLocalRotation(KTime pTime=KTIME_INFINITE, KFbxNode::EPivotSet pPivotSet=KFbxNode::eSOURCE_SET, bool pApplyTarget=false, bool pForceEval=false);
01181 
01191             KFbxVector4& EvaluateLocalScaling(KTime pTime=KTIME_INFINITE, KFbxNode::EPivotSet pPivotSet=KFbxNode::eSOURCE_SET, bool pApplyTarget=false, bool pForceEval=false);
01193 
01194 
01199 
01203             int GetCharacterLinkCount() const;
01204 
01217             bool GetCharacterLink(int pIndex, KFbxCharacter** pCharacter, int* pCharacterLinkType, int* pNodeId, int *pNodeSubId);
01218 
01230             int FindCharacterLink(KFbxCharacter* pCharacter, int pCharacterLinkType, int pNodeId, int pNodeSubId) const;
01232 
01255         K_DEPRECATED virtual bool GetAnimationInterval(KTime& pStart, KTime& pStop, KFbxAnimStack* pAnimStack = NULL, int pAnimLayerId = 0);
01256 
01275         virtual bool GetAnimationInterval(KTimeSpan& pSpan, KFbxAnimStack* pAnimStack = NULL, int pAnimLayerId = 0);
01276 
01277 
01282 
01287             int AddMaterial( KFbxSurfaceMaterial* pMaterial );
01288 
01293             bool RemoveMaterial( KFbxSurfaceMaterial* pMaterial );
01294 
01298             int GetMaterialCount() const;
01299 
01304             KFbxSurfaceMaterial* GetMaterial( int pIndex ) const;
01305 
01308             void RemoveAllMaterials();
01309 
01315             int GetMaterialIndex( char const* pName ) const;
01316 
01318 
01324 
01328             KError& GetError();
01329 
01332             typedef enum
01333             {
01334                 eINDEX_OUT_OF_RANGE,        
01335                 eATTRIBUTE_NOT_CONNECTED,   
01336                 eERROR_COUNT
01337             } EError;
01338 
01342             EError GetLastErrorID() const;
01343 
01347             const char* GetLastErrorString() const;
01348 
01350 
01351 
01356 
01364             KFbxTypedProperty<fbxDouble3>               LclTranslation;
01365 
01373             KFbxTypedProperty<fbxDouble3>               LclRotation;
01374 
01382             KFbxTypedProperty<fbxDouble3>               LclScaling;
01383 
01402             KFbxTypedProperty<fbxDouble1>               Visibility;
01403 
01421             KFbxTypedProperty<fbxBool1>                 VisibilityInheritance;
01422 
01423 
01431             KFbxTypedProperty<EQuaternionInterpolation>  QuaternionInterpolate;
01432 
01440             KFbxTypedProperty<fbxDouble3>               RotationOffset;
01441 
01449             KFbxTypedProperty<fbxDouble3>               RotationPivot;
01450  
01458             KFbxTypedProperty<fbxDouble3>               ScalingOffset;
01459 
01467             KFbxTypedProperty<fbxDouble3>               ScalingPivot;
01468 
01476             KFbxTypedProperty<fbxBool1>                 TranslationActive;
01477 
01484             KFbxTypedProperty<fbxDouble3>               Translation;
01485 
01493             KFbxTypedProperty<fbxDouble3>               TranslationMin;
01494 
01502             KFbxTypedProperty<fbxDouble3>               TranslationMax;
01503 
01511             KFbxTypedProperty<fbxBool1>                 TranslationMinX;
01512 
01520             KFbxTypedProperty<fbxBool1>                 TranslationMinY;
01521 
01529             KFbxTypedProperty<fbxBool1>                 TranslationMinZ;
01530 
01538             KFbxTypedProperty<fbxBool1>                 TranslationMaxX;
01539 
01547             KFbxTypedProperty<fbxBool1>                 TranslationMaxY;
01548 
01556             KFbxTypedProperty<fbxBool1>                 TranslationMaxZ;
01557 
01565             KFbxTypedProperty<ERotationOrder>           RotationOrder;
01566 
01574             KFbxTypedProperty<fbxBool1>                 RotationSpaceForLimitOnly;
01575 
01583             KFbxTypedProperty<fbxDouble1>               RotationStiffnessX;
01584 
01592             KFbxTypedProperty<fbxDouble1>               RotationStiffnessY;
01593 
01601             KFbxTypedProperty<fbxDouble1>               RotationStiffnessZ;
01602 
01610             KFbxTypedProperty<fbxDouble1>               AxisLen;
01611          
01619             KFbxTypedProperty<fbxDouble3>               PreRotation;
01620 
01628             KFbxTypedProperty<fbxDouble3>               PostRotation;
01629 
01637             KFbxTypedProperty<fbxBool1>                 RotationActive;
01638 
01646             KFbxTypedProperty<fbxDouble3>               RotationMin;
01647 
01655             KFbxTypedProperty<fbxDouble3>               RotationMax;
01656 
01664             KFbxTypedProperty<fbxBool1>                 RotationMinX;
01665 
01673             KFbxTypedProperty<fbxBool1>                 RotationMinY;
01674 
01682             KFbxTypedProperty<fbxBool1>                 RotationMinZ;
01683 
01691             KFbxTypedProperty<fbxBool1>                 RotationMaxX;
01692 
01700             KFbxTypedProperty<fbxBool1>                 RotationMaxY;
01701 
01709             KFbxTypedProperty<fbxBool1>                 RotationMaxZ;
01710 
01718             KFbxTypedProperty<ETransformInheritType>    InheritType;
01719 
01727             KFbxTypedProperty<fbxBool1>                 ScalingActive;
01728 
01735             KFbxTypedProperty<fbxDouble3>               Scaling;
01736 
01744             KFbxTypedProperty<fbxDouble3>               ScalingMin;
01745 
01753             KFbxTypedProperty<fbxDouble3>               ScalingMax;
01754 
01762             KFbxTypedProperty<fbxBool1>                 ScalingMinX;
01763 
01771             KFbxTypedProperty<fbxBool1>                 ScalingMinY;
01772 
01780             KFbxTypedProperty<fbxBool1>                 ScalingMinZ;
01781 
01789             KFbxTypedProperty<fbxBool1>                 ScalingMaxX;
01790 
01798             KFbxTypedProperty<fbxBool1>                 ScalingMaxY;
01799 
01807             KFbxTypedProperty<fbxBool1>                 ScalingMaxZ;
01808 
01816             KFbxTypedProperty<fbxDouble3>               GeometricTranslation;
01817 
01825             KFbxTypedProperty<fbxDouble3>               GeometricRotation;
01826          
01834             KFbxTypedProperty<fbxDouble3>               GeometricScaling;
01835 
01836             // IK Settings
01838 
01846             KFbxTypedProperty<fbxDouble1>               MinDampRangeX;
01847 
01855             KFbxTypedProperty<fbxDouble1>               MinDampRangeY;
01856 
01864             KFbxTypedProperty<fbxDouble1>               MinDampRangeZ;
01865 
01873             KFbxTypedProperty<fbxDouble1>               MaxDampRangeX;
01874 
01882             KFbxTypedProperty<fbxDouble1>               MaxDampRangeY;
01883 
01891             KFbxTypedProperty<fbxDouble1>               MaxDampRangeZ;
01892 
01900             KFbxTypedProperty<fbxDouble1>               MinDampStrengthX;
01901 
01909             KFbxTypedProperty<fbxDouble1>               MinDampStrengthY;
01910 
01918             KFbxTypedProperty<fbxDouble1>               MinDampStrengthZ;
01919 
01927             KFbxTypedProperty<fbxDouble1>               MaxDampStrengthX;
01928 
01936             KFbxTypedProperty<fbxDouble1>               MaxDampStrengthY;
01937 
01945             KFbxTypedProperty<fbxDouble1>               MaxDampStrengthZ;
01946 
01954             KFbxTypedProperty<fbxDouble1>               PreferedAngleX;
01955 
01963             KFbxTypedProperty<fbxDouble1>               PreferedAngleY;
01964 
01972             KFbxTypedProperty<fbxDouble1>               PreferedAngleZ;
01974 
01981             KFbxTypedProperty<fbxReference*>            LookAtProperty;
01982 
01989             KFbxTypedProperty<fbxReference*>            UpVectorProperty;
01990 
02013             KFbxTypedProperty<fbxBool1>                 Show;
02014 
02022             KFbxTypedProperty<fbxBool1>                 NegativePercentShapeSupport;
02023 
02031             KFbxTypedProperty<fbxInteger1>              DefaultAttributeIndex;
02032 
02040             KFbxTypedProperty<fbxBool1>              Freeze;
02041 
02051             KFbxTypedProperty<fbxBool1>              LODBox;
02053 
02054 
02055         #ifndef DOXYGEN_SHOULD_SKIP_THIS
02056 
02057         //  WARNING!
02058         //  Anything beyond these lines may not be documented accurately and is
02059         //  subject to change without notice.
02061         public:
02071             void SetMultiLayer(bool pMultiLayer);
02072 
02076             bool GetMultiLayer() const;
02077 
02078             typedef enum
02079             {
02080                 eOLD_MULTI_TAKE,
02081                 eMULTI_TAKE,
02082                 eMONO_TAKE
02083             } EMultiTakeMode;
02084 
02088             void SetMultiTakeMode(EMultiTakeMode pMultiTakeMode);
02089 
02093             EMultiTakeMode GetMultiTakeMode() const;
02095 
02099             KFbxNodeLimits& GetLimits();
02100 
02106             virtual bool PropertyNotify(eFbxPropertyNotify pType, KFbxProperty* pProperty);
02107 
02108         protected:
02109             KFbxNode(KFbxSdkManager& pManager, char const* pName);
02110             
02111             virtual void Construct(const KFbxNode* pFrom);
02112             virtual bool ConstructProperties(bool pForceSet);
02113             virtual void Destruct(bool pRecursive, bool pDependents);
02114 
02115             void    Reset();
02116             K_DEPRECATED bool    GetAnimationIntervalRecursive(KTime& pStart, KTime& pStop, KFbxAnimLayer* pAnimLayer);
02117             bool    GetAnimationIntervalRecursive(KTimeSpan& pTimeInterval, KFbxAnimLayer* pAnimLayer);
02118 
02119         private:
02121             void    ResetLimitsRecursive(KFbxNode* pNode);
02122 
02123             // a wrapper function for ConvertPivotAnimationRecursive 
02124             // to avoid stack over flow when exporting scene with deep hierarchy
02125             void ConvertPivotAnimationRecursiveWrapper(const char * pAnimStackName,
02126                 EPivotSet pConversionTarget, double pFrameRate, bool pKeyReduce );
02127 
02128         public:
02129             virtual KFbxObject& Copy(const KFbxObject& pObject);
02130 
02134             void    AddChildName(char* pChildName);
02135 
02140             char*   GetChildName(kUInt pIndex) const;
02141 
02145             kUInt   GetChildNameCount() const;
02146 
02149             void UpdatePivotsAndLimitsFromProperties();
02150             
02153             void UpdatePropertiesFromPivotsAndLimits();
02154 
02158             void SetRotationActiveProperty(bool pVal);
02159 
02163             void PivotSetToMBTransform(EPivotSet pPivotSet);
02164 
02168             virtual const char* GetTypeName() const;
02169 
02173             virtual KStringList GetTypeFlags() const;
02174 
02175         protected:
02176             KMBTransform*       GetMBTransform();
02177 
02178             // begin character related members
02179             int AddCharacterLink(KFbxCharacter* pCharacter, int pCharacterLinkType, int pNodeId, int pNodeSubId);
02180             int RemoveCharacterLink(KFbxCharacter* pCharacter, int pCharacterLinkType, int pNodeId, int pNodeSubId);
02181             // This class must be declared public, otherwise gcc complains on typedef below.
02182 
02183         private:
02184             KFbxNode& DeepCopy( KFbxNode const& pNode, bool pCopyNodeAttribute );
02185 
02186         public:
02187             // Unsupported parameters in the FBX SDK
02188             // These are declared but not accessible
02189             // They are used to keep imported and exported data identical
02190             typedef enum { eCULLING_OFF, eCULLING_ON_CCW, eCULLING_ON_CW } ECullingType;
02191             ECullingType                mCullingType;
02192 
02193             bool                        mCorrectInheritType;
02194 
02195         protected:
02196             KFbxNode_internal*          mPH;
02197             mutable KError              mError;
02198 
02199             friend class KFbxScene;
02200             friend class KFbxGeometry;
02201             friend class KFbxLight;
02202             friend class KFbxNodeFinderDuplicateName;
02203             friend class KFbxCharacter;
02204             friend class KFbxControlSet;
02205             friend class KFbxNode_internal;
02206             friend class KFbxSurfaceMaterial_internal;
02207             friend class KFbxTexture_internal;
02208             friend class KFbxVideo_internal;
02209 
02210             friend class KFbxNodeLimits;
02211             friend class KFbxLimits;
02212             friend class KFbxNodeEvalState;
02213         #endif // #ifndef DOXYGEN_SHOULD_SKIP_THIS
02214     };
02215 
02216     typedef KFbxNode* HKFbxNode;
02217     typedef class KFBX_DLL KArrayTemplate<KFbxNode*> KArrayKFbxNode;
02218 
02219     inline EFbxType FbxTypeOf( ERotationOrder const &pItem )           { return eENUM; }
02220     inline EFbxType FbxTypeOf( ETransformInheritType const &pItem )    { return eENUM; }
02221     inline EFbxType FbxTypeOf( EQuaternionInterpolation const& pItem ) { return eENUM; }
02222 
02223 #include <fbxfilesdk/fbxfilesdk_nsend.h>
02224 
02225 #endif // FBXFILESDK_KFBXPLUGINS_KFBXNODE_H
02226