diff options
Diffstat (limited to 'source/blender/collada/ImageExporter.cpp')
-rw-r--r-- | source/blender/collada/ImageExporter.cpp | 40 |
1 files changed, 36 insertions, 4 deletions
diff --git a/source/blender/collada/ImageExporter.cpp b/source/blender/collada/ImageExporter.cpp index e87f6208d59..b7a5ef4c4e4 100644 --- a/source/blender/collada/ImageExporter.cpp +++ b/source/blender/collada/ImageExporter.cpp @@ -23,6 +23,11 @@ * ***** END GPL LICENSE BLOCK ***** */ +/** \file blender/collada/ImageExporter.cpp + * \ingroup collada + */ + + #include "COLLADABUURI.h" #include "COLLADASWImage.h" @@ -41,13 +46,40 @@ ImagesExporter::ImagesExporter(COLLADASW::StreamWriter *sw, const char* filename) : COLLADASW::LibraryImages(sw), mfilename(filename) {} +bool ImagesExporter::hasImages(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; + int b; + for (b = 0; b < MAX_MTEX; b++) { + MTex *mtex = ma->mtex[b]; + if (mtex && mtex->tex && mtex->tex->ima) return true; + } + + } + base= base->next; + } + return false; +} + void ImagesExporter::exportImages(Scene *sce) { - openLibrary(); - MaterialFunctor mf; - mf.forEachMaterialInScene<ImagesExporter>(sce, *this); + if(hasImages(sce)) { + openLibrary(); + MaterialFunctor mf; + mf.forEachMaterialInScene<ImagesExporter>(sce, *this); - closeLibrary(); + closeLibrary(); + } } void ImagesExporter::operator()(Material *ma, Object *ob) |