diff options
author | Gaia Clary <gaia.clary@machinimatrix.org> | 2012-06-14 22:29:29 +0400 |
---|---|---|
committer | Gaia Clary <gaia.clary@machinimatrix.org> | 2012-06-14 22:29:29 +0400 |
commit | 2cc9ecad553f1154a72efce9f73f9cac80797dfd (patch) | |
tree | 7d4d827ce7153caa6872b0973105145824bd72e5 | |
parent | ffc9e340b12ffbebbf193f573a3bbe072b9f5df6 (diff) |
fix for exporting armature, when it is explicitly selected
-rw-r--r-- | source/blender/collada/SceneExporter.cpp | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/source/blender/collada/SceneExporter.cpp b/source/blender/collada/SceneExporter.cpp index 63bf94923d4..bd746e241ca 100644 --- a/source/blender/collada/SceneExporter.cpp +++ b/source/blender/collada/SceneExporter.cpp @@ -84,10 +84,16 @@ void SceneExporter::exportHierarchy(Scene *sce) void SceneExporter::writeNodes(Object *ob, Scene *sce) { // Add associated armature first if available + bool armature_exported = false; Object *ob_arm = bc_get_assigned_armature(ob); - if (ob_arm != NULL && bc_is_marked(ob_arm)) { - bc_remove_mark(ob_arm); - writeNodes(ob_arm, sce); + if (ob_arm != NULL) + { + armature_exported = bc_is_in_Export_set(this->export_settings->export_set, ob_arm); + if (armature_exported && bc_is_marked(ob_arm)) { + bc_remove_mark(ob_arm); + writeNodes(ob_arm, sce); + armature_exported = true; + } } COLLADASW::Node colladaNode(mSW); @@ -97,12 +103,11 @@ void SceneExporter::writeNodes(Object *ob, Scene *sce) colladaNode.start(); - bool is_skinned_mesh = arm_exporter->is_skinned_mesh(ob); std::list<Object *> child_objects; // list child objects - LinkNode *node = this->export_settings->export_set; - while (node) { + LinkNode *node; + for (node=this->export_settings->export_set; node; node=node->next) { // cob - child object Object *cob = (Object *)node->link; @@ -118,10 +123,9 @@ void SceneExporter::writeNodes(Object *ob, Scene *sce) break; } } - node = node->next; } - if (ob->type == OB_MESH && this->export_settings->include_armatures && is_skinned_mesh) + if (ob->type == OB_MESH && armature_exported) // for skinned mesh we write obmat in <bind_shape_matrix> TransformWriter::add_node_transform_identity(colladaNode); else @@ -130,7 +134,7 @@ void SceneExporter::writeNodes(Object *ob, Scene *sce) // <instance_geometry> if (ob->type == OB_MESH) { bool instance_controller_created = false; - if (this->export_settings->include_armatures && is_skinned_mesh) { + if (armature_exported) { instance_controller_created = arm_exporter->add_instance_controller(ob); } if (!instance_controller_created) { |