FBX SDK Reference Guide: kfbxnode.h Source File
Go to the documentation of this file.
00001 
00004 #ifndef FBXFILESDK_KFBXPLUGINS_KFBXNODE_H
00005 #define FBXFILESDK_KFBXPLUGINS_KFBXNODE_H
00006 
00007 /**************************************************************************************
00008 
00009  Copyright © 2001 - 2008 Autodesk, Inc. and/or its licensors.
00010  All Rights Reserved.
00011 
00012  The coded instructions, statements, computer programs, and/or related material 
00013  (collectively the "Data") in these files contain unpublished information 
00014  proprietary to Autodesk, Inc. and/or its licensors, which is protected by 
00015  Canada and United States of America federal copyright law and by international 
00016  treaties. 
00017  
00018  The Data may not be disclosed or distributed to third parties, in whole or in
00019  part, without the prior written consent of Autodesk, Inc. ("Autodesk").
00020 
00021  THE DATA IS PROVIDED "AS IS" AND WITHOUT WARRANTY.
00022  ALL WARRANTIES ARE EXPRESSLY EXCLUDED AND DISCLAIMED. AUTODESK MAKES NO
00023  WARRANTY OF ANY KIND WITH RESPECT TO THE DATA, EXPRESS, IMPLIED OR ARISING
00024  BY CUSTOM OR TRADE USAGE, AND DISCLAIMS ANY IMPLIED WARRANTIES OF TITLE, 
00025  NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE OR USE. 
00026  WITHOUT LIMITING THE FOREGOING, AUTODESK DOES NOT WARRANT THAT THE OPERATION
00027  OF THE DATA WILL BE UNINTERRUPTED OR ERROR FREE. 
00028  
00029  IN NO EVENT SHALL AUTODESK, ITS AFFILIATES, PARENT COMPANIES, LICENSORS
00030  OR SUPPLIERS ("AUTODESK GROUP") BE LIABLE FOR ANY LOSSES, DAMAGES OR EXPENSES
00031  OF ANY KIND (INCLUDING WITHOUT LIMITATION PUNITIVE OR MULTIPLE DAMAGES OR OTHER
00032  SPECIAL, DIRECT, INDIRECT, EXEMPLARY, INCIDENTAL, LOSS OF PROFITS, REVENUE
00033  OR DATA, COST OF COVER OR CONSEQUENTIAL LOSSES OR DAMAGES OF ANY KIND),
00034  HOWEVER CAUSED, AND REGARDLESS OF THE THEORY OF LIABILITY, WHETHER DERIVED
00035  FROM CONTRACT, TORT (INCLUDING, BUT NOT LIMITED TO, NEGLIGENCE), OR OTHERWISE,
00036  ARISING OUT OF OR RELATING TO THE DATA OR ITS USE OR ANY OTHER PERFORMANCE,
00037  WHETHER OR NOT AUTODESK HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSS
00038  OR DAMAGE. 
00039 
00040 **************************************************************************************/
00041 
00042 #include <fbxfilesdk/components/kbaselib/kaydaradef_h.h>
00043 #include <fbxfilesdk/components/kbaselib/kaydara.h>
00044 
00045 #include <fbxfilesdk/kfbxplugins/kfbxtakenodecontainer.h>
00046 #include <fbxfilesdk/kfbxplugins/kfbxnodelimits.h>
00047 #include <fbxfilesdk/kfbxplugins/kfbxgroupname.h>
00048 
00049 #include <fbxfilesdk/kfbxmath/kfbxtransformation.h>
00050 #include <fbxfilesdk/kfbxmath/kfbxvector4.h>
00051 #include <fbxfilesdk/kfbxmath/kfbxmatrix.h>
00052 #include <fbxfilesdk/kfbxmath/kfbxxmatrix.h>
00053 
00054 #include <fbxfilesdk/components/kbaselib/klib/karrayul.h>
00055 #include <fbxfilesdk/components/kbaselib/klib/kerror.h>
00056 #include <fbxfilesdk/components/kbaselib/klib/kstring.h>
00057 #include <fbxfilesdk/components/kbaselib/klib/ktime.h>
00058 
00059 #include <fbxfilesdk/components/kbaselib/kbaselib_forward.h>
00060 
00061 #include <fbxfilesdk/fbxfilesdk_nsbegin.h>
00062 
00063     class KFbxNodeAttribute;
00064     class KFbxScene;
00065     class KFbxSdkManager;
00066     class KFbxLodGroup;
00067     class KFbxNull;
00068     class KFbxMarker;
00069     class KFbxSkeleton;
00070     class KFbxGeometry;
00071     class KFbxMesh;
00072     class KFbxNurb;
00073     class KFbxNurbsCurve;
00074     class KFbxNurbsSurface;
00075     class KFbxTrimNurbsSurface;
00076     class KFbxPatch;
00077     class KFbxCamera;
00078     class KFbxCameraSwitcher;
00079     class KFbxLight;
00080     class KFbxOpticalReference;
00081     class KFbxCharacter;
00082     class KFbxNode_internal;
00083     class KFbxSurfaceMaterial;
00084 
00097     class KFBX_DLL KFbxNode : public KFbxTakeNodeContainer
00098     {
00099         KFBXOBJECT_DECLARE(KFbxNode,KFbxTakeNodeContainer);
00100         public:
00106 
00110             KFbxNode* GetParent();
00111             KFbxNode const* GetParent() const;
00112 
00126             bool AddChild(KFbxNode* pNode);
00127 
00133             KFbxNode* RemoveChild(KFbxNode* pNode);
00134 
00139             int GetChildCount(bool pRecursive = false) const;
00140 
00146             KFbxNode* GetChild(int pIndex);
00147 
00153             KFbxNode const* GetChild(int pIndex) const;
00154 
00161             KFbxNode* FindChild(char const* pName, bool pRecursive = true, bool pInitial = false);
00162 
00164 
00183 
00187             void SetTarget(KFbxNode* pNode);
00188 
00192             KFbxNode* GetTarget() const;
00193 
00197             void SetPostTargetRotation(KFbxVector4 pVector);
00198 
00202             KFbxVector4 GetPostTargetRotation() const;
00203 
00207             void SetTargetUp(KFbxNode* pNode);
00208 
00212             KFbxNode* GetTargetUp() const;
00213 
00217             void SetTargetUpVector(KFbxVector4 pVector);
00218 
00222             KFbxVector4 GetTargetUpVector() const;
00223 
00225 
00226 
00231         public:
00232             virtual kFbxUpdateId GetUpdateId(eFbxUpdateIdType pUpdateId=eUpdateId_Object) const;
00234 
00242             void SetVisibility(bool pIsVisible);
00243 
00247             bool GetVisibility() const;
00248 
00257             typedef enum
00258             {
00259                 eHARD_SHADING,
00260                 eWIRE_FRAME,
00261                 eFLAT_SHADING,
00262                 eLIGHT_SHADING,
00263                 eTEXTURE_SHADING,
00264                 eLIGHT_TEXTURE_SHADING
00265             } EShadingMode;
00266 
00270             void SetShadingMode(EShadingMode pShadingMode);
00271 
00275             EShadingMode GetShadingMode() const;
00276 
00280             void SetMultiLayer(bool pMultiLayer);
00281 
00285             bool GetMultiLayer() const;
00286 
00292             typedef enum
00293             {
00294                 eOLD_MULTI_TAKE,
00295                 eMULTI_TAKE,
00296                 eMONO_TAKE
00297             } EMultiTakeMode;
00298 
00302             void SetMultiTakeMode(EMultiTakeMode pMultiTakeMode);
00303 
00307             EMultiTakeMode GetMultiTakeMode() const;
00309 
00314 
00324             KFbxNodeAttribute* SetNodeAttribute(KFbxNodeAttribute* pNodeAttribute);
00325 
00330             KFbxNodeAttribute* GetNodeAttribute();
00331 
00336             KFbxNodeAttribute const* GetNodeAttribute() const;
00337 
00341             int GetNodeAttributeCount() const;
00342 
00347             int GetDefaultNodeAttributeIndex() const;
00348 
00355             bool SetDefaultNodeAttributeIndex(int pIndex);
00356 
00363             KFbxNodeAttribute* GetNodeAttributeByIndex(int pIndex);
00364 
00371             KFbxNodeAttribute const* GetNodeAttributeByIndex(int pIndex) const;
00372 
00379             int GetNodeAttributeIndex(KFbxNodeAttribute* pNodeAttribute) const;
00380 
00388             bool AddNodeAttribute(KFbxNodeAttribute* pNodeAttribute);
00389 
00396             KFbxNodeAttribute* RemoveNodeAttribute(KFbxNodeAttribute* pNodeAttribute);
00397 
00404             KFbxNodeAttribute* RemoveNodeAttributeByIndex(int pIndex);
00405 
00410             KFbxLodGroup* GetLodGroup();
00411 
00416             KFbxNull* GetNull();
00417 
00422             KFbxMarker* GetMarker();
00423 
00428             KFbxSkeleton* GetSkeleton();
00429 
00435             KFbxGeometry* GetGeometry();
00436 
00441             KFbxMesh* GetMesh();
00442 
00447             KFbxNurb* GetNurb();
00448 
00453             KFbxNurbsSurface* GetNurbsSurface();
00454 
00459             KFbxNurbsCurve* GetNurbsCurve();
00460 
00465             KFbxTrimNurbsSurface* GetTrimNurbsSurface();
00466 
00471             KFbxPatch* GetPatch();
00472 
00477             KFbxCamera* GetCamera();
00478 
00484             KFbxCameraSwitcher* GetCameraSwitcher();
00485 
00490             KFbxLight* GetLight();
00491 
00497             KFbxOpticalReference* GetOpticalReference();
00499 
00506 
00510             void SetDefaultT(const KFbxVector4& pT);
00511 
00516             KFbxVector4& GetDefaultT(KFbxVector4& pT);
00517 
00521             void SetDefaultR(const KFbxVector4& pR);
00522 
00527             KFbxVector4& GetDefaultR(KFbxVector4& pR);
00528 
00532             void SetDefaultS(const KFbxVector4& pS);
00533 
00538             KFbxVector4& GetDefaultS(KFbxVector4& pS);
00539 
00547             void SetDefaultVisibility(double pVisibility);
00548 
00556             double GetDefaultVisibility();
00557 
00559 
00573             void SetTransformationInheritType(ETransformInheritType pInheritType);
00574 
00578             void GetTransformationInheritType(ETransformInheritType& pInheritType);
00580 
00581 
00590 
00595             typedef enum
00596             {
00597                 eSOURCE_SET,
00598                 eDESTINATION_SET
00599             } EPivotSet;
00600 
00605             typedef enum
00606             {
00607                 ePIVOT_STATE_ACTIVE,
00608                 ePIVOT_STATE_REFERENCE
00609             } EPivotState;
00610 
00617             void SetPivotState(EPivotSet pPivotSet, EPivotState pPivotState);
00618 
00625             void GetPivotState(EPivotSet pPivotSet, EPivotState& pPivotState);
00626 
00632             void SetRotationOrder(EPivotSet pPivotSet, ERotationOrder pRotationOrder);
00633 
00638             void GetRotationOrder(EPivotSet pPivotSet, ERotationOrder& pRotationOrder);
00639 
00648             void SetUseRotationSpaceForLimitOnly(EPivotSet pPivotSet, bool pUseForLimitOnly);
00649 
00654             bool GetUseRotationSpaceForLimitOnly(EPivotSet pPivotSet);
00655 
00661             void SetRotationActive(bool pVal);
00662 
00666             bool GetRotationActive();
00667 
00672             void SetUseQuaternionForInterpolation(EPivotSet pPivotSet, bool pUseQuaternion);
00673 
00678             bool GetUseQuaternionForInterpolation(EPivotSet pPivotSet) const;
00679 
00688             void SetRotationStiffness(KFbxVector4 pRotationStiffness);
00689 
00693             KFbxVector4 GetRotationStiffness();
00694 
00703             void SetMinDampRange(KFbxVector4 pMinDampRange);
00704 
00708             KFbxVector4 GetMinDampRange();
00709 
00710 
00719             void SetMaxDampRange(KFbxVector4 pMaxDampRange);
00720 
00724             KFbxVector4 GetMaxDampRange();
00725 
00726 
00735             void SetMinDampStrength(KFbxVector4 pMinDampStrength);
00736 
00740             KFbxVector4 GetMinDampStrength();
00741 
00742 
00751             void SetMaxDampStrength(KFbxVector4 pMaxDampStrength);
00752 
00756             KFbxVector4 GetMaxDampStrength();
00757 
00763             void SetPreferedAngle(KFbxVector4 pPreferedAngle);
00764 
00768             KFbxVector4 GetPreferedAngle();
00769 
00775             void SetRotationOffset(EPivotSet pPivotSet, KFbxVector4 pVector);
00776 
00782             KFbxVector4& GetRotationOffset(EPivotSet pPivotSet) const;
00783 
00790             void SetRotationPivot(EPivotSet pPivotSet, KFbxVector4 pVector);
00791 
00798             KFbxVector4& GetRotationPivot(EPivotSet pPivotSet) const;
00799 
00806             void SetPreRotation(EPivotSet pPivotSet, KFbxVector4 pVector);
00807 
00814             KFbxVector4& GetPreRotation(EPivotSet pPivotSet) const;
00815 
00822             void SetPostRotation(EPivotSet pPivotSet, KFbxVector4 pVector);
00823 
00830             KFbxVector4& GetPostRotation(EPivotSet pPivotSet) const;
00831 
00837             void SetScalingOffset(EPivotSet pPivotSet, KFbxVector4 pVector);
00838 
00844             KFbxVector4& GetScalingOffset(EPivotSet pPivotSet) const;
00845 
00853             void SetScalingPivot(EPivotSet pPivotSet, KFbxVector4 pVector);
00854 
00861             KFbxVector4& GetScalingPivot(EPivotSet pPivotSet) const;
00862 
00871             void SetGeometricTranslation(EPivotSet pPivotSet, KFbxVector4 pVector);
00872 
00877             KFbxVector4 GetGeometricTranslation(EPivotSet pPivotSet) const;
00878 
00887             void SetGeometricRotation(EPivotSet pPivotSet, KFbxVector4 pVector);
00888 
00893             KFbxVector4 GetGeometricRotation(EPivotSet pPivotSet);
00894 
00903             void SetGeometricScaling(EPivotSet pPivotSet, KFbxVector4 pVector);
00904 
00909             KFbxVector4 GetGeometricScaling(EPivotSet pPivotSet);
00910 
00919             void ConvertPivotAnimation(EPivotSet pConversionTarget, double pFrameRate, bool pKeyReduce=true);
00920 
00929             void ConvertPivotAnimationRecursive(EPivotSet pConversionTarget, double pFrameRate, bool pKeyReduce=true);
00930 
00935             void ResetPivotSet( KFbxNode::EPivotSet pPivotSet );
00936 
00943             void ResetPivotSetAndConvertAnimation( double pFrameRate=30., bool pKeyReduce=false );
00944 
00946 
00951 
00956             KFbxVector4& GetLocalTFromDefaultTake(bool pApplyLimits = false);
00957 
00962             KFbxVector4& GetLocalRFromDefaultTake(bool pApplyLimits = false);
00963 
00968             KFbxVector4& GetLocalSFromDefaultTake(bool pApplyLimits = false);
00969 
00975             KFbxXMatrix& GetGlobalFromDefaultTake(EPivotSet pPivotSet = eSOURCE_SET, bool pApplyTarget = false);
00976 
00982             KFbxVector4& GetLocalTFromCurrentTake(KTime pTime, bool pApplyLimits = false);
00983 
00989             KFbxVector4& GetLocalRFromCurrentTake(KTime pTime, bool pApplyLimits = false);
00990 
00996             KFbxVector4& GetLocalSFromCurrentTake(KTime pTime, bool pApplyLimits = false);
00997 
01004             KFbxXMatrix& GetGlobalFromCurrentTake(KTime pTime, EPivotSet pPivotSet = eSOURCE_SET, bool pApplyTarget = false);
01006 
01011 
01015             int GetCharacterLinkCount();
01016 
01029             bool GetCharacterLink(int pIndex, KFbxCharacter** pCharacter, int* pCharacterLinkType, int* pNodeId, int *pNodeSubId);
01030 
01041             int FindCharacterLink(KFbxCharacter* pCharacter, int pCharacterLinkType, int pNodeId, int pNodeSubId);
01043 
01055         virtual bool GetAnimationInterval(KTime& pStart, KTime& pStop);
01056 
01057 
01062 
01067             int AddMaterial( KFbxSurfaceMaterial* pMaterial );
01068 
01073             bool RemoveMaterial( KFbxSurfaceMaterial* pMaterial );
01074 
01078             int GetMaterialCount() const;
01079 
01084             KFbxSurfaceMaterial* GetMaterial( int pIndex ) const;
01085 
01088             void RemoveAllMaterials();
01089 
01095             int GetMaterialIndex( char const* pName ) const;
01096 
01098 
01104 
01108             KError& GetError();
01109 
01123             typedef enum
01124             {
01125                 eTAKE_NODE_ERROR,
01126                 eNODE_NAME_CLASH,
01127                 eMATERIAL_NAME_CLASH,
01128                 eTEXTURE_NAME_CLASH,
01129                 eVIDEO_NAME_CLASH,
01130                 eNOT_A_CHILD,
01131                 eCYCLIC_GRAPH,
01132                 eINDEX_OUT_OF_RANGE,
01133                 eATTRIBUTE_NOT_CONNECTED,
01134                 eERROR_COUNT
01135             } EError;
01136 
01140             EError GetLastErrorID() const;
01141 
01145             const char* GetLastErrorString() const;
01146 
01148 
01149 
01154 
01162             KFbxTypedProperty<fbxDouble3>               LclTranslation;
01163 
01171             KFbxTypedProperty<fbxDouble3>               LclRotation;
01172 
01180             KFbxTypedProperty<fbxDouble3>               LclScaling;
01181 
01189             KFbxTypedProperty<KFbxXMatrix>              GlobalTransform;
01190 
01198             KFbxTypedProperty<fbxDouble1>               Visibility;
01199             
01206             KFbxTypedProperty<fbxDouble1>               Weight;
01207 
01214             KFbxTypedProperty<fbxDouble3>               PoleVector;
01215 
01222             KFbxTypedProperty<fbxDouble1>               Twist;
01223 
01230             KFbxTypedProperty<fbxDouble3>               WorldUpVector;
01231 
01238             KFbxTypedProperty<fbxDouble3>               UpVector;
01239 
01246             KFbxTypedProperty<fbxDouble3>               AimVector;
01247 
01255             KFbxTypedProperty<fbxBool1>                 QuaternionInterpolate;
01256 
01264             KFbxTypedProperty<fbxDouble3>               RotationOffset;
01265 
01273             KFbxTypedProperty<fbxDouble3>               RotationPivot;
01274  
01282             KFbxTypedProperty<fbxDouble3>               ScalingOffset;
01283 
01291             KFbxTypedProperty<fbxDouble3>               ScalingPivot;
01292 
01300             KFbxTypedProperty<fbxBool1>                 TranslationActive;
01301 
01308             KFbxTypedProperty<fbxDouble3>               Translation;
01309 
01317             KFbxTypedProperty<fbxDouble3>               TranslationMin;
01318 
01326             KFbxTypedProperty<fbxDouble3>               TranslationMax;
01327 
01335             KFbxTypedProperty<fbxBool1>                 TranslationMinX;
01336 
01344             KFbxTypedProperty<fbxBool1>                 TranslationMinY;
01345 
01353             KFbxTypedProperty<fbxBool1>                 TranslationMinZ;
01354 
01362             KFbxTypedProperty<fbxBool1>                 TranslationMaxX;
01363 
01371             KFbxTypedProperty<fbxBool1>                 TranslationMaxY;
01372 
01380             KFbxTypedProperty<fbxBool1>                 TranslationMaxZ;
01381 
01389             KFbxTypedProperty<ERotationOrder>           RotationOrder;
01390 
01398             KFbxTypedProperty<fbxBool1>                 RotationSpaceForLimitOnly;
01399 
01407             KFbxTypedProperty<fbxDouble1>               RotationStiffnessX;
01408 
01416             KFbxTypedProperty<fbxDouble1>               RotationStiffnessY;
01417 
01425             KFbxTypedProperty<fbxDouble1>               RotationStiffnessZ;
01426 
01434             KFbxTypedProperty<fbxDouble1>               AxisLen;
01435          
01443             KFbxTypedProperty<fbxDouble3>               PreRotation;
01444 
01452             KFbxTypedProperty<fbxDouble3>               PostRotation;
01453 
01461             KFbxTypedProperty<fbxBool1>                 RotationActive;
01462 
01470             KFbxTypedProperty<fbxDouble3>               RotationMin;
01471 
01479             KFbxTypedProperty<fbxDouble3>               RotationMax;
01480 
01488             KFbxTypedProperty<fbxBool1>                 RotationMinX;
01489 
01497             KFbxTypedProperty<fbxBool1>                 RotationMinY;
01498 
01506             KFbxTypedProperty<fbxBool1>                 RotationMinZ;
01507 
01515             KFbxTypedProperty<fbxBool1>                 RotationMaxX;
01516 
01524             KFbxTypedProperty<fbxBool1>                 RotationMaxY;
01525 
01533             KFbxTypedProperty<fbxBool1>                 RotationMaxZ;
01534 
01542             KFbxTypedProperty<ETransformInheritType>    InheritType;
01543 
01551             KFbxTypedProperty<fbxBool1>                 ScalingActive;
01552 
01559             KFbxTypedProperty<fbxDouble3>               Scaling;
01560 
01568             KFbxTypedProperty<fbxDouble3>               ScalingMin;
01569 
01577             KFbxTypedProperty<fbxDouble3>               ScalingMax;
01578 
01586             KFbxTypedProperty<fbxBool1>                 ScalingMinX;
01587 
01595             KFbxTypedProperty<fbxBool1>                 ScalingMinY;
01596 
01604             KFbxTypedProperty<fbxBool1>                 ScalingMinZ;
01605 
01613             KFbxTypedProperty<fbxBool1>                 ScalingMaxX;
01614 
01622             KFbxTypedProperty<fbxBool1>                 ScalingMaxY;
01623 
01631             KFbxTypedProperty<fbxBool1>                 ScalingMaxZ;
01632 
01640             KFbxTypedProperty<fbxDouble3>               GeometricTranslation;
01641 
01649             KFbxTypedProperty<fbxDouble3>               GeometricRotation;
01650          
01658             KFbxTypedProperty<fbxDouble3>               GeometricScaling;
01659 
01660             // Ik Settings
01662 
01670             KFbxTypedProperty<fbxDouble1>               MinDampRangeX;
01671 
01679             KFbxTypedProperty<fbxDouble1>               MinDampRangeY;
01680 
01688             KFbxTypedProperty<fbxDouble1>               MinDampRangeZ;
01689 
01697             KFbxTypedProperty<fbxDouble1>               MaxDampRangeX;
01698 
01706             KFbxTypedProperty<fbxDouble1>               MaxDampRangeY;
01707 
01715             KFbxTypedProperty<fbxDouble1>               MaxDampRangeZ;
01716 
01724             KFbxTypedProperty<fbxDouble1>               MinDampStrengthX;
01725 
01733             KFbxTypedProperty<fbxDouble1>               MinDampStrengthY;
01734 
01742             KFbxTypedProperty<fbxDouble1>               MinDampStrengthZ;
01743 
01751             KFbxTypedProperty<fbxDouble1>               MaxDampStrengthX;
01752 
01760             KFbxTypedProperty<fbxDouble1>               MaxDampStrengthY;
01761 
01769             KFbxTypedProperty<fbxDouble1>               MaxDampStrengthZ;
01770 
01778             KFbxTypedProperty<fbxDouble1>               PreferedAngleX;
01779 
01787             KFbxTypedProperty<fbxDouble1>               PreferedAngleY;
01788 
01796             KFbxTypedProperty<fbxDouble1>               PreferedAngleZ;
01798 
01805             KFbxTypedProperty<fbxReference*>            LookAtProperty;
01806 
01813             KFbxTypedProperty<fbxReference*>            UpVectorProperty;
01814 
01822             KFbxTypedProperty<fbxBool1>                 Show;
01823 
01831             KFbxTypedProperty<fbxBool1>                 NegativePercentShapeSupport;
01832 
01840             KFbxTypedProperty<fbxInteger1>              DefaultAttributeIndex;
01842 
01843 
01844         #ifndef DOXYGEN_SHOULD_SKIP_THIS
01846         //  WARNING!
01847         //  Anything beyond these lines may not be documented accurately and is
01848         //  subject to change without notice.
01850         public:
01855 
01862                 void SetLocalStateFromDefaultTake(bool pRecursive, bool pApplyLimits = false);
01863 
01868                 void SetDefaultTakeFromLocalState(bool pRecursive);
01869 
01876                 void SetLocalStateFromCurrentTake(KTime pTime, bool pRecursive,bool pApplyLimits = false);
01877 
01883                 void SetCurrentTakeFromLocalState(KTime pTime, bool pRecursive);
01884 
01891                 void ComputeGlobalState(kUInt pUpdateId, bool pRecursive, EPivotSet pPivotSet = eSOURCE_SET, bool pApplyTarget = false);
01892 
01898                 void ComputeLocalState(kUInt pUpdateId, bool pRecursive);
01899 
01903                 void SetGlobalState(const KFbxXMatrix& pGX);
01904 
01906                 KFbxXMatrix& GetGlobalState();
01907 
01911                 void SetLocalState(const KFbxVector4& pLT,const KFbxVector4& pLR, const KFbxVector4& pLS);
01912 
01914                 void GetLocalState(KFbxVector4& pLT, KFbxVector4& pLR, KFbxVector4& pLS);
01915 
01920                 void SetGlobalStateId(kUInt pUpdateId, bool pRecursive);
01921 
01923                 kUInt GetGlobalStateId();
01924 
01929                 void SetLocalStateId(kUInt pUpdateId, bool pRecursive);
01930 
01932                 kUInt GetLocalStateId();
01934 
01935             KFbxNodeLimits& GetLimits();
01936 
01937 
01938             // Clone,
01939             // Note this does not clone the node's attribute.
01940             virtual KFbxObject* Clone(KFbxObject* pContainer, KFbxObject::ECloneType pCloneType = eDEEP_CLONE) const;
01941 
01942             // Notification received when a KFbxNod property has changed
01943             virtual bool PropertyNotify(eFbxPropertyNotify pType, KFbxProperty* pProperty);
01944 
01945         protected:
01946             KFbxNode(KFbxSdkManager& pManager, char const* pName);
01947             virtual ~KFbxNode();
01948 
01949             virtual void Construct(const KFbxNode* pFrom);
01950             virtual bool ConstructProperties(bool pForceSet);
01951             virtual void Destruct(bool pRecursive, bool pDependents);
01952 
01954             KFbxNode& operator=(KFbxNode const& pNode);
01955 
01956             void    Reset();
01957             bool    GetAnimationIntervalRecursive(KTime& pStart, KTime& pStop);
01958 
01959         public:
01960             void    AddChildName(char* pChildName);
01961             char*   GetChildName(kUInt pIndex);
01962             kUInt   GetChildNameCount();
01963 
01964             virtual bool SetCurrentTakeNode(int pIndex);
01965             virtual bool SetCurrentTakeNode(char* pName);
01966             void UpdatePivotsAndLimitsFromProperties();
01967             void UpdatePropertiesFromPivotsAndLimits();
01968             void SetRotationActiveProperty(bool pVal);
01969 
01970             void PivotSetToMBTransform(EPivotSet pPivotSet);
01971             KFbxXMatrix         GetLXFromLocalState( bool pT, bool pR, bool pS, bool pSoff );
01972 
01973             virtual KString     GetTypeName() const;
01974             virtual KStringList GetTypeFlags() const;
01975 
01976         protected:
01977             KMBTransform*       GetMBTransform();
01978             void                ComputeTRSLocalFromDefaultTake(bool pApplyLimits = false);
01979             void                ComputeTRSLocalFromCurrentTake(KTime pTime, bool pApplyLimits = false);
01980 
01981             // begin character related members
01982             int AddCharacterLink(KFbxCharacter* pCharacter, int pCharacterLinkType, int pNodeId, int pNodeSubId);
01983             int RemoveCharacterLink(KFbxCharacter* pCharacter, int pCharacterLinkType, int pNodeId, int pNodeSubId);
01984             // This class must be declared public, otherwise gcc complains on typedef below.
01985 
01986         private:
01987             KFbxNode& DeepCopy( KFbxNode const& pNode, bool pCopyNodeAttribute );
01988 
01989         public:
01990             // Unsupported parameters in the FBX SDK
01991             // These are declared but not accessible
01992             // They are used to keep imported and exported data identical
01993             typedef enum { eCULLING_OFF, eCULLING_ON_CCW, eCULLING_ON_CW } ECullingType;
01994             ECullingType                mCullingType;
01995 
01996             bool                        mCorrectInheritType;
01997 
01998         protected:
01999             KFbxNode_internal*          mPH;
02000             mutable KError              mError;
02001 
02002             friend class KFbxScene;
02003             friend class KFbxGeometry;
02004             friend class KFbxLight;
02005             friend class KFbxNodeFinderDuplicateName;
02006             friend class KFbxCharacter;
02007             friend class KFbxControlSet;
02008             friend class KFbxNode_internal;
02009             friend class KFbxSurfaceMaterial_internal;
02010             friend class KFbxTexture_internal;
02011             friend class KFbxVideo_internal;
02012 
02013             friend class KFbxNodeLimits;
02014             friend class KFbxLimits;
02015         #endif // #ifndef DOXYGEN_SHOULD_SKIP_THIS
02016     };
02017 
02018     typedef KFbxNode* HKFbxNode;
02019     typedef class KFBX_DLL KArrayTemplate<KFbxNode*> KArrayKFbxNode;
02020 
02021     inline EFbxType FbxTypeOf( ERotationOrder const &pItem )            { return eENUM; }
02022     inline EFbxType FbxTypeOf( ETransformInheritType const &pItem )     { return eENUM; }
02023 
02024 #include <fbxfilesdk/fbxfilesdk_nsend.h>
02025 
02026 #endif // FBXFILESDK_KFBXPLUGINS_KFBXNODE_H
02027