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 - 2009 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 KFbxCameraStereo;
00079     class KFbxCameraSwitcher;
00080     class KFbxLight;
00081     class KFbxOpticalReference;
00082     class KFbxCharacter;
00083     class KFbxNode_internal;
00084     class KFbxSurfaceMaterial;
00085     class KFbxSubdiv;
00086 
00099     class KFBX_DLL KFbxNode : public KFbxTakeNodeContainer
00100     {
00101         KFBXOBJECT_DECLARE(KFbxNode,KFbxTakeNodeContainer);
00102         public:
00108 
00112             KFbxNode* GetParent();
00113             KFbxNode const* GetParent() const;
00114 
00128             bool AddChild(KFbxNode* pNode);
00129 
00134             KFbxNode* RemoveChild(KFbxNode* pNode);
00135 
00140             int GetChildCount(bool pRecursive = false) const;
00141 
00147             KFbxNode* GetChild(int pIndex);
00148 
00154             KFbxNode const* GetChild(int pIndex) const;
00155 
00162             KFbxNode* FindChild(char const* pName, bool pRecursive = true, bool pInitial = false);
00163 
00165 
00184 
00188             void SetTarget(KFbxNode* pNode);
00189 
00193             KFbxNode* GetTarget() const;
00194 
00198             void SetPostTargetRotation(KFbxVector4 pVector);
00199 
00203             KFbxVector4 GetPostTargetRotation() const;
00204 
00208             void SetTargetUp(KFbxNode* pNode);
00209 
00213             KFbxNode* GetTargetUp() const;
00214 
00218             void SetTargetUpVector(KFbxVector4 pVector);
00219 
00223             KFbxVector4 GetTargetUpVector() const;
00224 
00226 
00227 
00232         public:
00233             virtual kFbxUpdateId GetUpdateId(eFbxUpdateIdType pUpdateId=eUpdateId_Object) const;
00235 
00243             void SetVisibility(bool pIsVisible);
00244 
00248             bool GetVisibility() const;
00249 
00258             typedef enum
00259             {
00260                 eHARD_SHADING,
00261                 eWIRE_FRAME,
00262                 eFLAT_SHADING,
00263                 eLIGHT_SHADING,
00264                 eTEXTURE_SHADING,
00265                 eLIGHT_TEXTURE_SHADING
00266             } EShadingMode;
00267 
00271             void SetShadingMode(EShadingMode pShadingMode);
00272 
00276             EShadingMode GetShadingMode() const;
00277 
00281             void SetMultiLayer(bool pMultiLayer);
00282 
00286             bool GetMultiLayer() const;
00287 
00293             typedef enum
00294             {
00295                 eOLD_MULTI_TAKE,
00296                 eMULTI_TAKE,
00297                 eMONO_TAKE
00298             } EMultiTakeMode;
00299 
00303             void SetMultiTakeMode(EMultiTakeMode pMultiTakeMode);
00304 
00308             EMultiTakeMode GetMultiTakeMode() const;
00310 
00315 
00325             KFbxNodeAttribute* SetNodeAttribute(KFbxNodeAttribute* pNodeAttribute);
00326 
00331             KFbxNodeAttribute* GetNodeAttribute();
00332 
00337             KFbxNodeAttribute const* GetNodeAttribute() const;
00338 
00342             int GetNodeAttributeCount() const;
00343 
00348             int GetDefaultNodeAttributeIndex() const;
00349 
00356             bool SetDefaultNodeAttributeIndex(int pIndex);
00357 
00364             KFbxNodeAttribute* GetNodeAttributeByIndex(int pIndex);
00365 
00372             KFbxNodeAttribute const* GetNodeAttributeByIndex(int pIndex) const;
00373 
00380             int GetNodeAttributeIndex(KFbxNodeAttribute* pNodeAttribute) const;
00381 
00389             bool AddNodeAttribute(KFbxNodeAttribute* pNodeAttribute);
00390 
00397             KFbxNodeAttribute* RemoveNodeAttribute(KFbxNodeAttribute* pNodeAttribute);
00398 
00405             KFbxNodeAttribute* RemoveNodeAttributeByIndex(int pIndex);
00406 
00411             KFbxLodGroup* GetLodGroup();
00412 
00417             KFbxNull* GetNull();
00418 
00423             KFbxMarker* GetMarker();
00424 
00429             KFbxSkeleton* GetSkeleton();
00430 
00436             KFbxGeometry* GetGeometry();
00437 
00442             KFbxMesh* GetMesh();
00443 
00448             KFbxNurb* GetNurb();
00449 
00454             KFbxNurbsSurface* GetNurbsSurface();
00455 
00460             KFbxNurbsCurve* GetNurbsCurve();
00461 
00466             KFbxTrimNurbsSurface* GetTrimNurbsSurface();
00467 
00472             KFbxSubdiv* GetSubdiv();
00473 
00478             KFbxPatch* GetPatch();
00479 
00484             KFbxCamera* GetCamera();
00485 
00491             KFbxCameraSwitcher* GetCameraSwitcher();
00492 
00497             KFbxLight* GetLight();
00498 
00504             KFbxOpticalReference* GetOpticalReference();
00506 
00513 
00517             void SetDefaultT(const KFbxVector4& pT);
00518 
00523             KFbxVector4& GetDefaultT(KFbxVector4& pT);
00524 
00528             void SetDefaultR(const KFbxVector4& pR);
00529 
00534             KFbxVector4& GetDefaultR(KFbxVector4& pR);
00535 
00539             void SetDefaultS(const KFbxVector4& pS);
00540 
00545             KFbxVector4& GetDefaultS(KFbxVector4& pS);
00546 
00554             void SetDefaultVisibility(double pVisibility);
00555 
00563             double GetDefaultVisibility();
00564 
00566 
00580             void SetTransformationInheritType(ETransformInheritType pInheritType);
00581 
00585             void GetTransformationInheritType(ETransformInheritType& pInheritType);
00587 
00588 
00597 
00602             typedef enum
00603             {
00604                 eSOURCE_SET,
00605                 eDESTINATION_SET
00606             } EPivotSet;
00607 
00612             typedef enum
00613             {
00614                 ePIVOT_STATE_ACTIVE,
00615                 ePIVOT_STATE_REFERENCE
00616             } EPivotState;
00617 
00624             void SetPivotState(EPivotSet pPivotSet, EPivotState pPivotState);
00625 
00632             void GetPivotState(EPivotSet pPivotSet, EPivotState& pPivotState);
00633 
00639             void SetRotationOrder(EPivotSet pPivotSet, ERotationOrder pRotationOrder);
00640 
00645             void GetRotationOrder(EPivotSet pPivotSet, ERotationOrder& pRotationOrder);
00646 
00655             void SetUseRotationSpaceForLimitOnly(EPivotSet pPivotSet, bool pUseForLimitOnly);
00656 
00661             bool GetUseRotationSpaceForLimitOnly(EPivotSet pPivotSet);
00662 
00668             void SetRotationActive(bool pVal);
00669 
00673             bool GetRotationActive();
00674 
00679             void SetUseQuaternionForInterpolation(EPivotSet pPivotSet, bool pUseQuaternion);
00680 
00685             bool GetUseQuaternionForInterpolation(EPivotSet pPivotSet) const;
00686 
00695             void SetRotationStiffness(KFbxVector4 pRotationStiffness);
00696 
00700             KFbxVector4 GetRotationStiffness();
00701 
00710             void SetMinDampRange(KFbxVector4 pMinDampRange);
00711 
00715             KFbxVector4 GetMinDampRange();
00716 
00717 
00726             void SetMaxDampRange(KFbxVector4 pMaxDampRange);
00727 
00731             KFbxVector4 GetMaxDampRange();
00732 
00733 
00742             void SetMinDampStrength(KFbxVector4 pMinDampStrength);
00743 
00747             KFbxVector4 GetMinDampStrength();
00748 
00749 
00758             void SetMaxDampStrength(KFbxVector4 pMaxDampStrength);
00759 
00763             KFbxVector4 GetMaxDampStrength();
00764 
00770             void SetPreferedAngle(KFbxVector4 pPreferedAngle);
00771 
00775             KFbxVector4 GetPreferedAngle();
00776 
00782             void SetRotationOffset(EPivotSet pPivotSet, KFbxVector4 pVector);
00783 
00789             KFbxVector4& GetRotationOffset(EPivotSet pPivotSet) const;
00790 
00797             void SetRotationPivot(EPivotSet pPivotSet, KFbxVector4 pVector);
00798 
00805             KFbxVector4& GetRotationPivot(EPivotSet pPivotSet) const;
00806 
00813             void SetPreRotation(EPivotSet pPivotSet, KFbxVector4 pVector);
00814 
00821             KFbxVector4& GetPreRotation(EPivotSet pPivotSet) const;
00822 
00829             void SetPostRotation(EPivotSet pPivotSet, KFbxVector4 pVector);
00830 
00837             KFbxVector4& GetPostRotation(EPivotSet pPivotSet) const;
00838 
00844             void SetScalingOffset(EPivotSet pPivotSet, KFbxVector4 pVector);
00845 
00851             KFbxVector4& GetScalingOffset(EPivotSet pPivotSet) const;
00852 
00860             void SetScalingPivot(EPivotSet pPivotSet, KFbxVector4 pVector);
00861 
00868             KFbxVector4& GetScalingPivot(EPivotSet pPivotSet) const;
00869 
00878             void SetGeometricTranslation(EPivotSet pPivotSet, KFbxVector4 pVector);
00879 
00884             KFbxVector4 GetGeometricTranslation(EPivotSet pPivotSet) const;
00885 
00894             void SetGeometricRotation(EPivotSet pPivotSet, KFbxVector4 pVector);
00895 
00900             KFbxVector4 GetGeometricRotation(EPivotSet pPivotSet);
00901 
00910             void SetGeometricScaling(EPivotSet pPivotSet, KFbxVector4 pVector);
00911 
00916             KFbxVector4 GetGeometricScaling(EPivotSet pPivotSet);
00917 
00926             void ConvertPivotAnimation(EPivotSet pConversionTarget, double pFrameRate, bool pKeyReduce=true);
00927 
00932             void ResetPivotSet( KFbxNode::EPivotSet pPivotSet );
00933             
00942             void ConvertPivotAnimationRecursive(EPivotSet pConversionTarget, double pFrameRate, bool pKeyReduce=true);
00943 
00951             void ResetPivotSetAndConvertAnimation( double pFrameRate=30., bool pKeyReduce=false, bool pToNodeCenter=true );
00952 
00956             void SetRotationPivotAsCenterRecursive(KFbxVector4 pParentGeometricOffset = KFbxVector4());            
00958 
00963 
00968             KFbxVector4& GetLocalTFromDefaultTake(bool pApplyLimits = false);
00969 
00974             KFbxVector4& GetLocalRFromDefaultTake(bool pApplyLimits = false);
00975 
00980             KFbxVector4& GetLocalSFromDefaultTake(bool pApplyLimits = false);
00981 
00987             KFbxXMatrix& GetGlobalFromDefaultTake(EPivotSet pPivotSet = eSOURCE_SET, bool pApplyTarget = false);
00988 
00994             KFbxVector4& GetLocalTFromCurrentTake(KTime pTime, bool pApplyLimits = false);
00995 
01001             KFbxVector4& GetLocalRFromCurrentTake(KTime pTime, bool pApplyLimits = false);
01002 
01008             KFbxVector4& GetLocalSFromCurrentTake(KTime pTime, bool pApplyLimits = false);
01009 
01016             KFbxXMatrix& GetGlobalFromCurrentTake(KTime pTime, EPivotSet pPivotSet = eSOURCE_SET, bool pApplyTarget = false);
01018 
01023 
01027             int GetCharacterLinkCount();
01028 
01041             bool GetCharacterLink(int pIndex, KFbxCharacter** pCharacter, int* pCharacterLinkType, int* pNodeId, int *pNodeSubId);
01042 
01053             int FindCharacterLink(KFbxCharacter* pCharacter, int pCharacterLinkType, int pNodeId, int pNodeSubId);
01055 
01067         virtual bool GetAnimationInterval(KTime& pStart, KTime& pStop);
01068 
01069 
01074 
01079             int AddMaterial( KFbxSurfaceMaterial* pMaterial );
01080 
01085             bool RemoveMaterial( KFbxSurfaceMaterial* pMaterial );
01086 
01090             int GetMaterialCount() const;
01091 
01096             KFbxSurfaceMaterial* GetMaterial( int pIndex ) const;
01097 
01100             void RemoveAllMaterials();
01101 
01107             int GetMaterialIndex( char const* pName ) const;
01108 
01110 
01116 
01120             KError& GetError();
01121 
01135             typedef enum
01136             {
01137                 eTAKE_NODE_ERROR,
01138                 eNODE_NAME_CLASH,
01139                 eMATERIAL_NAME_CLASH,
01140                 eTEXTURE_NAME_CLASH,
01141                 eVIDEO_NAME_CLASH,
01142                 eNOT_A_CHILD,
01143                 eCYCLIC_GRAPH,
01144                 eINDEX_OUT_OF_RANGE,
01145                 eATTRIBUTE_NOT_CONNECTED,
01146                 eERROR_COUNT
01147             } EError;
01148 
01152             EError GetLastErrorID() const;
01153 
01157             const char* GetLastErrorString() const;
01158 
01160 
01161 
01166 
01174             KFbxTypedProperty<fbxDouble3>               LclTranslation;
01175 
01183             KFbxTypedProperty<fbxDouble3>               LclRotation;
01184 
01192             KFbxTypedProperty<fbxDouble3>               LclScaling;
01193 
01201             KFbxTypedProperty<KFbxXMatrix>              GlobalTransform;
01202 
01210             KFbxTypedProperty<fbxDouble1>               Visibility;
01211             
01218             KFbxTypedProperty<fbxDouble1>               Weight;
01219 
01226             KFbxTypedProperty<fbxDouble3>               PoleVector;
01227 
01234             KFbxTypedProperty<fbxDouble1>               Twist;
01235 
01242             KFbxTypedProperty<fbxDouble3>               WorldUpVector;
01243 
01250             KFbxTypedProperty<fbxDouble3>               UpVector;
01251 
01258             KFbxTypedProperty<fbxDouble3>               AimVector;
01259 
01267             KFbxTypedProperty<fbxBool1>                 QuaternionInterpolate;
01268 
01276             KFbxTypedProperty<fbxDouble3>               RotationOffset;
01277 
01285             KFbxTypedProperty<fbxDouble3>               RotationPivot;
01286  
01294             KFbxTypedProperty<fbxDouble3>               ScalingOffset;
01295 
01303             KFbxTypedProperty<fbxDouble3>               ScalingPivot;
01304 
01312             KFbxTypedProperty<fbxBool1>                 TranslationActive;
01313 
01320             KFbxTypedProperty<fbxDouble3>               Translation;
01321 
01329             KFbxTypedProperty<fbxDouble3>               TranslationMin;
01330 
01338             KFbxTypedProperty<fbxDouble3>               TranslationMax;
01339 
01347             KFbxTypedProperty<fbxBool1>                 TranslationMinX;
01348 
01356             KFbxTypedProperty<fbxBool1>                 TranslationMinY;
01357 
01365             KFbxTypedProperty<fbxBool1>                 TranslationMinZ;
01366 
01374             KFbxTypedProperty<fbxBool1>                 TranslationMaxX;
01375 
01383             KFbxTypedProperty<fbxBool1>                 TranslationMaxY;
01384 
01392             KFbxTypedProperty<fbxBool1>                 TranslationMaxZ;
01393 
01401             KFbxTypedProperty<ERotationOrder>           RotationOrder;
01402 
01410             KFbxTypedProperty<fbxBool1>                 RotationSpaceForLimitOnly;
01411 
01419             KFbxTypedProperty<fbxDouble1>               RotationStiffnessX;
01420 
01428             KFbxTypedProperty<fbxDouble1>               RotationStiffnessY;
01429 
01437             KFbxTypedProperty<fbxDouble1>               RotationStiffnessZ;
01438 
01446             KFbxTypedProperty<fbxDouble1>               AxisLen;
01447          
01455             KFbxTypedProperty<fbxDouble3>               PreRotation;
01456 
01464             KFbxTypedProperty<fbxDouble3>               PostRotation;
01465 
01473             KFbxTypedProperty<fbxBool1>                 RotationActive;
01474 
01482             KFbxTypedProperty<fbxDouble3>               RotationMin;
01483 
01491             KFbxTypedProperty<fbxDouble3>               RotationMax;
01492 
01500             KFbxTypedProperty<fbxBool1>                 RotationMinX;
01501 
01509             KFbxTypedProperty<fbxBool1>                 RotationMinY;
01510 
01518             KFbxTypedProperty<fbxBool1>                 RotationMinZ;
01519 
01527             KFbxTypedProperty<fbxBool1>                 RotationMaxX;
01528 
01536             KFbxTypedProperty<fbxBool1>                 RotationMaxY;
01537 
01545             KFbxTypedProperty<fbxBool1>                 RotationMaxZ;
01546 
01554             KFbxTypedProperty<ETransformInheritType>    InheritType;
01555 
01563             KFbxTypedProperty<fbxBool1>                 ScalingActive;
01564 
01571             KFbxTypedProperty<fbxDouble3>               Scaling;
01572 
01580             KFbxTypedProperty<fbxDouble3>               ScalingMin;
01581 
01589             KFbxTypedProperty<fbxDouble3>               ScalingMax;
01590 
01598             KFbxTypedProperty<fbxBool1>                 ScalingMinX;
01599 
01607             KFbxTypedProperty<fbxBool1>                 ScalingMinY;
01608 
01616             KFbxTypedProperty<fbxBool1>                 ScalingMinZ;
01617 
01625             KFbxTypedProperty<fbxBool1>                 ScalingMaxX;
01626 
01634             KFbxTypedProperty<fbxBool1>                 ScalingMaxY;
01635 
01643             KFbxTypedProperty<fbxBool1>                 ScalingMaxZ;
01644 
01652             KFbxTypedProperty<fbxDouble3>               GeometricTranslation;
01653 
01661             KFbxTypedProperty<fbxDouble3>               GeometricRotation;
01662          
01670             KFbxTypedProperty<fbxDouble3>               GeometricScaling;
01671 
01672             // Ik Settings
01674 
01682             KFbxTypedProperty<fbxDouble1>               MinDampRangeX;
01683 
01691             KFbxTypedProperty<fbxDouble1>               MinDampRangeY;
01692 
01700             KFbxTypedProperty<fbxDouble1>               MinDampRangeZ;
01701 
01709             KFbxTypedProperty<fbxDouble1>               MaxDampRangeX;
01710 
01718             KFbxTypedProperty<fbxDouble1>               MaxDampRangeY;
01719 
01727             KFbxTypedProperty<fbxDouble1>               MaxDampRangeZ;
01728 
01736             KFbxTypedProperty<fbxDouble1>               MinDampStrengthX;
01737 
01745             KFbxTypedProperty<fbxDouble1>               MinDampStrengthY;
01746 
01754             KFbxTypedProperty<fbxDouble1>               MinDampStrengthZ;
01755 
01763             KFbxTypedProperty<fbxDouble1>               MaxDampStrengthX;
01764 
01772             KFbxTypedProperty<fbxDouble1>               MaxDampStrengthY;
01773 
01781             KFbxTypedProperty<fbxDouble1>               MaxDampStrengthZ;
01782 
01790             KFbxTypedProperty<fbxDouble1>               PreferedAngleX;
01791 
01799             KFbxTypedProperty<fbxDouble1>               PreferedAngleY;
01800 
01808             KFbxTypedProperty<fbxDouble1>               PreferedAngleZ;
01810 
01817             KFbxTypedProperty<fbxReference*>            LookAtProperty;
01818 
01825             KFbxTypedProperty<fbxReference*>            UpVectorProperty;
01826 
01834             KFbxTypedProperty<fbxBool1>                 Show;
01835 
01843             KFbxTypedProperty<fbxBool1>                 NegativePercentShapeSupport;
01844 
01852             KFbxTypedProperty<fbxInteger1>              DefaultAttributeIndex;
01853 
01861             KFbxTypedProperty<fbxBool1>              Freeze;
01862 
01872             KFbxTypedProperty<fbxBool1>              LODBox;
01874 
01875 
01876         #ifndef DOXYGEN_SHOULD_SKIP_THIS
01878         //  WARNING!
01879         //  Anything beyond these lines may not be documented accurately and is
01880         //  subject to change without notice.
01882         public:
01887 
01894                 void SetLocalStateFromDefaultTake(bool pRecursive, bool pApplyLimits = false);
01895 
01900                 void SetDefaultTakeFromLocalState(bool pRecursive);
01901 
01908                 void SetLocalStateFromCurrentTake(KTime pTime, bool pRecursive,bool pApplyLimits = false);
01909 
01915                 void SetCurrentTakeFromLocalState(KTime pTime, bool pRecursive);
01916 
01923                 void ComputeGlobalState(kUInt pUpdateId, bool pRecursive, EPivotSet pPivotSet = eSOURCE_SET, bool pApplyTarget = false);
01924 
01930                 void ComputeLocalState(kUInt pUpdateId, bool pRecursive);
01931 
01935                 void SetGlobalState(const KFbxXMatrix& pGX);
01936 
01940                 KFbxXMatrix& GetGlobalState();
01941 
01945                 void SetLocalState(const KFbxVector4& pLT,const KFbxVector4& pLR, const KFbxVector4& pLS);
01946 
01952                 void GetLocalState(KFbxVector4& pLT, KFbxVector4& pLR, KFbxVector4& pLS);
01953 
01958                 void SetGlobalStateId(kUInt pUpdateId, bool pRecursive);
01959 
01963                 kUInt GetGlobalStateId();
01964 
01969                 void SetLocalStateId(kUInt pUpdateId, bool pRecursive);
01970 
01974                 kUInt GetLocalStateId();
01976 
01980             KFbxNodeLimits& GetLimits();
01981 
01982 
01989             virtual KFbxObject* Clone(KFbxObject* pContainer, KFbxObject::ECloneType pCloneType = eDEEP_CLONE) const;
01990 
01996             virtual bool PropertyNotify(eFbxPropertyNotify pType, KFbxProperty* pProperty);
01997 
01998         protected:
01999             KFbxNode(KFbxSdkManager& pManager, char const* pName);
02000             
02001             virtual void Construct(const KFbxNode* pFrom);
02002             virtual bool ConstructProperties(bool pForceSet);
02003             virtual void Destruct(bool pRecursive, bool pDependents);
02004 
02006             KFbxNode& operator=(KFbxNode const& pNode);
02007 
02008             void    Reset();
02009             bool    GetAnimationIntervalRecursive(KTime& pStart, KTime& pStop);
02010 
02011         public:
02012 
02016             void    AddChildName(char* pChildName);
02017 
02022             char*   GetChildName(kUInt pIndex);
02023 
02027             kUInt   GetChildNameCount();
02028 
02033             virtual bool SetCurrentTakeNode(int pIndex);
02034 
02039             virtual bool SetCurrentTakeNode(char* pName);
02040 
02043             void UpdatePivotsAndLimitsFromProperties();
02044             
02047             void UpdatePropertiesFromPivotsAndLimits();
02048 
02052             void SetRotationActiveProperty(bool pVal);
02053 
02057             void PivotSetToMBTransform(EPivotSet pPivotSet);
02058 
02059             KFbxXMatrix         GetLXFromLocalState( bool pT, bool pR, bool pS, bool pSoff );
02060 
02064             virtual KString     GetTypeName() const;
02065 
02069             virtual KStringList GetTypeFlags() const;
02070 
02071         protected:
02072             KMBTransform*       GetMBTransform();
02073             void                ComputeTRSLocalFromDefaultTake(bool pApplyLimits = false);
02074             void                ComputeTRSLocalFromCurrentTake(KTime pTime, bool pApplyLimits = false);
02075 
02076             // begin character related members
02077             int AddCharacterLink(KFbxCharacter* pCharacter, int pCharacterLinkType, int pNodeId, int pNodeSubId);
02078             int RemoveCharacterLink(KFbxCharacter* pCharacter, int pCharacterLinkType, int pNodeId, int pNodeSubId);
02079             // This class must be declared public, otherwise gcc complains on typedef below.
02080 
02081         private:
02082             KFbxNode& DeepCopy( KFbxNode const& pNode, bool pCopyNodeAttribute );
02083 
02084         public:
02085             // Unsupported parameters in the FBX SDK
02086             // These are declared but not accessible
02087             // They are used to keep imported and exported data identical
02088             typedef enum { eCULLING_OFF, eCULLING_ON_CCW, eCULLING_ON_CW } ECullingType;
02089             ECullingType                mCullingType;
02090 
02091             bool                        mCorrectInheritType;
02092 
02093         protected:
02094             KFbxNode_internal*          mPH;
02095             mutable KError              mError;
02096 
02097             friend class KFbxScene;
02098             friend class KFbxGeometry;
02099             friend class KFbxLight;
02100             friend class KFbxNodeFinderDuplicateName;
02101             friend class KFbxCharacter;
02102             friend class KFbxControlSet;
02103             friend class KFbxNode_internal;
02104             friend class KFbxSurfaceMaterial_internal;
02105             friend class KFbxTexture_internal;
02106             friend class KFbxVideo_internal;
02107 
02108             friend class KFbxNodeLimits;
02109             friend class KFbxLimits;
02110         #endif // #ifndef DOXYGEN_SHOULD_SKIP_THIS
02111     };
02112 
02113     typedef KFbxNode* HKFbxNode;
02114     typedef class KFBX_DLL KArrayTemplate<KFbxNode*> KArrayKFbxNode;
02115 
02116     inline EFbxType FbxTypeOf( ERotationOrder const &pItem )            { return eENUM; }
02117     inline EFbxType FbxTypeOf( ETransformInheritType const &pItem )     { return eENUM; }
02118 
02119 #include <fbxfilesdk/fbxfilesdk_nsend.h>
02120 
02121 #endif // FBXFILESDK_KFBXPLUGINS_KFBXNODE_H
02122