Collada: commented out code was previously left over with an unresolved conflict...
[blender.git] / source / blender / collada / MaterialExporter.cpp
1 /*
2  * ***** BEGIN GPL LICENSE BLOCK *****
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License
6  * as published by the Free Software Foundation; either version 2
7  * of the License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software Foundation,
16  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17  *
18  * Contributor(s): Chingiz Dyussenov, Arystanbek Dyussenov, Jan Diederich, Tod Liverseed,
19  *                 Nathan Letwory
20  *
21  * ***** END GPL LICENSE BLOCK *****
22  */
23
24 /** \file blender/collada/MaterialExporter.cpp
25  *  \ingroup collada
26  */
27
28
29
30 #include "MaterialExporter.h"
31 #include "COLLADABUUtils.h"
32 #include "collada_internal.h"
33
34 MaterialsExporter::MaterialsExporter(COLLADASW::StreamWriter *sw, const ExportSettings *export_settings) : COLLADASW::LibraryMaterials(sw), export_settings(export_settings)
35 {
36         /* pass */
37 }
38
39 void MaterialsExporter::exportMaterials(Scene *sce)
40 {
41         if (hasMaterials(sce)) {
42                 openLibrary();
43
44                 MaterialFunctor mf;
45                 mf.forEachMaterialInExportSet<MaterialsExporter>(sce, *this, this->export_settings->export_set);
46
47                 closeLibrary();
48         }
49 }
50
51 bool MaterialsExporter::hasMaterials(Scene *sce)
52 {
53         LinkNode *node;
54         for (node=this->export_settings->export_set; node; node = node->next) {
55                 Object *ob = (Object *)node->link;
56                 int a;
57                 for (a = 0; a < ob->totcol; a++) {
58                         Material *ma = give_current_material(ob, a + 1);
59
60                         // no material, but check all of the slots
61                         if (!ma) continue;
62
63                         return true;
64                 }
65         }
66         return false;
67 }
68
69 void MaterialsExporter::operator()(Material *ma, Object *ob)
70 {
71         std::string name(id_name(ma));
72
73         openMaterial(get_material_id(ma), translate_id(name));
74
75         std::string efid = translate_id(name) + "-effect";
76         addInstanceEffect(COLLADASW::URI(COLLADABU::Utils::EMPTY_STRING, efid));
77
78         closeMaterial();
79 }