From c263753d1770b5b812ea0e5c38174fa296492e2f Mon Sep 17 00:00:00 2001 From: Gaia Clary Date: Mon, 21 Jan 2013 13:45:49 +0000 Subject: Added gsoc-2012 collada improvements from bratwurst branch --- source/blender/collada/TransformReader.cpp | 46 ++++++++++++++++-------------- 1 file changed, 24 insertions(+), 22 deletions(-) (limited to 'source/blender/collada/TransformReader.cpp') diff --git a/source/blender/collada/TransformReader.cpp b/source/blender/collada/TransformReader.cpp index 5bc135e9b67..24124c7b58d 100644 --- a/source/blender/collada/TransformReader.cpp +++ b/source/blender/collada/TransformReader.cpp @@ -45,29 +45,31 @@ void TransformReader::get_node_mat(float mat[4][4], COLLADAFW::Node *node, std:: COLLADAFW::Transformation *tm = node->getTransformations()[i]; COLLADAFW::Transformation::TransformationType type = tm->getTransformationType(); - - switch (type) { - case COLLADAFW::Transformation::TRANSLATE: - dae_translate_to_mat4(tm, cur); - break; - case COLLADAFW::Transformation::ROTATE: - dae_rotate_to_mat4(tm, cur); - break; - case COLLADAFW::Transformation::SCALE: - dae_scale_to_mat4(tm, cur); - break; - case COLLADAFW::Transformation::MATRIX: - dae_matrix_to_mat4(tm, cur); - break; - case COLLADAFW::Transformation::LOOKAT: - case COLLADAFW::Transformation::SKEW: - fprintf(stderr, "LOOKAT and SKEW transformations are not supported yet.\n"); - break; + + if(type == COLLADAFW::Transformation::MATRIX){ + dae_matrix_to_mat4(tm, mat); + return; } - - copy_m4_m4(copy, mat); - mult_m4_m4m4(mat, copy, cur); - + else{ + switch (type) { + case COLLADAFW::Transformation::TRANSLATE: + dae_translate_to_mat4(tm, cur); + break; + case COLLADAFW::Transformation::ROTATE: + dae_rotate_to_mat4(tm, cur); + break; + case COLLADAFW::Transformation::SCALE: + dae_scale_to_mat4(tm, cur); + break; + case COLLADAFW::Transformation::LOOKAT: + case COLLADAFW::Transformation::SKEW: + fprintf(stderr, "LOOKAT and SKEW transformations are not supported yet.\n"); + break; + } + copy_m4_m4(copy, mat); + mult_m4_m4m4(mat, copy, cur); + } + if (animation_map) { // AnimationList that drives this Transformation const COLLADAFW::UniqueId& anim_list_id = tm->getAnimationList(); -- cgit v1.2.3