diff options
author | Nathan Letwory <nathan@letworyinteractive.com> | 2011-03-17 19:40:53 +0300 |
---|---|---|
committer | Nathan Letwory <nathan@letworyinteractive.com> | 2011-03-17 19:40:53 +0300 |
commit | a84e43c48b149593c4abfed8ad1b507f20526cc9 (patch) | |
tree | aba9d7c3345d6dc15132d81cbd45b4662bcc0bbe /source/blender/collada | |
parent | 27abad190a6c3a30cdb109b4c555aea7faf1ea71 (diff) |
COLLADA: Don't write empty libraries for geometry, lights, cameras, controllers
Diffstat (limited to 'source/blender/collada')
-rw-r--r-- | source/blender/collada/DocumentExporter.cpp | 22 | ||||
-rw-r--r-- | source/blender/collada/collada_internal.cpp | 14 | ||||
-rw-r--r-- | source/blender/collada/collada_internal.h | 3 |
3 files changed, 32 insertions, 7 deletions
diff --git a/source/blender/collada/DocumentExporter.cpp b/source/blender/collada/DocumentExporter.cpp index cf8caabe409..f481add98ff 100644 --- a/source/blender/collada/DocumentExporter.cpp +++ b/source/blender/collada/DocumentExporter.cpp @@ -987,12 +987,16 @@ void DocumentExporter::exportCurrentScene(Scene *sce, const char* filename) asset.add(); // <library_cameras> - CamerasExporter ce(&sw); - ce.exportCameras(sce); + if(has_object_type(sce, OB_CAMERA)) { + CamerasExporter ce(&sw); + ce.exportCameras(sce); + } // <library_lights> - LightsExporter le(&sw); - le.exportLights(sce); + if(has_object_type(sce, OB_LAMP)) { + LightsExporter le(&sw); + le.exportLights(sce); + } // <library_images> ImagesExporter ie(&sw, filename); @@ -1007,8 +1011,10 @@ void DocumentExporter::exportCurrentScene(Scene *sce, const char* filename) me.exportMaterials(sce); // <library_geometries> - GeometryExporter ge(&sw); - ge.exportGeom(sce); + if(has_object_type(sce, OB_MESH)) { + GeometryExporter ge(&sw); + ge.exportGeom(sce); + } // <library_animations> AnimationExporter ae(&sw); @@ -1016,7 +1022,9 @@ void DocumentExporter::exportCurrentScene(Scene *sce, const char* filename) // <library_controllers> ArmatureExporter arm_exporter(&sw); - arm_exporter.export_controllers(sce); + if(has_object_type(sce, OB_ARMATURE)) { + arm_exporter.export_controllers(sce); + } // <library_visual_scenes> SceneExporter se(&sw, &arm_exporter); diff --git a/source/blender/collada/collada_internal.cpp b/source/blender/collada/collada_internal.cpp index 5ae41fee999..4f4d16d3b0d 100644 --- a/source/blender/collada/collada_internal.cpp +++ b/source/blender/collada/collada_internal.cpp @@ -277,3 +277,17 @@ std::string get_material_id(Material *mat) { return translate_id(id_name(mat)) + "-material"; } + +bool has_object_type(Scene *sce, short obtype) +{ + Base *base= (Base*) sce->base.first; + while(base) { + Object *ob = base->object; + + if (ob->type == obtype && ob->data) { + return true; + } + base= base->next; + } + return false; +} diff --git a/source/blender/collada/collada_internal.h b/source/blender/collada/collada_internal.h index db7dd16dfd1..70912dde457 100644 --- a/source/blender/collada/collada_internal.h +++ b/source/blender/collada/collada_internal.h @@ -39,6 +39,7 @@ #include "DNA_armature_types.h" #include "DNA_material_types.h" #include "DNA_object_types.h" +#include "DNA_scene_types.h" #include "BLI_math.h" class UnitConverter @@ -97,4 +98,6 @@ extern std::string get_camera_id(Object *ob); extern std::string get_material_id(Material *mat); +extern bool has_object_type(Scene* sce, short obtype); + #endif /* COLLADA_INTERNAL_H */ |