Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGaia Clary <gaia.clary@machinimatrix.org>2012-06-14 22:29:29 +0400
committerGaia Clary <gaia.clary@machinimatrix.org>2012-06-14 22:29:29 +0400
commit2cc9ecad553f1154a72efce9f73f9cac80797dfd (patch)
tree7d4d827ce7153caa6872b0973105145824bd72e5 /source/blender/collada/SceneExporter.cpp
parentffc9e340b12ffbebbf193f573a3bbe072b9f5df6 (diff)
fix for exporting armature, when it is explicitly selected
Diffstat (limited to 'source/blender/collada/SceneExporter.cpp')
-rw-r--r--source/blender/collada/SceneExporter.cpp22
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) {