[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [27878] trunk/blender/source/blender/ collada/DocumentExporter.cpp: Merge -c 27876 from COLLADA branch into trunk .
Arystanbek Dyussenov
arystan.d at gmail.com
Tue Mar 30 20:21:47 CEST 2010
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)
More information about the Bf-blender-cvs
mailing list