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();