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
00231
00232
00233
00234
00235
00236
00238 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00239 protected:
00240
00241 FbxLibrary(FbxManager& pManager, const char* pName);
00242
00243 virtual void Destruct(bool pRecursive, bool pDependents);
00244 virtual void Construct(const FbxLibrary* pFrom);
00245
00246 mutable FbxLocalizationManager* mLocalizationManager;
00247 #endif // #ifndef DOXYGEN_SHOULD_SKIP_THIS
00248 };
00249
00250
00251 template < class T > T* FbxLibrary::InstantiateMember( const T* pFBX_TYPE, const FbxObjectFilter& pFilter, bool pRecurse, FbxObject* pOptContainer )
00252 {
00253
00254 int i;
00255 for(i = 0; i < GetMemberCount( FBX_TYPE(T) ); ++i )
00256 {
00257 T* lObject = GetMember( FBX_TYPE(T), i );
00258 if( pFilter.Match(lObject) )
00259 return FbxCast<T>(CloneAsset(lObject,pOptContainer));
00260 }
00261
00262 if( pRecurse )
00263 {
00264
00265 for( i = 0; i < GetMemberCount( FBX_TYPE(FbxLibrary) ); ++i )
00266 {
00267 FbxLibrary* lLibrary = GetMember( FBX_TYPE(FbxLibrary), i );
00268 T* lClonedObject = lLibrary->InstantiateMember( pFBX_TYPE, pFilter, pRecurse, pOptContainer );
00269 if( lClonedObject )
00270 return lClonedObject;
00271 }
00272 }
00273
00274 return NULL;
00275 }
00276
00278
00279
00280
00281
00282
00283
00285 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00286
00291 class FBXSDK_DLL FbxEventPopulateSystemLibrary : public FbxEvent<FbxEventPopulateSystemLibrary>
00292 {
00293 FBXSDK_EVENT_DECLARE(FbxEventPopulateSystemLibrary)
00294
00295 public:
00300
00304 FbxEventPopulateSystemLibrary(FbxLibrary* pLibrary) { mLibrary = pLibrary; }
00305
00307
00312
00313 inline FbxLibrary* GetLibrary() const { return mLibrary; }
00314 private:
00315 FbxLibrary* mLibrary;
00317 };
00318
00323 class FBXSDK_DLL FbxEventUpdateSystemLibrary : public FbxEvent<FbxEventUpdateSystemLibrary>
00324 {
00325 FBXSDK_EVENT_DECLARE(FbxEventUpdateSystemLibrary)
00326 public:
00331
00335 FbxEventUpdateSystemLibrary(FbxLibrary *pLibrary) { mLibrary = pLibrary; }
00336
00338
00343
00345 inline FbxLibrary* GetLibrary() const { return mLibrary; }
00346
00348 private:
00349 FbxLibrary* mLibrary;
00350 };
00351
00352 #endif // #ifndef DOXYGEN_SHOULD_SKIP_THIS
00353
00364 class FBXSDK_DLL FbxEventWriteLocalization : public FbxEvent<FbxEventWriteLocalization>
00365 {
00366 FBXSDK_EVENT_DECLARE(FbxEventWriteLocalization)
00367 public:
00368 FbxEventWriteLocalization(FbxLibrary* pAssetLibrary) { mAssetLibrary = pAssetLibrary; }
00369
00371 inline FbxLibrary* GetLibrary() const { return mAssetLibrary; }
00372
00373 private:
00374 FbxLibrary* mAssetLibrary;
00375 };
00376
00378
00379
00380
00381
00382
00383
00385 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00386
00387
00388 class FBXSDK_DLL FbxEventMapAssetFileToAssetObject : public FbxEvent<FbxEventMapAssetFileToAssetObject>
00389 {
00390 FBXSDK_EVENT_DECLARE(FbxEventMapAssetFileToAssetObject)
00391 public:
00392
00393
00394 FbxEventMapAssetFileToAssetObject(const char* pFile) :
00395 mAsset(NULL),
00396 mFilePath( pFile )
00397 {}
00398
00399
00400 inline const char* GetFilePath() const { return mFilePath; }
00401
00402
00403 mutable FbxObject* mAsset;
00404
00405 private:
00406 FbxString mFilePath;
00407 };
00408
00409 #endif //DOXYGEN_SHOULD_SKIP_THIS
00410
00411 #include <fbxsdk/fbxsdk_nsend.h>
00412
00413 #endif