diff options
author | Gaia Clary <gaia.clary@machinimatrix.org> | 2012-05-24 18:56:09 +0400 |
---|---|---|
committer | Gaia Clary <gaia.clary@machinimatrix.org> | 2012-05-24 18:56:09 +0400 |
commit | da67c969b38d748049ddd118a21fa046241739fe (patch) | |
tree | d866705bb0ecde30c6cd2f5f647d15b283e113fd /source/blender/collada | |
parent | 09344fb1027a03158cf151ec45891ab339c478fc (diff) |
Patch #31570: Implementation of 'Include bone children' Option
Diffstat (limited to 'source/blender/collada')
-rw-r--r-- | source/blender/collada/ExportSettings.h | 1 | ||||
-rw-r--r-- | source/blender/collada/SceneExporter.cpp | 37 | ||||
-rw-r--r-- | source/blender/collada/collada.cpp | 17 | ||||
-rw-r--r-- | source/blender/collada/collada.h | 8 |
4 files changed, 40 insertions, 23 deletions
diff --git a/source/blender/collada/ExportSettings.h b/source/blender/collada/ExportSettings.h index 41fa7e1ed38..b875282ac33 100644 --- a/source/blender/collada/ExportSettings.h +++ b/source/blender/collada/ExportSettings.h @@ -32,6 +32,7 @@ struct ExportSettings public: bool selected; bool apply_modifiers; + bool include_bone_children; bool second_life; char *filepath; }; diff --git a/source/blender/collada/SceneExporter.cpp b/source/blender/collada/SceneExporter.cpp index cd36267fd56..f79ae2b52a9 100644 --- a/source/blender/collada/SceneExporter.cpp +++ b/source/blender/collada/SceneExporter.cpp @@ -79,25 +79,28 @@ void SceneExporter::writeNodes(Object *ob, Scene *sce) bool is_skinned_mesh = arm_exporter->is_skinned_mesh(ob); std::list<Object*> child_objects; - // list child objects - Base *b = (Base*) sce->base.first; - while (b) { - // cob - child object - Object *cob = b->object; - - if (cob->parent == ob) { - switch (cob->type) { - case OB_MESH: - case OB_CAMERA: - case OB_LAMP: - case OB_EMPTY: - case OB_ARMATURE: - child_objects.push_back(cob); - break; + + if (this->export_settings->include_bone_children) { + // list child objects + Base *b = (Base*) sce->base.first; + while (b) { + // cob - child object + Object *cob = b->object; + + if (cob->parent == ob) { + switch (cob->type) { + case OB_MESH: + case OB_CAMERA: + case OB_LAMP: + case OB_EMPTY: + case OB_ARMATURE: + child_objects.push_back(cob); + break; + } } - } - b = b->next; + b = b->next; + } } diff --git a/source/blender/collada/collada.cpp b/source/blender/collada/collada.cpp index ae024ec52a7..c947144412a 100644 --- a/source/blender/collada/collada.cpp +++ b/source/blender/collada/collada.cpp @@ -49,14 +49,21 @@ extern "C" return 0; } - int collada_export(Scene *sce, const char *filepath, int selected, int apply_modifiers, int second_life) + int collada_export( + Scene *sce, + const char *filepath, + int selected, + int apply_modifiers, + int include_bone_children, + int second_life) { ExportSettings export_settings; - export_settings.selected = selected != 0; - export_settings.apply_modifiers = apply_modifiers != 0; - export_settings.second_life = second_life != 0; - export_settings.filepath = (char *)filepath; + export_settings.selected = selected != 0; + export_settings.apply_modifiers = apply_modifiers != 0; + export_settings.include_bone_children = include_bone_children != 0; + export_settings.second_life = second_life != 0; + export_settings.filepath = (char *)filepath; /* annoying, collada crashes if file cant be created! [#27162] */ if (!BLI_exists(filepath)) { diff --git a/source/blender/collada/collada.h b/source/blender/collada/collada.h index f335796f799..d5c26bb402c 100644 --- a/source/blender/collada/collada.h +++ b/source/blender/collada/collada.h @@ -37,7 +37,13 @@ extern "C" { * both return 1 on success, 0 on error */ int collada_import(bContext *C, const char *filepath); - int collada_export(Scene *sce, const char *filepath, int selected, int apply_modifiers, int second_life); + int collada_export( + Scene *sce, + const char *filepath, + int selected, + int apply_modifiers, + int include_bone_children, + int second_life); #ifdef __cplusplus } #endif |