goat3d

diff src/goat3d_writexml.cc @ 30:0fe02696fb1e

yeeay, the max plugin works :)
author John Tsiombikas <nuclear@member.fsf.org>
date Sun, 29 Sep 2013 23:05:44 +0300
parents b35427826b60
children a5c5cec3cb88
line diff
     1.1 --- a/src/goat3d_writexml.cc	Sun Sep 29 21:53:03 2013 +0300
     1.2 +++ b/src/goat3d_writexml.cc	Sun Sep 29 23:05:44 2013 +0300
     1.3 @@ -97,6 +97,46 @@
     1.4  
     1.5  static bool write_node(const Scene *scn, goat3d_io *io, const Node *node, int level)
     1.6  {
     1.7 +	xmlout(io, level, "<node>\n");
     1.8 +	xmlout(io, level + 1, "<name string=\"%s\"/>\n", node->get_name());
     1.9 +
    1.10 +	XFormNode *parent = node->get_parent();
    1.11 +	if(parent) {
    1.12 +		xmlout(io, level + 1, "<parent string=\"%s\"/>\n", parent->get_name());
    1.13 +	}
    1.14 +
    1.15 +	const char *type = 0;
    1.16 +	const Object *obj = node->get_object();
    1.17 +	if(dynamic_cast<const Mesh*>(obj)) {
    1.18 +		type = "mesh";
    1.19 +	} else if(dynamic_cast<const Light*>(obj)) {
    1.20 +		type = "light";
    1.21 +	} else if(dynamic_cast<const Camera*>(obj)) {
    1.22 +		type = "camera";
    1.23 +	}
    1.24 +
    1.25 +	if(type) {
    1.26 +		xmlout(io, level + 1, "<%s string=\"%s\"/>\n", type, obj->name.c_str());
    1.27 +	}
    1.28 +
    1.29 +	Vector3 pos = node->get_node_position();
    1.30 +	Quaternion rot = node->get_node_rotation();
    1.31 +	Vector3 scale = node->get_node_scaling();
    1.32 +	Vector3 pivot = node->get_pivot();
    1.33 +
    1.34 +	Matrix4x4 xform;
    1.35 +	node->get_node_xform(0, &xform);
    1.36 +
    1.37 +	xmlout(io, level + 1, "<pos float3=\"%g %g %g\"/>\n", pos.x, pos.y, pos.z);
    1.38 +	xmlout(io, level + 1, "<rot float4=\"%g %g %g %g\"/>\n", rot.v.x, rot.v.y, rot.v.z, rot.s);
    1.39 +	xmlout(io, level + 1, "<scale float3=\"%g %g %g\"/>\n", scale.x, scale.y, scale.z);
    1.40 +	xmlout(io, level + 1, "<pivot float3=\"%g %g %g\"/>\n", pivot.x, pivot.y, pivot.z);
    1.41 +
    1.42 +	xmlout(io, level + 1, "<matrix0 float4=\"%g %g %g %g\"/>\n", xform[0][0], xform[0][1], xform[0][2], xform[0][3]);
    1.43 +	xmlout(io, level + 1, "<matrix1 float4=\"%g %g %g %g\"/>\n", xform[1][0], xform[1][1], xform[1][2], xform[1][3]);
    1.44 +	xmlout(io, level + 1, "<matrix2 float4=\"%g %g %g %g\"/>\n", xform[2][0], xform[2][1], xform[2][2], xform[2][3]);
    1.45 +
    1.46 +	xmlout(io, level, "</node>\n");
    1.47  	return true;
    1.48  }
    1.49