Go to the
documentation of this file.
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00013 #ifndef _FBXSDK_SCENE_LIBRARY_H_
00014 #define _FBXSDK_SCENE_LIBRARY_H_
00015
00016 #include <fbxsdk/fbxsdk_def.h>
00017
00018 #include <fbxsdk/scene/fbxdocument.h>
00019 #include <fbxsdk/scene/fbxobjectfilter.h>
00020
00021 #include <fbxsdk/fbxsdk_nsbegin.h>
00022
00023 class FbxLocalizationManager;
00024 class FbxCriteria;
00025
00030 class FBXSDK_DLL FbxLibrary : public FbxDocument
00031 {
00032 FBXSDK_OBJECT_DECLARE(FbxLibrary, FbxDocument);
00033
00034 public:
00036 FbxLibrary* GetParentLibrary(void) const;
00037
00041 void SystemLibrary(bool pSystemLibrary);
00042
00044 bool IsSystemLibrary() const;
00045
00053 void LocalizationBaseNamePrefix(const char* pPrefix);
00054
00056 FbxString LocalizationBaseNamePrefix() const;
00057
00058
00059
00060
00061
00062
00063
00068 bool AddSubLibrary(FbxLibrary* pSubLibrary);
00069
00074 bool RemoveSubLibrary(FbxLibrary* pSubLibrary);
00075
00077 int GetSubLibraryCount(void) const;
00078
00082 FbxLibrary* GetSubLibrary(int pIndex) const;
00083
00089 FbxObject* CloneAsset( FbxObject* pToClone, FbxObject* pOptionalDestinationContainer = NULL) const;
00090
00091
00098 static FbxCriteria GetAssetCriteriaFilter();
00099
00105 static FbxCriteria GetAssetDependentsFilter();
00106
00131 bool ImportAssets(FbxLibrary* pSrcLibrary);
00132
00158 bool ImportAssets(FbxLibrary* pSrcLibrary, const FbxCriteria& pAssetFilter);
00159
00160
00169 template < class T > T* InstantiateMember( const T* pFBX_TYPE, const FbxObjectFilter& pFilter, bool pRecurse = true, FbxObject* pOptContainer = NULL);
00170
00171
00172
00173
00174
00175
00176
00180 FbxLocalizationManager& GetLocalizationManager() const;
00181
00188 virtual const char* Localize( const char* pID, const char* pDefault = NULL ) const;
00189
00190
00191
00192
00193
00194
00195
00199 bool AddShadingObject(FbxObject* pShadingObject);
00200
00204 bool RemoveShadingObject(FbxObject* pShadingObject);
00205
00207 int GetShadingObjectCount(void) const;
00208
00213 FbxObject* GetShadingObject(int pIndex) const;
00214
00220 int GetShadingObjectCount(const FbxImplementationFilter& pCriteria) const;
00221
00228 FbxObject* GetShadingObject(int pIndex, const FbxImplementationFilter& pCriteria) const;
00229
00230
00231
00232
00233 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00234 protected:
00235 virtual void Construct(const FbxLibrary* pFrom);
00236 virtual void Destruct(bool pRecursive);
00237
00238 mutable FbxLocalizationManager* mLocalizationManager;
00239 #endif
00240 };
00241
00242
00243
00244
00245 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00246
00247 template <class T> T* FbxLibrary::InstantiateMember(const T* pFBX_TYPE, const FbxObjectFilter& pFilter, bool pRecurse, FbxObject* pOptContainer)
00248 {
00249
00250 for( int i = 0; i < GetMemberCount<T>(); ++i )
00251 {
00252 T* lObject = GetMember<T>(i);
00253 if( pFilter.Match(lObject) )
00254 return FbxCast<T>(CloneAsset(lObject,pOptContainer));
00255 }
00256
00257 if( pRecurse )
00258 {
00259
00260 for( int i = 0; i < GetMemberCount<FbxLibrary>(); ++i )
00261 {
00262 FbxLibrary* lLibrary = GetMember<FbxLibrary>(i);
00263 T* lClonedObject = lLibrary->InstantiateMember(pFBX_TYPE, pFilter, pRecurse, pOptContainer);
00264 if( lClonedObject )
00265 return lClonedObject;
00266 }
00267 }
00268
00269 return NULL;
00270 }
00271
00272 class FBXSDK_DLL FbxEventPopulateSystemLibrary : public FbxEvent<FbxEventPopulateSystemLibrary>
00273 {
00274 FBXSDK_EVENT_DECLARE(FbxEventPopulateSystemLibrary)
00275
00276 public:
00277 FbxEventPopulateSystemLibrary(FbxLibrary* pLibrary) { mLibrary = pLibrary; }
00278 inline FbxLibrary* GetLibrary() const { return mLibrary; }
00279
00280 private:
00281 FbxLibrary* mLibrary;
00282 };
00283
00284 class FBXSDK_DLL FbxEventUpdateSystemLibrary : public FbxEvent<FbxEventUpdateSystemLibrary>
00285 {
00286 FBXSDK_EVENT_DECLARE(FbxEventUpdateSystemLibrary)
00287
00288 public:
00289 FbxEventUpdateSystemLibrary(FbxLibrary *pLibrary) { mLibrary = pLibrary; }
00290 inline FbxLibrary* GetLibrary() const { return mLibrary; }
00291
00292 private:
00293 FbxLibrary* mLibrary;
00294 };
00295
00296 class FBXSDK_DLL FbxEventWriteLocalization : public FbxEvent<FbxEventWriteLocalization>
00297 {
00298 FBXSDK_EVENT_DECLARE(FbxEventWriteLocalization)
00299
00300 public:
00301 FbxEventWriteLocalization(FbxLibrary* pAssetLibrary) { mAssetLibrary = pAssetLibrary; }
00302 inline FbxLibrary* GetLibrary() const { return mAssetLibrary; }
00303
00304 private:
00305 FbxLibrary* mAssetLibrary;
00306 };
00307
00308 class FBXSDK_DLL FbxEventMapAssetFileToAssetObject : public FbxEvent<FbxEventMapAssetFileToAssetObject>
00309 {
00310 FBXSDK_EVENT_DECLARE(FbxEventMapAssetFileToAssetObject)
00311
00312 public:
00313 FbxEventMapAssetFileToAssetObject(const char* pFile) :
00314 mAsset(NULL),
00315 mFilePath( pFile )
00316 {
00317 }
00318
00319 inline const char* GetFilePath() const { return mFilePath; }
00320 mutable FbxObject* mAsset;
00321
00322 private:
00323 FbxString mFilePath;
00324 };
00325
00326 #endif
00327
00328 #include <fbxsdk/fbxsdk_nsend.h>
00329
00330 #endif