Mercurial > hg > Members > e085737 > sample
view Pants_FPS/resources/SceneGraphRoot.js @ 17:bf87fe5a9797
ver3
author | <e085737> |
---|---|
date | Fri, 10 Dec 2010 20:19:03 +0900 |
parents | 9367d87879ee |
children | 931ad40d56f5 |
line wrap: on
line source
function SceneGraphRoot(w, h){ sg_exec_tree = null //controller = create_controller() sg_draw_tree = new Array() sg_available_list = null screen_w = w screen_h = h position_xyz = new Array(0, 0, 0) aim_xyz = new Array(0 ,0, 1) eye_xyz = new Array(0, -1, 0) this.sg_src = new Array() this.camera = null angleRate_xyz = new Array(1, 0, 0) //cnt = 0 } SceneGraphRoot.prototype.createFromXMLfile = function(gl, sgroot, 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) sgroot.sg_src[name] = gl.obj[name] } } SceneGraphRoot.prototype.createSceneGraph1 = function(id){ if(id < 0){ alert("error: createSceneGraph(id): id not found") return null } var src = new SceneGraph(id) src.id = id if(sg_exec_tree != null){ sg_exec_tree.addChild(src) } 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 } /* 渡された引数をもとにイメージを検索する */ 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.setCamera = function(sgroot, node){ this.camera = node } SceneGraphRoot.prototype.getCamera = function(ctx, node){ if(node.mat != null){ ctx.perspectiveMatrix = new J3DIMatrix4() node.mat.getAsArrayMatrix(ctx.perspectiveMatrix.$matrix) }else{ ctx.perspectiveMatrix = new J3DIMatrix4() } ctx.perspectiveMatrix.perspective(45, width/height, 1, 10000); ctx.perspectiveMatrix.rotate(cameraAngle_xyz[0],0,1,0) ctx.perspectiveMatrix.rotate(cameraAngle_xyz[1], angleRate_xyz[0], 0, angleRate_xyz[2]) ctx.perspectiveMatrix.lookat(position_xyz[0],position_xyz[1],position_xyz[2], aim_xyz[0], aim_xyz[1], aim_xyz[2], 0, -1, 0); //ctx.perspectiveMatrix.lookat( 0, 0, 0, 0, 0, 1, 0, -1, 0); } 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 }