[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