[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