00001
00004 #ifndef FBXFILESDK_KFBXPLUGINS_KFBXTAKENODECONTAINER_H
00005 #define FBXFILESDK_KFBXPLUGINS_KFBXTAKENODECONTAINER_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
00042 #include <fbxfilesdk/components/kbaselib/kaydaradef_h.h>
00043 #include <fbxfilesdk/components/kbaselib/kaydara.h>
00044
00045 #include <fbxfilesdk/kfbxplugins/kfbxobject.h>
00046
00047 #include <fbxfilesdk/components/kbaselib/klib/karrayul.h>
00048
00049 #include <fbxfilesdk/components/kbaselib/kbaselib_forward.h>
00050
00051 #include <fbxfilesdk/components/kfcurve/kfcurve_forward.h>
00052
00053 #include <fbxfilesdk/fbxfilesdk_nsbegin.h>
00054
00055 class KFbxSdkManager;
00056 class KFbxTakeNode;
00057 class KFbxDefaultTakeCallback;
00058
00073 class KFBX_DLL KFbxTakeNodeContainer : public KFbxObject
00074 {
00075 KFBXOBJECT_DECLARE(KFbxTakeNodeContainer,KFbxObject);
00076
00081 protected:
00082 virtual bool PropertyNotify(eFbxPropertyNotify pType, KFbxProperty* pProperty);
00084
00089 public:
00090
00098 KFbxTakeNode* CreateTakeNode(char* pName);
00099
00107 bool RemoveTakeNode(int pIndex);
00108
00116 bool RemoveTakeNode(char* pName);
00117
00121 int GetTakeNodeCount() const;
00122
00129 K_DEPRECATED KFbxTakeNode* GetTakeNode(int pIndex) const;
00130
00137 char* GetTakeNodeName(int pIndex);
00138
00145 virtual bool SetCurrentTakeNode(int pIndex);
00146
00153 virtual bool SetCurrentTakeNode(char* pName);
00154
00161 K_DEPRECATED KFbxTakeNode* GetDefaultTakeNode();
00162
00169 K_DEPRECATED KFbxTakeNode* GetCurrentTakeNode();
00170
00174 char* GetCurrentTakeNodeName();
00175
00176
00180 int GetCurrentTakeNodeIndex();
00181
00187 virtual bool GetAnimationInterval(KTime& pStart, KTime& pStop);
00188
00190
00191 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00193 // WARNING!
00194
00195
00197 bool IsAnimated();
00198 bool IsChannelAnimated(char* pGroup, char* pSubGroup, char* pName);
00199 bool IsChannelAnimated(char* pGroup, char* pSubGroup, KDataType* pDataType);
00200
00201 void RegisterDefaultTakeCallback(KFbxProperty& pProperty, int pComponentIndex, HKFCurve pFCurve);
00202 protected:
00203
00208 void CreateKFCurveNodeProperty(KFbxProperty* pProperty, const char* pTakeName=NULL);
00209 void CreateKFCurveNodeProperty(KFbxProperty* pProperty, KFbxTakeNode* pTakeNode);
00210 friend class KFbxProperty;
00211 protected:
00212 virtual ~KFbxTakeNodeContainer();
00213 KFbxTakeNodeContainer(KFbxSdkManager& pManager, char const* pName, KError* pError=0);
00214
00215 virtual void Construct(const KFbxTakeNodeContainer* pFrom);
00216 virtual void Destruct(bool pRecursive, bool pDependents);
00217
00218 virtual KFbxTakeNodeContainer* GetTakeNodeContainer();
00219 KFbxTakeNodeContainer& operator=(KFbxTakeNodeContainer const& pTakeNodeContainer);
00220
00221 public:
00222 void Init();
00223 void Reset();
00224
00225 virtual void PropertyAdded(KFbxProperty* pProperty);
00226 virtual void PropertyRemoved(KFbxProperty* pProperty);
00227
00228 void UpdateFCurveFromProperty(KFbxProperty &pProperty,KFbxTakeNode *pTakeNode=NULL);
00229 void CreateChannelsForProperty(KFbxProperty* pProperty, KFbxTakeNode *pTakeNode);
00230
00231
00232
00233 K_DEPRECATED void CreateChannelsForKProperty(KProperty* lProperty, KFbxTakeNode *pTakeNode, KFbxProperty* pProperty=NULL);
00234
00235
00236 void UnregisterDefaultTakeCallback(KFbxDefaultTakeCallback*& pTC);
00237 void UnregisterAllDefaultTakeCallback();
00238 friend void DefaultTakeValueChangedCallback(KFCurve *pFCurve, KFCurveEvent *pFCurveEvent, void* pObject);
00239
00240 private:
00241 KArrayTemplate<KFbxTakeNode*> mTakeNodeArray;
00242 KArrayTemplate<KFbxDefaultTakeCallback*> mCallbackInfo;
00243 int mCurrentTakeNodeIndex;
00244 mutable KError* mError;
00245
00246 #endif // #ifndef DOXYGEN_SHOULD_SKIP_THIS
00247 friend class KFbxObject;
00248
00249 };
00250
00251 typedef KFbxTakeNodeContainer* HKFbxTakeNodeContainer;
00252
00253 #include <fbxfilesdk/fbxfilesdk_nsend.h>
00254
00255 #endif // FBXFILESDK_KFBXPLUGINS_KFBXTAKENODECONTAINER_H
00256