Mercurial > hg > Game > Cerium
changeset 1252:7ee76065ec12 draft
add collada file reader
author | Taiki TAIRA <e095767@ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 16 Nov 2011 12:39:07 +0900 |
parents | 6da91e7cbffb (diff) d2f70da2aa19 (current diff) |
children | bb9c885c1cb5 34944900f266 |
files | |
diffstat | 2 files changed, 38 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/Renderer/Engine/SceneGraphRoot.cc Sat Nov 12 15:32:41 2011 +0900 +++ b/Renderer/Engine/SceneGraphRoot.cc Wed Nov 16 12:39:07 2011 +0900 @@ -226,6 +226,43 @@ } void +SceneGraphRoot::createFromCOLLADAfile(TaskManager *manager, const char *xmlColladafile) +{ + /*make parse dom*/ + xmlDocPtr doc; + xmlNodePtr cur; + SceneGraphPtr tmp; + + doc = xmlParseFile(xmlColladafile); + cur = xmlDocGetRootElement(doc); + + /*エラー処理……だけど何書けばいいのか謎。とりあえず-1返してみる*/ + if(xmlStrcmp(cur->name, (xmlChar*)"COLLADA")){ + return ; + }; + + /* node analyze */ + for(cur=cur->children; cur; cur=cur->next){ + + if(xmlStrcmp(cur->name,(xmlChar*)"library_imeges") != 0){ + + } + if(xmlStrcmp(cur->name,(xmlChar*)"library_effects") != 0){ + + } + if(xmlStrcmp(cur->name,(xmlChar*)"library_geometries") != 0){ + + } + if(xmlStrcmp(cur->name,(xmlChar*)"library_visual_scenes")!=0){ + } + + tmp = new SceneGraph(manager, cur); + registSceneGraph(tmp); + } + xmlFreeDoc(doc); +} + +void SceneGraphRoot::createFromXMLmemory(TaskManager *manager, SceneGraph *node, char *data, int len) { xmlDocPtr doc;
--- a/Renderer/Engine/SceneGraphRoot.h Sat Nov 12 15:32:41 2011 +0900 +++ b/Renderer/Engine/SceneGraphRoot.h Wed Nov 16 12:39:07 2011 +0900 @@ -91,6 +91,7 @@ void createStringFont(TaskManager *manager, SceneGraphPtr root,const char *string, int pixeles, int screen_w,int screen_h, Uint32 color); void createFont(TaskManager *manager,const char *font,int pixels,Uint32 color,const char *filename, int len, char **obj_name); void createFromXMLfile(TaskManager *manager, const char *); + void createFromCOLLADAfile(TaskManager *manager, const char *); void createFromXMLmemory(TaskManager *manager, SceneGraph * node, char *data, int len); SceneGraphPtr createSceneGraph(int id); SceneGraphPtr createSceneGraph();