Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/Tools/MayaExport/include/materialSet.h @ 6

Last change on this file since 6 was 6, checked in by anonymous, 17 years ago

=…

File size: 3.1 KB
Line 
1////////////////////////////////////////////////////////////////////////////////
2// materialSet.h
3// Author     : Francesco Giordana
4// Start Date : January 13, 2005
5// Copyright  : (C) 2006 by Francesco Giordana
6// Email      : fra.giordana@tiscali.it
7////////////////////////////////////////////////////////////////////////////////
8
9/*********************************************************************************
10*                                                                                *
11*   This program is free software; you can redistribute it and/or modify         *
12*   it under the terms of the GNU Lesser General Public License as published by  *
13*   the Free Software Foundation; either version 2 of the License, or            *
14*   (at your option) any later version.                                          *
15*                                                                                *
16**********************************************************************************/
17
18#ifndef _MATERIALSET_H
19#define _MATERIALSET_H
20
21#include "_singleton.h"
22#include "material.h"
23#include "mayaExportLayer.h"
24
25namespace OgreMayaExporter
26{
27        class MaterialSet : public Singleton<MaterialSet>
28        {
29        public:
30                //constructor
31                MaterialSet(){
32                        //create a default material
33                        m_pDefaultMat = new Material();
34                        m_pDefaultMat->m_type = MT_LAMBERT;
35                        m_pDefaultMat->m_name = "defaultLambert";
36                        m_pDefaultMat->m_ambient = MColor(0,0,0,1);
37                        m_pDefaultMat->m_emissive = MColor(0,0,0,1);
38                        m_pDefaultMat->m_diffuse = MColor(0.5,0.5,0.5,1);
39                };
40                //destructor
41                ~MaterialSet(){
42                        clear();
43                        if (m_pDefaultMat)
44                                delete m_pDefaultMat;
45                }
46                //clear
47                void clear(){
48                        for (int i=0; i<m_materials.size(); i++)
49                                delete m_materials[i];
50                        m_materials.clear();
51                }
52                //add material
53                void addMaterial(Material* pMat){
54                        bool found = false;
55                        for (int i=0; i<m_materials.size() && !found; i++)
56                        {
57                                if (m_materials[i]->name() == pMat->name())
58                                {
59                                        found = true;
60                                        delete pMat;
61                                }
62                        }
63                        if (!found)
64                                m_materials.push_back(pMat);
65                }
66                //get material
67                Material* getMaterial(const MString& name){
68                        for (int i=0; i<m_materials.size(); i++)
69                        {
70                                if (m_materials[i]->name() == name)
71                                        return m_materials[i];
72                        }
73                        return NULL;
74                };
75                //get default material
76                Material* getDefaultMaterial()
77                {
78                        return m_pDefaultMat;
79                };
80                //get material set
81                static MaterialSet& getSingleton(){
82                        assert(ms_Singleton); 
83                        return (*ms_Singleton);
84                };
85                static MaterialSet* getSingletonPtr(){
86                        return ms_Singleton;
87                };
88                //write materials to Ogre XML
89                MStatus writeOgreScript(ParamList &params){
90                        MStatus stat;
91                        for (int i=0; i<m_materials.size(); i++)
92                        {
93                                stat = m_materials[i]->writeOgreScript(params);
94                                if (MS::kSuccess != stat)
95                                {
96                                        MString msg = "Error writing material ";
97                                        msg += m_materials[i]->name();
98                                        msg += ", aborting operation";
99                                        MGlobal::displayInfo(msg);
100                                }
101                        }
102                        return MS::kSuccess;
103                };
104
105        protected:
106                std::vector<Material*> m_materials;
107                Material* m_pDefaultMat;
108        };
109
110        template<> MaterialSet* Singleton<MaterialSet>::ms_Singleton = 0;
111
112};      //end namespace
113
114#endif
Note: See TracBrowser for help on using the repository browser.