Revision: 27878
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=27878
Author:   kazanbas
Date:     2010-03-30 20:21:47 +0200 (Tue, 30 Mar 2010)

Log Message:
-----------
Merge -c 27876 from COLLADA branch into trunk.

Modified Paths:
--------------
    trunk/blender/source/blender/collada/DocumentExporter.cpp

Modified: trunk/blender/source/blender/collada/DocumentExporter.cpp
===================================================================
--- trunk/blender/source/blender/collada/DocumentExporter.cpp   2010-03-30 
18:10:05 UTC (rev 27877)
+++ trunk/blender/source/blender/collada/DocumentExporter.cpp   2010-03-30 
18:21:47 UTC (rev 27878)
@@ -1948,7 +1948,7 @@
                addSampler(sampler);
 
                std::string target = translate_id(ob_name)
-                       + "/" + get_transform_sid(fcu->rna_path, -1, axis_name);
+                       + "/" + get_transform_sid(fcu->rna_path, -1, axis_name, 
true);
                addChannel(COLLADABU::URI(empty, sampler_id), target);
 
                closeAnimation();
@@ -2096,7 +2096,7 @@
                if (axis > -1)
                        axis_name = axis_names[axis];
                
-               std::string transform_sid = get_transform_sid(NULL, tm_type, 
axis_name);
+               std::string transform_sid = get_transform_sid(NULL, tm_type, 
axis_name, false);
                
                BLI_snprintf(anim_id, sizeof(anim_id), "%s_%s_%s", 
(char*)translate_id(ob_name).c_str(),
                                         
(char*)translate_id(bone_name).c_str(), (char*)transform_sid.c_str());
@@ -2367,24 +2367,47 @@
                return source_id;
        }
 
-       std::string get_transform_sid(char *rna_path, int tm_type, const char 
*axis_name)
+       // for rotation, axis name is always appended and the value of 
append_axis is ignored
+       std::string get_transform_sid(char *rna_path, int tm_type, const char 
*axis_name, bool append_axis)
        {
+               std::string tm_name;
+
+               // when given rna_path, determine tm_type from it
                if (rna_path) {
                        char *name = extract_transform_name(rna_path);
 
                        if (strstr(name, "rotation"))
-                               return std::string("rotation") + 
std::string(axis_name) + ".ANGLE";
-                       else if (!strcmp(name, "location") || !strcmp(name, 
"scale"))
-                               return std::string(name);
+                               tm_type = 0;
+                       else if (!strcmp(name, "scale"))
+                               tm_type = 1;
+                       else if (!strcmp(name, "location"))
+                               tm_type = 2;
+                       else
+                               tm_type = -1;
                }
-               else {
-                       if (tm_type == 0)
-                               return std::string("rotation") + 
std::string(axis_name) + ".ANGLE";
+
+               switch (tm_type) {
+               case 0:
+                       return std::string("rotation") + std::string(axis_name) 
+ ".ANGLE";
+               case 1:
+                       tm_name = "scale";
+                       break;
+               case 2:
+                       tm_name = "location";
+                       break;
+               default:
+                       tm_name = "";
+                       break;
+               }
+
+               if (tm_name.size()) {
+                       if (append_axis)
+                               return tm_name + std::string(".") + 
std::string(axis_name);
                        else
-                               return tm_type == 1 ? "scale" : "location";
+                               return tm_name;
                }
 
-               return NULL;
+               return std::string("");
        }
 
        char *extract_transform_name(char *rna_path)


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to