# HG changeset patch # User John Tsiombikas # Date 1389975369 -7200 # Node ID fa5c52ea9d59296db3b72c84ff309a2d94021813 # Parent 9ef9de80649c0a1136c4e28ea04e64f3d04266ec foo diff -r 9ef9de80649c -r fa5c52ea9d59 src/goat3d.cc --- a/src/goat3d.cc Sun Dec 29 06:01:59 2013 +0200 +++ b/src/goat3d.cc Fri Jan 17 18:16:09 2014 +0200 @@ -294,7 +294,7 @@ GOAT3DAPI void goat3d_set_mtl_attrib_map(struct goat3d_material *mtl, const char *attrib, const char *mapname) { - (*mtl)[attrib].map = goat3d_clean_filename(mapname); + (*mtl)[attrib].map = clean_filename(mapname); } GOAT3DAPI const char *goat3d_get_mtl_attrib_map(struct goat3d_material *mtl, const char *attrib) @@ -909,7 +909,7 @@ return ftell((FILE*)uptr); } -std::string goat3d_clean_filename(const char *str) +std::string g3dimpl::clean_filename(const char *str) { const char *last_slash = strrchr(str, '/'); if(!last_slash) { diff -r 9ef9de80649c -r fa5c52ea9d59 src/goat3d_impl.h --- a/src/goat3d_impl.h Sun Dec 29 06:01:59 2013 +0200 +++ b/src/goat3d_impl.h Fri Jan 17 18:16:09 2014 +0200 @@ -23,7 +23,7 @@ #define VECDATA(type, data, num) \ MOVE(std::vector((type*)(data), (type*)(data) + (num))) -std::string goat3d_clean_filename(const char *str); +std::string clean_filename(const char *str); class Scene { diff -r 9ef9de80649c -r fa5c52ea9d59 src/goat3d_readxml.cc --- a/src/goat3d_readxml.cc Sun Dec 29 06:01:59 2013 +0200 +++ b/src/goat3d_readxml.cc Fri Jan 17 18:16:09 2014 +0200 @@ -66,6 +66,49 @@ return true; } +bool Scene::load_anim_xml(goat3d_io *io) +{ + long bytes = io->seek(0, SEEK_END, io->cls); + io->seek(0, SEEK_SET, io->cls); + + char *buf = new char[bytes]; + if(io->read(buf, bytes, io->cls) < bytes) { + logmsg(LOG_ERROR, "failed to read XML animation file\n"); + delete [] buf; + return false; + } + + XMLDocument xml; + XMLError err = xml.Parse(buf, bytes); + if(err) { + logmsg(LOG_ERROR, "failed to parse XML animation file: %s\n%s\n", xml.GetErrorStr1(), + xml.GetErrorStr2()); + delete [] buf; + return false; + } + + XMLElement *root = xml.RootElement(); + if(strcmp(root->Name(), "anim") != 0) { + logmsg(LOG_ERROR, "invalid XML file, root node is not \n"); + delete [] buf; + return false; + } + + XMLElement *elem; + + elem = root->FirstChildElement(); + while(elem) { + const char *elem_name = elem->Name(); + + if(strcmp(elem_name, "name") == 0) { + } else if(strcmp(elem_name, "attr") == 0) { + } + elem = elem->NextSiblingElement(); + } + + delete [] buf; + return true; +} static Material *read_material(Scene *scn, XMLElement *xml_mtl) { diff -r 9ef9de80649c -r fa5c52ea9d59 src/goat3d_write.cc --- a/src/goat3d_write.cc Sun Dec 29 06:01:59 2013 +0200 +++ b/src/goat3d_write.cc Fri Jan 17 18:16:09 2014 +0200 @@ -68,6 +68,11 @@ return false; } +bool Scene::save_anim(const XFormNode *node, goat3d_io *io) const +{ + return false; +} + #if 0 static long save_env(const Scene *scn, long offset, goat3d_io *io) diff -r 9ef9de80649c -r fa5c52ea9d59 src/goat3d_writexml.cc --- a/src/goat3d_writexml.cc Sun Dec 29 06:01:59 2013 +0200 +++ b/src/goat3d_writexml.cc Fri Jan 17 18:16:09 2014 +0200 @@ -118,7 +118,7 @@ if(mesh->material) { xmlout(io, level + 1, "\n", mesh->material->name.c_str()); } - xmlout(io, level + 1, "\n", goat3d_clean_filename(mesh_filename).c_str()); + xmlout(io, level + 1, "\n", clean_filename(mesh_filename).c_str()); xmlout(io, level, "\n\n"); return true; } @@ -180,7 +180,7 @@ static bool write_node_anim(goat3d_io *io, const XFormNode *node, int level) { - /* NOTE: the order of names must correspond to the order of + /* NOTE: the order of names must correspond to the order of the * XFormNode::POSITION_TRACK/ROTATION_TRACK/SCALING_TRACK enum */ static const char *attr_names[] = { "position", "rotation", "scaling" };