00001 /* 00002 Copyright (C) 2005-2006 Feeling Software Inc. 00003 MIT License: http://www.opensource.org/licenses/mit-license.php 00004 */ 00005 /* 00006 Based on the FS Import classes: 00007 Copyright (C) 2005-2006 Feeling Software Inc 00008 Copyright (C) 2005-2006 Autodesk Media Entertainment 00009 MIT License: http://www.opensource.org/licenses/mit-license.php 00010 */ 00011 00017 #ifndef _FCD_MATERIAL_LIBRARY_H_ 00018 #define _FCD_MATERIAL_LIBRARY_H_ 00019 00020 class FCDocument; 00021 class FCDTexture; 00022 class FCDEffect; 00023 class FCDMaterial; 00024 00025 typedef vector<FCDTexture*> FCDTextureList; 00026 typedef vector<FCDEffect*> FCDEffectList; 00027 typedef vector<FCDMaterial*> FCDMaterialList; 00029 #include "FCDocument/FCDLibrary.h" 00030 00040 class FCOLLADA_EXPORT FCDMaterialLibrary : public FCDLibrary<FCDEntity> 00041 { 00042 private: 00043 FCDTextureList textures; 00044 FCDEffectList effects; 00045 FCDMaterialList materials; 00046 00047 public: 00051 FCDMaterialLibrary(FCDocument* document); 00052 00055 virtual ~FCDMaterialLibrary(); 00056 00059 FCDEffectList& GetEffects() { return effects; } 00060 const FCDEffectList& GetEffects() const { return effects; } 00064 size_t GetEffectCount() const { return effects.size(); } 00065 00069 FCDEffect* GetEffect(size_t index) { FUAssert(index < GetEffectCount(), return NULL); return effects.at(index); } 00070 const FCDEffect* GetEffect(size_t index) const { FUAssert(index < GetEffectCount(), return NULL); return effects.at(index); } 00075 FCDEffect* FindEffect(const string& daeId); 00076 00079 FCDEffect* AddEffect(); 00080 00084 void ReleaseEffect(FCDEffect* effect); 00085 00088 FCDMaterialList& GetMaterials() { return materials; } 00089 const FCDMaterialList& GetMaterials() const { return materials; } 00093 size_t GetMaterialCount() const { return materials.size(); } 00094 00098 FCDMaterial* GetMaterial(size_t index) { FUAssert(index < GetMaterialCount(), return NULL); return materials.at(index); } 00099 const FCDMaterial* GetMaterial(size_t index) const { FUAssert(index < GetMaterialCount(), return NULL); return materials.at(index); } 00105 FCDMaterial* FindMaterial(const string& daeId); 00106 00111 FCDTexture* FindTexture(const string& daeId); 00112 00115 FCDMaterial* AddMaterial(); 00116 00120 void ReleaseMaterial(FCDMaterial* material); 00121 00128 virtual FUStatus LoadFromXML(xmlNode* node); 00129 00134 virtual void WriteToXML(xmlNode* libraryNode) const; 00135 }; 00136 00137 #endif // _FCD_MATERIAL_LIBRARY_H_ 00138