[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [38770] trunk/blender/source/blender/ collada: Don't write library_materials tag when there are no materials.
Nathan Letwory
nathan at letworyinteractive.com
Thu Jul 28 02:08:05 CEST 2011
Revision: 38770
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=38770
Author: jesterking
Date: 2011-07-28 00:08:03 +0000 (Thu, 28 Jul 2011)
Log Message:
-----------
Don't write library_materials tag when there are no materials.
Modified Paths:
--------------
trunk/blender/source/blender/collada/MaterialExporter.cpp
trunk/blender/source/blender/collada/MaterialExporter.h
Modified: trunk/blender/source/blender/collada/MaterialExporter.cpp
===================================================================
--- trunk/blender/source/blender/collada/MaterialExporter.cpp 2011-07-27 23:40:55 UTC (rev 38769)
+++ trunk/blender/source/blender/collada/MaterialExporter.cpp 2011-07-28 00:08:03 UTC (rev 38770)
@@ -37,14 +37,38 @@
void MaterialsExporter::exportMaterials(Scene *sce, bool export_selected)
{
- openLibrary();
+ if(hasMaterials(sce)) {
+ openLibrary();
- MaterialFunctor mf;
- mf.forEachMaterialInScene<MaterialsExporter>(sce, *this, export_selected);
+ MaterialFunctor mf;
+ mf.forEachMaterialInScene<MaterialsExporter>(sce, *this, export_selected);
- closeLibrary();
+ closeLibrary();
+ }
}
+
+bool MaterialsExporter::hasMaterials(Scene *sce)
+{
+ Base *base = (Base *)sce->base.first;
+
+ while(base) {
+ Object *ob= base->object;
+ int a;
+ for(a = 0; a < ob->totcol; a++)
+ {
+ Material *ma = give_current_material(ob, a+1);
+
+ // no material, but check all of the slots
+ if (!ma) continue;
+
+ return true;
+ }
+ base= base->next;
+ }
+ return false;
+}
+
void MaterialsExporter::operator()(Material *ma, Object *ob)
{
std::string name(id_name(ma));
Modified: trunk/blender/source/blender/collada/MaterialExporter.h
===================================================================
--- trunk/blender/source/blender/collada/MaterialExporter.h 2011-07-27 23:40:55 UTC (rev 38769)
+++ trunk/blender/source/blender/collada/MaterialExporter.h 2011-07-28 00:08:03 UTC (rev 38770)
@@ -51,6 +51,9 @@
MaterialsExporter(COLLADASW::StreamWriter *sw);
void exportMaterials(Scene *sce, bool export_selected);
void operator()(Material *ma, Object *ob);
+
+private:
+ bool hasMaterials(Scene *sce);
};
// used in forEachMaterialInScene
More information about the Bf-blender-cvs
mailing list