kfbxnode.h

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 (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/kfbxplugins/kfbxobject.h>
00044 #include <fbxfilesdk/kfbxplugins/kfbxnodelimits.h>
00045 #include <fbxfilesdk/kfbxplugins/kfbxgroupname.h>
00046 
00047 #include <fbxfilesdk/kfbxmath/kfbxtransformation.h>
00048 #include <fbxfilesdk/kfbxmath/kfbxvector4.h>
00049 #include <fbxfilesdk/kfbxmath/kfbxmatrix.h>
00050 #include <fbxfilesdk/kfbxmath/kfbxxmatrix.h>
00051 
00052 #include <fbxfilesdk/components/kbaselib/klib/karrayul.h>
00053 #include <fbxfilesdk/components/kbaselib/klib/kerror.h>
00054 #include <fbxfilesdk/components/kbaselib/klib/kstring.h>
00055 #include <fbxfilesdk/components/kbaselib/klib/ktime.h>
00056 
00057 #include <fbxfilesdk/fbxfilesdk_nsbegin.h>
00058 
00059     class KFbxNodeAttribute;
00060     class KFbxScene;
00061     class KFbxAnimStack;
00062     class KFbxAnimLayer;
00063     class KFbxSdkManager;
00064     class KFbxLodGroup;
00065     class KFbxNull;
00066     class KFbxMarker;
00067     class KFbxSkeleton;
00068     class KFbxGeometry;
00069     class KFbxMesh;
00070     class KFbxNurb;
00071     class KFbxNurbsCurve;
00072     class KFbxNurbsSurface;
00073     class KFbxTrimNurbsSurface;
00074     class KFbxPatch;
00075     class KFbxCamera;
00076     class KFbxCameraStereo;
00077     class KFbxCameraSwitcher;
00078     class KFbxLight;
00079     class KFbxOpticalReference;
00080     class KFbxCharacter;
00081     class KFbxNode_internal;
00082     class KFbxSurfaceMaterial;
00083     class KFbxSubdiv;
00084     class KFbxNodeEvalState;
00085 
00109     class KFBX_DLL KFbxNode : public KFbxObject
00110     {
00111         KFBXOBJECT_DECLARE(KFbxNode,KFbxObject);
00112         public:
00117 
00121             KFbxNode* GetParent();
00122             KFbxNode const* GetParent() const;
00123 
00131             bool AddChild(KFbxNode* pNode);
00132 
00137             KFbxNode* RemoveChild(KFbxNode* pNode);
00138 
00143             int GetChildCount(bool pRecursive = false) const;
00144 
00149             KFbxNode* GetChild(int pIndex);
00150 
00155             KFbxNode const* GetChild(int pIndex) const;
00156 
00164             KFbxNode* FindChild(char const* pName, bool pRecursive = true, bool pInitial = false);
00165 
00167 
00192 
00196             void SetTarget(KFbxNode* pNode);
00197 
00201             KFbxNode* GetTarget() const;
00202 
00206             void SetPostTargetRotation(KFbxVector4 pVector);
00207 
00211             KFbxVector4 GetPostTargetRotation() const;
00212 
00216             void SetTargetUp(KFbxNode* pNode);
00217 
00221             KFbxNode* GetTargetUp() const;
00222 
00226             void SetTargetUpVector(KFbxVector4 pVector);
00227 
00231             KFbxVector4 GetTargetUpVector() const;
00232 
00234 
00235 
00240         public:
00241             virtual kFbxUpdateId GetUpdateId(eFbxUpdateIdType pUpdateId=eUpdateId_Object) const;
00243 
00255             void SetVisibility(bool pIsVisible);
00256 
00262             bool GetVisibility() const;
00263 
00270             typedef enum
00271             {
00272                 eHARD_SHADING,              
00273                 eWIRE_FRAME,                
00274                 eFLAT_SHADING,              
00275                 eLIGHT_SHADING,             
00276                 eTEXTURE_SHADING,           
00277                 eLIGHT_TEXTURE_SHADING      
00278             } EShadingMode;
00279 
00283             void SetShadingMode(EShadingMode pShadingMode);
00284 
00288             EShadingMode GetShadingMode() const;
00289 
00291 
00296 
00306             KFbxNodeAttribute* SetNodeAttribute(KFbxNodeAttribute* pNodeAttribute);
00307 
00313             KFbxNodeAttribute* GetNodeAttribute();
00314 
00320             KFbxNodeAttribute const* GetNodeAttribute() const;
00321 
00323             int GetNodeAttributeCount() const;
00324 
00329             int GetDefaultNodeAttributeIndex() const;
00330 
00337             bool SetDefaultNodeAttributeIndex(int pIndex);
00338 
00344             KFbxNodeAttribute* GetNodeAttributeByIndex(int pIndex);
00345 
00351             KFbxNodeAttribute const* GetNodeAttributeByIndex(int pIndex) const;
00352 
00361             int GetNodeAttributeIndex(KFbxNodeAttribute* pNodeAttribute) const;
00362 
00373             bool AddNodeAttribute(KFbxNodeAttribute* pNodeAttribute);
00374 
00380             KFbxNodeAttribute* RemoveNodeAttribute(KFbxNodeAttribute* pNodeAttribute);
00381 
00390             KFbxNodeAttribute* RemoveNodeAttributeByIndex(int pIndex);
00391 
00397             KFbxLodGroup* GetLodGroup();
00398 
00404             KFbxNull* GetNull();
00405 
00411             KFbxMarker* GetMarker();
00412 
00418             KFbxSkeleton* GetSkeleton();
00419 
00435             KFbxGeometry* GetGeometry();
00436 
00445             KFbxMesh* GetMesh();
00446 
00455             KFbxNurb* GetNurb();
00456 
00465             KFbxNurbsSurface* GetNurbsSurface();
00466 
00475             KFbxNurbsCurve* GetNurbsCurve();
00476 
00485             KFbxTrimNurbsSurface* GetTrimNurbsSurface();
00486 
00495             KFbxSubdiv* GetSubdiv();
00496 
00505             KFbxPatch* GetPatch();
00506 
00512             KFbxCamera* GetCamera();
00513 
00519             KFbxCameraSwitcher* GetCameraSwitcher();
00520 
00526             KFbxLight* GetLight();
00527 
00533             KFbxOpticalReference* GetOpticalReference();
00535 
00542 
00545             K_DEPRECATED void SetDefaultT(const KFbxVector4& pT);
00546 
00549             K_DEPRECATED KFbxVector4& GetDefaultT(KFbxVector4& pT);
00550 
00553             K_DEPRECATED void SetDefaultR(const KFbxVector4& pR);
00554 
00557             K_DEPRECATED KFbxVector4& GetDefaultR(KFbxVector4& pR);
00558 
00561             K_DEPRECATED void SetDefaultS(const KFbxVector4& pS);
00562 
00565             K_DEPRECATED KFbxVector4& GetDefaultS(KFbxVector4& pS);
00566 
00582             void SetDefaultVisibility(double pVisibility);
00583 
00597             double GetDefaultVisibility() const;
00598 
00600 
00614             void SetTransformationInheritType(ETransformInheritType pInheritType);
00615 
00617             void GetTransformationInheritType(ETransformInheritType& pInheritType) const;
00619 
00735 
00738             typedef enum
00739             {
00740                 eSOURCE_SET,            
00741                 eDESTINATION_SET        
00742             } EPivotSet;
00743 
00746             typedef enum
00747             {
00748                 ePIVOT_STATE_ACTIVE,        
00750                 ePIVOT_STATE_REFERENCE      
00753             } EPivotState;
00754 
00759             void SetPivotState(EPivotSet pPivotSet, EPivotState pPivotState);
00760 
00767             void GetPivotState(EPivotSet pPivotSet, EPivotState& pPivotState) const;
00768 
00774             void SetRotationOrder(EPivotSet pPivotSet, ERotationOrder pRotationOrder);
00775 
00780             void GetRotationOrder(EPivotSet pPivotSet, ERotationOrder& pRotationOrder) const;
00781 
00791             void SetUseRotationSpaceForLimitOnly(EPivotSet pPivotSet, bool pUseForLimitOnly);
00792 
00797             bool GetUseRotationSpaceForLimitOnly(EPivotSet pPivotSet) const;
00798 
00804             void SetRotationActive(bool pVal);
00805 
00809             bool GetRotationActive() const;
00810 
00815             void SetUseQuaternionForInterpolation(EPivotSet pPivotSet, bool pUseQuaternion);
00816 
00821             bool GetUseQuaternionForInterpolation(EPivotSet pPivotSet) const;
00822 
00831             void SetRotationStiffness(KFbxVector4 pRotationStiffness);
00832 
00836             KFbxVector4 GetRotationStiffness() const;
00837 
00846             void SetMinDampRange(KFbxVector4 pMinDampRange);
00847 
00851             KFbxVector4 GetMinDampRange() const;
00852 
00853 
00862             void SetMaxDampRange(KFbxVector4 pMaxDampRange);
00863 
00867             KFbxVector4 GetMaxDampRange() const;
00868 
00869 
00878             void SetMinDampStrength(KFbxVector4 pMinDampStrength);
00879 
00883             KFbxVector4 GetMinDampStrength() const;
00884 
00885 
00894             void SetMaxDampStrength(KFbxVector4 pMaxDampStrength);
00895 
00899             KFbxVector4 GetMaxDampStrength() const;
00900 
00906             void SetPreferedAngle(KFbxVector4 pPreferedAngle);
00907 
00911             KFbxVector4 GetPreferedAngle() const;
00912 
00918             void SetRotationOffset(EPivotSet pPivotSet, KFbxVector4 pVector);
00919 
00925             KFbxVector4& GetRotationOffset(EPivotSet pPivotSet) const;
00926 
00933             void SetRotationPivot(EPivotSet pPivotSet, KFbxVector4 pVector);
00934 
00941             KFbxVector4& GetRotationPivot(EPivotSet pPivotSet) const;
00942 
00949             void SetPreRotation(EPivotSet pPivotSet, KFbxVector4 pVector);
00950 
00957             KFbxVector4& GetPreRotation(EPivotSet pPivotSet) const;
00958 
00965             void SetPostRotation(EPivotSet pPivotSet, KFbxVector4 pVector);
00966 
00973             KFbxVector4& GetPostRotation(EPivotSet pPivotSet) const;
00974 
00980             void SetScalingOffset(EPivotSet pPivotSet, KFbxVector4 pVector);
00981 
00987             KFbxVector4& GetScalingOffset(EPivotSet pPivotSet) const;
00988 
00995             void SetScalingPivot(EPivotSet pPivotSet, KFbxVector4 pVector);
00996 
01003             KFbxVector4& GetScalingPivot(EPivotSet pPivotSet) const;
01004 
01013             void SetGeometricTranslation(EPivotSet pPivotSet, KFbxVector4 pVector);
01014 
01019             KFbxVector4 GetGeometricTranslation(EPivotSet pPivotSet) const;
01020 
01029             void SetGeometricRotation(EPivotSet pPivotSet, KFbxVector4 pVector);
01030 
01035             KFbxVector4 GetGeometricRotation(EPivotSet pPivotSet) const;
01036 
01045             void SetGeometricScaling(EPivotSet pPivotSet, KFbxVector4 pVector);
01046 
01051             KFbxVector4 GetGeometricScaling(EPivotSet pPivotSet) const;
01052 
01058             void ResetPivotSet( KFbxNode::EPivotSet pPivotSet );
01059 
01082             void ConvertPivotAnimation(EPivotSet pConversionTarget, double pFrameRate, bool pKeyReduce=true);
01083             
01106             void ConvertPivotAnimationRecursive(const char * pAnimStackName,
01107                 EPivotSet pConversionTarget, double pFrameRate, bool pKeyReduce=true);
01108 
01120             void ResetPivotSetAndConvertAnimation( double pFrameRate=30., bool pKeyReduce=false, bool pToNodeCenter=true, bool pForceResetLimits = false );
01121 
01125             void SetRotationPivotAsCenterRecursive(KFbxVector4 pParentGeometricOffset = KFbxVector4());
01127 
01141 
01146             K_DEPRECATED KFbxVector4& GetLocalTFromDefault(bool pApplyLimits = false);
01150             K_DEPRECATED KFbxVector4& GetLocalTFromDefaultTake(bool pApplyLimits = false);
01151 
01156             K_DEPRECATED KFbxVector4& GetLocalRFromDefault(bool pApplyLimits = false);
01160             K_DEPRECATED KFbxVector4& GetLocalRFromDefaultTake(bool pApplyLimits = false);
01161 
01166             K_DEPRECATED KFbxVector4& GetLocalSFromDefault(bool pApplyLimits = false);
01170             K_DEPRECATED KFbxVector4& GetLocalSFromDefaultTake(bool pApplyLimits = false);
01171 
01177             K_DEPRECATED KFbxXMatrix& GetGlobalFromDefault(EPivotSet pPivotSet = eSOURCE_SET, bool pApplyTarget = false);
01182             K_DEPRECATED KFbxXMatrix& GetGlobalFromDefaultTake(EPivotSet pPivotSet = eSOURCE_SET, bool pApplyTarget = false);
01183 
01188             K_DEPRECATED KFbxVector4& GetLocalTFromCurrentTake(KTime pTime, bool pApplyLimits = false);
01189 
01194             K_DEPRECATED KFbxVector4& GetLocalRFromCurrentTake(KTime pTime, bool pApplyLimits = false);
01195 
01200             K_DEPRECATED KFbxVector4& GetLocalSFromCurrentTake(KTime pTime, bool pApplyLimits = false);
01201 
01207             K_DEPRECATED KFbxXMatrix& GetGlobalFromCurrentTake(KTime pTime, EPivotSet pPivotSet = eSOURCE_SET, bool pApplyTarget = false);
01209 
01214 
01218             int GetCharacterLinkCount() const;
01219 
01232             bool GetCharacterLink(int pIndex, KFbxCharacter** pCharacter, int* pCharacterLinkType, int* pNodeId, int *pNodeSubId);
01233 
01245             int FindCharacterLink(KFbxCharacter* pCharacter, int pCharacterLinkType, int pNodeId, int pNodeSubId) const;
01247 
01269         virtual bool GetAnimationInterval(KTime& pStart, KTime& pStop, KFbxAnimStack* pAnimStack = NULL, int pAnimLayerId = 0);
01270 
01271 
01276 
01281             int AddMaterial( KFbxSurfaceMaterial* pMaterial );
01282 
01287             bool RemoveMaterial( KFbxSurfaceMaterial* pMaterial );
01288 
01292             int GetMaterialCount() const;
01293 
01298             KFbxSurfaceMaterial* GetMaterial( int pIndex ) const;
01299 
01302             void RemoveAllMaterials();
01303 
01309             int GetMaterialIndex( char const* pName ) const;
01310 
01312 
01318 
01322             KError& GetError();
01323 
01326             typedef enum
01327             {
01328                 eTAKE_NODE_ERROR,           
01329                 eNODE_NAME_CLASH,           
01330                 eMATERIAL_NAME_CLASH,       
01331                 eTEXTURE_NAME_CLASH,        
01332                 eVIDEO_NAME_CLASH,          
01333                 eNOT_A_CHILD,               
01334                 eCYCLIC_GRAPH,              
01335                 eINDEX_OUT_OF_RANGE,        
01336                 eATTRIBUTE_NOT_CONNECTED,   
01337                 eERROR_COUNT
01338             } EError;
01339 
01343             EError GetLastErrorID() const;
01344 
01348             const char* GetLastErrorString() const;
01349 
01351 
01352 
01357 
01365             KFbxTypedProperty<fbxDouble3>               LclTranslation;
01366 
01374             KFbxTypedProperty<fbxDouble3>               LclRotation;
01375 
01383             KFbxTypedProperty<fbxDouble3>               LclScaling;
01384 
01392             KFbxTypedProperty<KFbxXMatrix>              GlobalTransform;
01393 
01401             KFbxTypedProperty<fbxDouble1>               Visibility;
01402             
01409             KFbxTypedProperty<fbxDouble1>               Weight;
01410 
01417             KFbxTypedProperty<fbxDouble3>               PoleVector;
01418 
01425             KFbxTypedProperty<fbxDouble1>               Twist;
01426 
01433             KFbxTypedProperty<fbxDouble3>               WorldUpVector;
01434 
01441             KFbxTypedProperty<fbxDouble3>               UpVector;
01442 
01449             KFbxTypedProperty<fbxDouble3>               AimVector;
01450 
01458             KFbxTypedProperty<fbxBool1>                 QuaternionInterpolate;
01459 
01467             KFbxTypedProperty<fbxDouble3>               RotationOffset;
01468 
01476             KFbxTypedProperty<fbxDouble3>               RotationPivot;
01477  
01485             KFbxTypedProperty<fbxDouble3>               ScalingOffset;
01486 
01494             KFbxTypedProperty<fbxDouble3>               ScalingPivot;
01495 
01503             KFbxTypedProperty<fbxBool1>                 TranslationActive;
01504 
01511             KFbxTypedProperty<fbxDouble3>               Translation;
01512 
01520             KFbxTypedProperty<fbxDouble3>               TranslationMin;
01521 
01529             KFbxTypedProperty<fbxDouble3>               TranslationMax;
01530 
01538             KFbxTypedProperty<fbxBool1>                 TranslationMinX;
01539 
01547             KFbxTypedProperty<fbxBool1>                 TranslationMinY;
01548 
01556             KFbxTypedProperty<fbxBool1>                 TranslationMinZ;
01557 
01565             KFbxTypedProperty<fbxBool1>                 TranslationMaxX;
01566 
01574             KFbxTypedProperty<fbxBool1>                 TranslationMaxY;
01575 
01583             KFbxTypedProperty<fbxBool1>                 TranslationMaxZ;
01584 
01592             KFbxTypedProperty<ERotationOrder>           RotationOrder;
01593 
01601             KFbxTypedProperty<fbxBool1>                 RotationSpaceForLimitOnly;
01602 
01610             KFbxTypedProperty<fbxDouble1>               RotationStiffnessX;
01611 
01619             KFbxTypedProperty<fbxDouble1>               RotationStiffnessY;
01620 
01628             KFbxTypedProperty<fbxDouble1>               RotationStiffnessZ;
01629 
01637             KFbxTypedProperty<fbxDouble1>               AxisLen;
01638          
01646             KFbxTypedProperty<fbxDouble3>               PreRotation;
01647 
01655             KFbxTypedProperty<fbxDouble3>               PostRotation;
01656 
01664             KFbxTypedProperty<fbxBool1>                 RotationActive;
01665 
01673             KFbxTypedProperty<fbxDouble3>               RotationMin;
01674 
01682             KFbxTypedProperty<fbxDouble3>               RotationMax;
01683 
01691             KFbxTypedProperty<fbxBool1>                 RotationMinX;
01692 
01700             KFbxTypedProperty<fbxBool1>                 RotationMinY;
01701 
01709             KFbxTypedProperty<fbxBool1>                 RotationMinZ;
01710 
01718             KFbxTypedProperty<fbxBool1>                 RotationMaxX;
01719 
01727             KFbxTypedProperty<fbxBool1>                 RotationMaxY;
01728 
01736             KFbxTypedProperty<fbxBool1>                 RotationMaxZ;
01737 
01745             KFbxTypedProperty<ETransformInheritType>    InheritType;
01746 
01754             KFbxTypedProperty<fbxBool1>                 ScalingActive;
01755 
01762             KFbxTypedProperty<fbxDouble3>               Scaling;
01763 
01771             KFbxTypedProperty<fbxDouble3>               ScalingMin;
01772 
01780             KFbxTypedProperty<fbxDouble3>               ScalingMax;
01781 
01789             KFbxTypedProperty<fbxBool1>                 ScalingMinX;
01790 
01798             KFbxTypedProperty<fbxBool1>                 ScalingMinY;
01799 
01807             KFbxTypedProperty<fbxBool1>                 ScalingMinZ;
01808 
01816             KFbxTypedProperty<fbxBool1>                 ScalingMaxX;
01817 
01825             KFbxTypedProperty<fbxBool1>                 ScalingMaxY;
01826 
01834             KFbxTypedProperty<fbxBool1>                 ScalingMaxZ;
01835 
01843             KFbxTypedProperty<fbxDouble3>               GeometricTranslation;
01844 
01852             KFbxTypedProperty<fbxDouble3>               GeometricRotation;
01853          
01861             KFbxTypedProperty<fbxDouble3>               GeometricScaling;
01862 
01863             // IK Settings
01865 
01873             KFbxTypedProperty<fbxDouble1>               MinDampRangeX;
01874 
01882             KFbxTypedProperty<fbxDouble1>               MinDampRangeY;
01883 
01891             KFbxTypedProperty<fbxDouble1>               MinDampRangeZ;
01892 
01900             KFbxTypedProperty<fbxDouble1>               MaxDampRangeX;
01901 
01909             KFbxTypedProperty<fbxDouble1>               MaxDampRangeY;
01910 
01918             KFbxTypedProperty<fbxDouble1>               MaxDampRangeZ;
01919 
01927             KFbxTypedProperty<fbxDouble1>               MinDampStrengthX;
01928 
01936             KFbxTypedProperty<fbxDouble1>               MinDampStrengthY;
01937 
01945             KFbxTypedProperty<fbxDouble1>               MinDampStrengthZ;
01946 
01954             KFbxTypedProperty<fbxDouble1>               MaxDampStrengthX;
01955 
01963             KFbxTypedProperty<fbxDouble1>               MaxDampStrengthY;
01964 
01972             KFbxTypedProperty<fbxDouble1>               MaxDampStrengthZ;
01973 
01981             KFbxTypedProperty<fbxDouble1>               PreferedAngleX;
01982 
01990             KFbxTypedProperty<fbxDouble1>               PreferedAngleY;
01991 
01999             KFbxTypedProperty<fbxDouble1>               PreferedAngleZ;
02001 
02008             KFbxTypedProperty<fbxReference*>            LookAtProperty;
02009 
02016             KFbxTypedProperty<fbxReference*>            UpVectorProperty;
02017 
02025             KFbxTypedProperty<fbxBool1>                 Show;
02026 
02034             KFbxTypedProperty<fbxBool1>                 NegativePercentShapeSupport;
02035 
02043             KFbxTypedProperty<fbxInteger1>              DefaultAttributeIndex;
02044 
02052             KFbxTypedProperty<fbxBool1>              Freeze;
02053 
02063             KFbxTypedProperty<fbxBool1>              LODBox;
02065 
02066 
02067         #ifndef DOXYGEN_SHOULD_SKIP_THIS
02069         //  WARNING!
02070         //  Anything beyond these lines may not be documented accurately and is
02071         //  subject to change without notice.
02073         public:
02083             void SetMultiLayer(bool pMultiLayer);
02084 
02088             bool GetMultiLayer() const;
02089 
02090             typedef enum
02091             {
02092                 eOLD_MULTI_TAKE,
02093                 eMULTI_TAKE,
02094                 eMONO_TAKE
02095             } EMultiTakeMode;
02096 
02100             void SetMultiTakeMode(EMultiTakeMode pMultiTakeMode);
02101 
02105             EMultiTakeMode GetMultiTakeMode() const;
02107 
02115                 void ForceEvalOfState(bool pGlobal=false);
02116 
02124                 void SetLocalStateFromDefault(bool pRecursive, bool pApplyLimits = false);
02125                 K_DEPRECATED void SetLocalStateFromDefaultTake(bool pRecursive, bool pApplyLimits = false);
02126 
02133                 void SetDefaultFromLocalState(bool pRecursive);
02134                 K_DEPRECATED void SetDefaultTakeFromLocalState(bool pRecursive);
02135 
02146                 void SetLocalStateFromAnim(KTime pTime, bool pRecursive, KFbxAnimStack* pAnimStack, bool pApplyLimits = false);
02147                 K_DEPRECATED void SetLocalStateFromCurrentTake(KTime pTime, bool pRecursive,bool pApplyLimits = false);
02148 
02158                 void SetAnimFromLocalState(KTime pTime, bool pRecursive, KFbxAnimStack* pAnimStack);
02159                 K_DEPRECATED void SetCurrentTakeFromLocalState(KTime pTime, bool pRecursive);
02160 
02168                 void ComputeGlobalState(kUInt pUpdateId, bool pRecursive, EPivotSet pPivotSet = eSOURCE_SET, bool pApplyTarget = false);
02169 
02175                 void ComputeLocalState(kUInt pUpdateId, bool pRecursive);
02176 
02180                 void SetGlobalState(const KFbxXMatrix& pGX);
02181 
02185                 KFbxXMatrix& GetGlobalState();
02186 
02192                 void SetLocalState(const KFbxVector4& pLT,const KFbxVector4& pLR, const KFbxVector4& pLS);
02193 
02199                 void GetLocalState(KFbxVector4& pLT, KFbxVector4& pLR, KFbxVector4& pLS);
02200 
02205                 void SetGlobalStateId(kUInt pUpdateId, bool pRecursive);
02206 
02210                 kUInt GetGlobalStateId() const;
02211 
02216                 void SetLocalStateId(kUInt pUpdateId, bool pRecursive);
02217 
02221                 kUInt GetLocalStateId() const;
02223 
02227             KFbxNodeLimits& GetLimits();
02228 
02235             virtual KFbxObject* Clone(KFbxObject* pContainer, KFbxObject::ECloneType pCloneType = eDEEP_CLONE) const;
02236 
02242             virtual bool PropertyNotify(eFbxPropertyNotify pType, KFbxProperty* pProperty);
02243 
02244         protected:
02245             KFbxNode(KFbxSdkManager& pManager, char const* pName);
02246             
02247             virtual void Construct(const KFbxNode* pFrom);
02248             virtual bool ConstructProperties(bool pForceSet);
02249             virtual void Destruct(bool pRecursive, bool pDependents);
02250 
02251             void    Reset();
02252             bool    GetAnimationIntervalRecursive(KTime& pStart, KTime& pStop, KFbxAnimLayer* pAnimLayer);
02253 
02254         private:
02256             void    ResetLimitsRecursive(KFbxNode* pNode);
02257 
02258             // a wrapper function for ConvertPivotAnimationRecursive 
02259             // to avoid stack over flow when exporting scene with deep hierarchy
02260             void ConvertPivotAnimationRecursiveWrapper(const char * pAnimStackName,
02261                 EPivotSet pConversionTarget, double pFrameRate, bool pKeyReduce );
02262 
02263         public:
02264             virtual KFbxObject& Copy(const KFbxObject& pObject);
02265 
02269             void    AddChildName(char* pChildName);
02270 
02275             char*   GetChildName(kUInt pIndex) const;
02276 
02280             kUInt   GetChildNameCount() const;
02281 
02284             void UpdatePivotsAndLimitsFromProperties();
02285             
02288             void UpdatePropertiesFromPivotsAndLimits();
02289 
02293             void SetRotationActiveProperty(bool pVal);
02294 
02298             void PivotSetToMBTransform(EPivotSet pPivotSet);
02299 
02300             KFbxXMatrix         GetLXFromLocalState( bool pT, bool pR, bool pS, bool pSoff );
02301 
02305             virtual KString     GetTypeName() const;
02306 
02310             virtual KStringList GetTypeFlags() const;
02311 
02312         protected:
02313             KMBTransform*       GetMBTransform();
02314 
02315             // begin character related members
02316             int AddCharacterLink(KFbxCharacter* pCharacter, int pCharacterLinkType, int pNodeId, int pNodeSubId);
02317             int RemoveCharacterLink(KFbxCharacter* pCharacter, int pCharacterLinkType, int pNodeId, int pNodeSubId);
02318             // This class must be declared public, otherwise gcc complains on typedef below.
02319 
02320         private:
02321             KFbxNode& DeepCopy( KFbxNode const& pNode, bool pCopyNodeAttribute );
02322 
02323         public:
02324             // Unsupported parameters in the FBX SDK
02325             // These are declared but not accessible
02326             // They are used to keep imported and exported data identical
02327             typedef enum { eCULLING_OFF, eCULLING_ON_CCW, eCULLING_ON_CW } ECullingType;
02328             ECullingType                mCullingType;
02329 
02330             bool                        mCorrectInheritType;
02331 
02332         protected:
02333             KFbxNode_internal*          mPH;
02334             mutable KError              mError;
02335 
02336             friend class KFbxScene;
02337             friend class KFbxGeometry;
02338             friend class KFbxLight;
02339             friend class KFbxNodeFinderDuplicateName;
02340             friend class KFbxCharacter;
02341             friend class KFbxControlSet;
02342             friend class KFbxNode_internal;
02343             friend class KFbxSurfaceMaterial_internal;
02344             friend class KFbxTexture_internal;
02345             friend class KFbxVideo_internal;
02346 
02347             friend class KFbxNodeLimits;
02348             friend class KFbxLimits;
02349             friend class KFbxNodeEvalState;
02350         #endif // #ifndef DOXYGEN_SHOULD_SKIP_THIS
02351     };
02352 
02353     typedef KFbxNode* HKFbxNode;
02354     typedef class KFBX_DLL KArrayTemplate<KFbxNode*> KArrayKFbxNode;
02355 
02356     inline EFbxType FbxTypeOf( ERotationOrder const &pItem )            { return eENUM; }
02357     inline EFbxType FbxTypeOf( ETransformInheritType const &pItem )     { return eENUM; }
02358 
02359 #include <fbxfilesdk/fbxfilesdk_nsend.h>
02360 
02361 #endif // FBXFILESDK_KFBXPLUGINS_KFBXNODE_H
02362