summaryrefslogtreecommitdiff
path: root/tools/collada
diff options
context:
space:
mode:
authorJuan Linietsky <reduzio@gmail.com>2014-10-09 19:44:27 -0300
committerJuan Linietsky <reduzio@gmail.com>2014-10-09 19:44:27 -0300
commit01ffe6cf89ee0ca32222f6993a2f8e3c872ce0b5 (patch)
tree8aaf86cdf21021fdf90e37fc3e1607197f2a8c1c /tools/collada
parent9142d6fc408d72178f102bad97c0c2fe1902ce55 (diff)
-Rasterizer supports meshes with both skeletons and blend shapes
-Collada exporter supports Blend Shapes (even on actions via set driven keys)
Diffstat (limited to 'tools/collada')
-rw-r--r--tools/collada/collada.cpp7
-rw-r--r--tools/collada/collada.h24
2 files changed, 21 insertions, 10 deletions
diff --git a/tools/collada/collada.cpp b/tools/collada/collada.cpp
index 16b15426df..f2e3a0e813 100644
--- a/tools/collada/collada.cpp
+++ b/tools/collada/collada.cpp
@@ -443,7 +443,10 @@ Vector<String> Collada::_read_string_array(XMLParser& parser) {
if (parser.get_node_type() == XMLParser::NODE_TEXT) {
// parse String data
String str = parser.get_node_data();
- array=str.split(" ",false);
+ array=str.split_spaces();
+ for(int i=0;i<array.size();i++) {
+ print_line(itos(i)+": "+array[i]);
+ }
}
else
if (parser.get_node_type() == XMLParser::NODE_ELEMENT_END)
@@ -2066,6 +2069,8 @@ void Collada::_parse_animation(XMLParser& parser) {
track.target=target;
}
+ print_line("TARGET: "+track.target);
+
state.animation_tracks.push_back(track);
if (!state.referenced_tracks.has(target))
diff --git a/tools/collada/collada.h b/tools/collada/collada.h
index 360f54ec05..c5e5705105 100644
--- a/tools/collada/collada.h
+++ b/tools/collada/collada.h
@@ -302,6 +302,7 @@ public:
Vector3 uv2;
Plane tangent;
Color color;
+ int uid;
struct Weight {
int bone_idx;
float weight;
@@ -331,21 +332,26 @@ public:
bool operator<(const Vertex& p_vert) const {
- if (vertex==p_vert.vertex) {
- if(normal==p_vert.normal) {
- if(uv==p_vert.uv) {
- if(uv2==p_vert.uv2) {
- return (color<p_vert.color);
+ if (uid==p_vert.uid) {
+ if (vertex==p_vert.vertex) {
+ if(normal==p_vert.normal) {
+ if(uv==p_vert.uv) {
+ if(uv2==p_vert.uv2) {
+ return (color<p_vert.color);
+ } else
+ return (uv2<p_vert.uv2);
} else
- return (uv2<p_vert.uv2);
+ return (uv<p_vert.uv);
} else
- return (uv<p_vert.uv);
+ return (normal<p_vert.normal);
} else
- return (normal<p_vert.normal);
+ return vertex<p_vert.vertex;
} else
- return vertex<p_vert.vertex;
+ return uid < p_vert.uid;
}
+
+ Vertex() { uid=0; idx=0; }
};
struct Node {