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

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to