diff Walk/resources/SceneGraphRoot.js @ 0:718974a1a32b

Vacuum
author <e085737>
date Tue, 07 Dec 2010 17:31:15 +0900
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Walk/resources/SceneGraphRoot.js	Tue Dec 07 17:31:15 2010 +0900
@@ -0,0 +1,231 @@
+function SceneGraphRoot(w, h){
+    sg_src = new Array()
+    sg_exec_tree = null
+
+    //controller = create_controller()
+
+    sg_draw_tree = new Array()
+    sg_available_list = null
+    sg_remove_list = new Array()
+    sgroot = this
+
+    screen_w = w
+    screen_h = h
+
+    position_xyz = new Array(0, 0, view_point)
+    aim_xyz = new Array(0 ,0, 0)
+    eye_xyz = new Array(0, 1, 0)
+
+    angleRate_xyz = new Array(1, 0, 0)
+
+    move_finish_flag = 0
+    cnt = 0
+}
+
+
+SceneGraphRoot.prototype.createFromXMLfile = function(gl, url){
+    if(gl.obj == undefined) gl.obj = new Object();
+    var xmlChara = new Object();
+    xmlChara = parsePanel(url);
+    for (var name in xmlChara)
+        {
+            gl.obj[name] = makeXmlObj(gl, xmlChara[name]);
+            gl.obj[name].texture = loadImageTexture(gl, xmlChara[name].image);
+            gl.obj[name].name = name;
+            sg_src.push(gl.obj[name])
+ 	}
+}
+
+
+SceneGraphRoot.prototype.createSceneGraph1 = function(id){
+    if(id < 0){
+	alert("error: createSceneGraph(id): id not found")
+	return null
+    }
+
+    for(num in sg_src){
+        if(id == sg_src[num].name){
+	    var src = new SceneGraph(id)
+	}
+    }
+
+    if(sg_exec_tree != null){
+	sg_exec_tree.addChild(src)
+    }
+
+    SceneGraphRoot.prototype.addNext(src)
+
+    return src
+}
+
+
+SceneGraphRoot.prototype.createSceneGraph2 = function(name){
+    if(name < 0){
+	alert("error: createSceneGraph(name): name object not found.")
+        return null
+    }
+
+    for(num in sg_src){
+	if(name == sg_src[num].name){
+	    var src = new SceneGraph(name)
+	}
+    }
+
+
+    //SceneGraphRoot.prototype.addNext(src)
+
+    return src
+}
+
+
+SceneGraphRoot.prototype.createSceneGraph3 = function(){
+   var p = new SceneGraph() 
+
+   p.sgroot = this
+
+   SceneGraphRoot.prototype.addNext(p)
+   
+   p.flag_drawable = 0
+
+   return p
+}
+
+
+SceneGraphRoot.prototype.addNext = function(sg){
+    sg_available_list = sg
+    /*last = sg_available_list
+    if(last == null){
+        sg_available_list.push(sg)
+    }else{
+	while(last.next){
+	    last = last.next
+	}
+	    last.next = sg
+	    sg.prev = last
+    }*/
+    //cnt++
+}
+
+
+/* 渡された引数をもとにイメージを検索する */
+SceneGraphRoot.prototype.getSgid = function(obj_name){
+    for(var name in sg_src){
+        if(obj_name == sg_src[name].name){
+	    return sg_src[name]
+	}
+    }
+    return -1
+}
+
+
+SceneGraphRoot.prototype.getController = function(){   
+    var left_push     = currentlyPressedKeys[37]     /* ←  */
+    var down_push     = currentlyPressedKeys[40]     /* ↓  */
+    var right_push    = currentlyPressedKeys[39]     /* →  */
+    var up_push       = currentlyPressedKeys[38]     /* ↑  */
+    var cross_push    = currentlyPressedKeys[90]     /* Z */
+    var circle_push   = currentlyPressedKeys[88]     /* X */
+    var start_push    = currentlyPressedKeys[13]     /* Enter */ 
+    var zoom_in_push  = currentlyPressedKeys[75]     /* K */
+    var zoom_out_push = currentlyPressedKeys[76]     /* L */
+    var left_move     = currentlyPressedKeys[65]     /* A */
+    var right_move    = currentlyPressedKeys[68]     /* D */
+    var front_move    = currentlyPressedKeys[87]     /* W */
+    var back_move     = currentlyPressedKeys[83]     /* S */
+    var space_push    = currentlyPressedKeys[32]     /* SPACE */
+
+
+    this.right_isHold = function(){
+	return right_push
+    }
+
+    this.right_isRelease = function(){
+	return !right_push
+    }
+
+    this.left_isHold = function(){
+	return left_push
+    }
+
+    this.left_isRelease = function(){
+	return !left_push
+    }
+
+    this.up_isHold = function(){
+	return up_push
+    }
+
+    this.up_isRelease = function(){
+	return !up_push
+    }
+
+    this.down_isHold = function(){
+	return down_push
+    }
+
+    this.down_isRelease = function(){
+	return !down_push
+    }
+
+    this.cross_isHold = function(){
+	return cross_push
+    }
+
+    this.cross_isRelease = function(){
+	return !cross_push
+    }
+
+    this.circle_isHold = function(){
+	return circle_push
+    }
+
+    this.circle_isRelease = function(){
+	return !circle_push
+    }
+
+    this.start_isHold = function(){
+	return start_push
+    }
+
+    this.start_isRelease = function(){
+	return !start_push
+    }
+
+    this.zoom_in_isHold = function(){
+	return zoom_in_push
+    }
+
+    this.zoom_out_isHold = function(){
+	return zoom_out_push
+    }
+
+    this.left_move_isHold = function(){
+	return left_move
+    }
+
+    this.right_move_isHold = function(){
+        return right_move
+    }
+
+    this.front_move_isHold = function(){
+	return front_move
+    }
+
+    this.back_move_isHold = function(){
+        return back_move
+    }
+
+    this.space_isHold = function(){
+	return space_push
+    }
+}
+
+
+
+/* rootになるnodeを設定する */
+SceneGraphRoot.prototype.setSceneData = function(sg){
+    sg.parents = null
+    sg_exec_tree = sg
+}
+
+