MaterialLibrary.h

00001 /****************************************************************************************
00002 THIS CODE IS PUBLISHED AS A SAMPLE ONLY AND IS PROVIDED "AS IS".
00003 IN NO EVENT SHALL SOFTIMAGE, AVID TECHNOLOGY, INC. AND/OR THEIR RESPECTIVE 
00004 SUPPLIERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
00005 DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
00006 ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
00007 CONNECTION WITH THE USE OR PERFORMANCE OF THIS CODE . 
00008  
00009 COPYRIGHT NOTICE. Copyright © 1999-2002 Avid Technology Inc. . All rights reserved. 
00010 
00011 SOFTIMAGE is a registered trademark of Avid Technology Inc. or its subsidiaries 
00012 or divisions. Windows NT is a registered trademark of Microsoft Corp. All other
00013 trademarks contained herein are the property of their respective owners. 
00014 ****************************************************************************************/
00015 /******************************************************************************\
00016 *
00017 * File:          MaterialLibrary.h
00018 * Creation date: January 15, 2002
00019 * Purpose:       Declaration of class 'MaterialLibrary'
00020 *
00021 \******************************************************************************/
00022 #ifndef _MATERIALLIBRARY_H
00023 #define _MATERIALLIBRARY_H
00024 
00025 #include "Template.h"
00026 
00027 // Forward declaration
00028 class CSLBaseMaterial;
00029 class CSLMaterial;
00030 class CSLXSIMaterial;
00031 
00032 
00038 class XSIEXPORT CSLMaterialLibrary
00039     : public CSLTemplate
00040 {
00041 public:
00042     CSLMaterialLibrary(CSLScene* in_pScene, CSLModel *in_pModel, CdotXSITemplate* in_pTemplate);
00043     virtual ~CSLMaterialLibrary();
00044 
00048     CSLMaterial* AddMaterial();
00049 
00053     virtual CSLXSIMaterial* AddXSIMaterial();
00054 
00058     SI_Error ClearMaterials();
00059 
00063     CSLBaseMaterial** GetMaterialList();
00064 
00068     SI_Int GetMaterialCount();
00069 
00074     SI_Error RemoveMaterial(SI_Int in_nIndex);
00075 
00080     SI_Error RemoveMaterial(CSLBaseMaterial *in_pMaterial);
00081 
00082     CSLBaseMaterial* FindMaterial( const SI_Char* in_szName );
00083 
00084     CSLBaseMaterial* ConnectMaterial(CSLBaseMaterial* in_pNewMaterial);
00085 
00086     virtual SI_Error Synchronize();
00087     virtual ETemplateType Type();
00088 
00089 protected:
00090     CSIBCArray<CSLBaseMaterial *> m_Materials;
00091 
00092 private:
00093     void *m_pReserved;  // reserved for future extension
00094 };
00095 
00096 #endif