00001
00004 #ifndef FBXFILESDK_KFBXPLUGINS_KFBXNODE_H
00005 #define FBXFILESDK_KFBXPLUGINS_KFBXNODE_H
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
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
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
02071
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
02259
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
02316 int AddCharacterLink(KFbxCharacter* pCharacter, int pCharacterLinkType, int pNodeId, int pNodeSubId);
02317 int RemoveCharacterLink(KFbxCharacter* pCharacter, int pCharacterLinkType, int pNodeId, int pNodeSubId);
02318
02319
02320 private:
02321 KFbxNode& DeepCopy( KFbxNode const& pNode, bool pCopyNodeAttribute );
02322
02323 public:
02324
02325
02326
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