diff options
author | Nathan Letwory <nathan@letworyinteractive.com> | 2011-06-20 16:43:10 +0400 |
---|---|---|
committer | Nathan Letwory <nathan@letworyinteractive.com> | 2011-06-20 16:43:10 +0400 |
commit | d27863733710ab23749b21755be245bc7a303f12 (patch) | |
tree | 267f7098f2edc0a5df09c5383c278d4fca42593d /source/blender/collada/AnimationImporter.cpp | |
parent | 81f5679ff50fde4085b92cb39f98efd8354fc5ef (diff) |
Fix [#26912] [Collada] Screw up with names/ids on import
Reported by Valeriy Firsov
Use the node name if it exists, fall back to id otherwise.
Diffstat (limited to 'source/blender/collada/AnimationImporter.cpp')
-rw-r--r-- | source/blender/collada/AnimationImporter.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/source/blender/collada/AnimationImporter.cpp b/source/blender/collada/AnimationImporter.cpp index a166324bde7..336f127b11f 100644 --- a/source/blender/collada/AnimationImporter.cpp +++ b/source/blender/collada/AnimationImporter.cpp @@ -53,12 +53,12 @@ #include <algorithm> -// use this for retrieving bone names, since these must be unique +// first try node name, if not available (since is optional), fall back to original id template<class T> static const char *bc_get_joint_name(T *node) { - const std::string& id = node->getOriginalId(); - return id.size() ? id.c_str() : node->getName().c_str(); + const std::string& id = node->getName(); + return id.size() ? id.c_str() : node->getOriginalId().c_str(); } FCurve *AnimationImporter::create_fcurve(int array_index, const char *rna_path) @@ -827,7 +827,8 @@ void AnimationImporter::evaluate_transform_at_frame(float mat[4][4], COLLADAFW:: unit_m4(m); - if (!evaluate_animation(tm, m, fra, node->getOriginalId().c_str())) { + std::string nodename = node->getName().size() ? node->getName() : node->getOriginalId(); + if (!evaluate_animation(tm, m, fra, nodename.c_str())) { switch (type) { case COLLADAFW::Transformation::ROTATE: dae_rotate_to_mat4(tm, m); |