annotate Pants_FPS/resources/SceneGraphRoot.js @ 17:bf87fe5a9797

ver3
author <e085737>
date Fri, 10 Dec 2010 20:19:03 +0900
parents 9367d87879ee
children 931ad40d56f5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
13
<e085737>
parents:
diff changeset
1 function SceneGraphRoot(w, h){
<e085737>
parents:
diff changeset
2 sg_exec_tree = null
<e085737>
parents:
diff changeset
3
<e085737>
parents:
diff changeset
4 //controller = create_controller()
<e085737>
parents:
diff changeset
5
<e085737>
parents:
diff changeset
6 sg_draw_tree = new Array()
<e085737>
parents:
diff changeset
7 sg_available_list = null
<e085737>
parents:
diff changeset
8
<e085737>
parents:
diff changeset
9 screen_w = w
<e085737>
parents:
diff changeset
10 screen_h = h
<e085737>
parents:
diff changeset
11
16
<e085737>
parents: 13
diff changeset
12 position_xyz = new Array(0, 0, 0)
<e085737>
parents: 13
diff changeset
13 aim_xyz = new Array(0 ,0, 1)
13
<e085737>
parents:
diff changeset
14 eye_xyz = new Array(0, -1, 0)
<e085737>
parents:
diff changeset
15 this.sg_src = new Array()
17
<e085737>
parents: 16
diff changeset
16 this.camera = null
13
<e085737>
parents:
diff changeset
17
<e085737>
parents:
diff changeset
18 angleRate_xyz = new Array(1, 0, 0)
<e085737>
parents:
diff changeset
19
<e085737>
parents:
diff changeset
20 //cnt = 0
<e085737>
parents:
diff changeset
21 }
<e085737>
parents:
diff changeset
22
<e085737>
parents:
diff changeset
23
<e085737>
parents:
diff changeset
24 SceneGraphRoot.prototype.createFromXMLfile = function(gl, sgroot, url){
<e085737>
parents:
diff changeset
25 if(gl.obj == undefined) gl.obj = new Object();
<e085737>
parents:
diff changeset
26 var xmlChara = new Object();
<e085737>
parents:
diff changeset
27 xmlChara = parsePanel(url);
<e085737>
parents:
diff changeset
28 for (var name in xmlChara)
<e085737>
parents:
diff changeset
29 {
<e085737>
parents:
diff changeset
30 gl.obj[name] = makeXmlObj(gl, xmlChara[name])
<e085737>
parents:
diff changeset
31 gl.obj[name].texture = loadImageTexture(gl, xmlChara[name].image)
<e085737>
parents:
diff changeset
32 sgroot.sg_src[name] = gl.obj[name]
<e085737>
parents:
diff changeset
33 }
<e085737>
parents:
diff changeset
34 }
<e085737>
parents:
diff changeset
35
<e085737>
parents:
diff changeset
36
<e085737>
parents:
diff changeset
37 SceneGraphRoot.prototype.createSceneGraph1 = function(id){
<e085737>
parents:
diff changeset
38 if(id < 0){
<e085737>
parents:
diff changeset
39 alert("error: createSceneGraph(id): id not found")
<e085737>
parents:
diff changeset
40 return null
<e085737>
parents:
diff changeset
41 }
<e085737>
parents:
diff changeset
42
<e085737>
parents:
diff changeset
43 var src = new SceneGraph(id)
16
<e085737>
parents: 13
diff changeset
44 src.id = id
13
<e085737>
parents:
diff changeset
45
<e085737>
parents:
diff changeset
46 if(sg_exec_tree != null){
<e085737>
parents:
diff changeset
47 sg_exec_tree.addChild(src)
<e085737>
parents:
diff changeset
48 }
<e085737>
parents:
diff changeset
49
<e085737>
parents:
diff changeset
50 SceneGraphRoot.prototype.addNext(src)
<e085737>
parents:
diff changeset
51
<e085737>
parents:
diff changeset
52 return src
<e085737>
parents:
diff changeset
53 }
<e085737>
parents:
diff changeset
54
<e085737>
parents:
diff changeset
55
<e085737>
parents:
diff changeset
56 SceneGraphRoot.prototype.createSceneGraph3 = function(){
<e085737>
parents:
diff changeset
57 var p = new SceneGraph()
<e085737>
parents:
diff changeset
58
<e085737>
parents:
diff changeset
59 p.sgroot = this
<e085737>
parents:
diff changeset
60
<e085737>
parents:
diff changeset
61 SceneGraphRoot.prototype.addNext(p)
<e085737>
parents:
diff changeset
62
<e085737>
parents:
diff changeset
63 p.flag_drawable = 0
<e085737>
parents:
diff changeset
64
<e085737>
parents:
diff changeset
65 return p
<e085737>
parents:
diff changeset
66 }
<e085737>
parents:
diff changeset
67
<e085737>
parents:
diff changeset
68
<e085737>
parents:
diff changeset
69 SceneGraphRoot.prototype.addNext = function(sg){
<e085737>
parents:
diff changeset
70 sg_available_list = sg
<e085737>
parents:
diff changeset
71 }
<e085737>
parents:
diff changeset
72
<e085737>
parents:
diff changeset
73 /* 渡された引数をもとにイメージを検索する */
<e085737>
parents:
diff changeset
74 SceneGraphRoot.prototype.getSgid = function(obj_name){
<e085737>
parents:
diff changeset
75 for(var name in sg_src){
<e085737>
parents:
diff changeset
76 if(obj_name == sg_src[name].name){
<e085737>
parents:
diff changeset
77 return sg_src[name]
<e085737>
parents:
diff changeset
78 }
<e085737>
parents:
diff changeset
79 }
<e085737>
parents:
diff changeset
80 return -1
<e085737>
parents:
diff changeset
81 }
<e085737>
parents:
diff changeset
82
<e085737>
parents:
diff changeset
83
17
<e085737>
parents: 16
diff changeset
84 SceneGraphRoot.prototype.setCamera = function(sgroot, node){
<e085737>
parents: 16
diff changeset
85 this.camera = node
<e085737>
parents: 16
diff changeset
86 }
<e085737>
parents: 16
diff changeset
87
<e085737>
parents: 16
diff changeset
88
<e085737>
parents: 16
diff changeset
89
<e085737>
parents: 16
diff changeset
90 SceneGraphRoot.prototype.getCamera = function(ctx, node){
<e085737>
parents: 16
diff changeset
91 if(node.mat != null){
<e085737>
parents: 16
diff changeset
92 ctx.perspectiveMatrix = new J3DIMatrix4()
<e085737>
parents: 16
diff changeset
93 node.mat.getAsArrayMatrix(ctx.perspectiveMatrix.$matrix)
<e085737>
parents: 16
diff changeset
94 }else{
<e085737>
parents: 16
diff changeset
95 ctx.perspectiveMatrix = new J3DIMatrix4()
<e085737>
parents: 16
diff changeset
96 }
<e085737>
parents: 16
diff changeset
97
<e085737>
parents: 16
diff changeset
98 ctx.perspectiveMatrix.perspective(45, width/height, 1, 10000);
<e085737>
parents: 16
diff changeset
99 ctx.perspectiveMatrix.rotate(cameraAngle_xyz[0],0,1,0)
<e085737>
parents: 16
diff changeset
100 ctx.perspectiveMatrix.rotate(cameraAngle_xyz[1], angleRate_xyz[0], 0, angleRate_xyz[2])
<e085737>
parents: 16
diff changeset
101
<e085737>
parents: 16
diff changeset
102
<e085737>
parents: 16
diff changeset
103 ctx.perspectiveMatrix.lookat(position_xyz[0],position_xyz[1],position_xyz[2], aim_xyz[0], aim_xyz[1], aim_xyz[2], 0, -1, 0);
<e085737>
parents: 16
diff changeset
104 //ctx.perspectiveMatrix.lookat( 0, 0, 0, 0, 0, 1, 0, -1, 0);
<e085737>
parents: 16
diff changeset
105 }
<e085737>
parents: 16
diff changeset
106
<e085737>
parents: 16
diff changeset
107
<e085737>
parents: 16
diff changeset
108
<e085737>
parents: 16
diff changeset
109
<e085737>
parents: 16
diff changeset
110
<e085737>
parents: 16
diff changeset
111
13
<e085737>
parents:
diff changeset
112 SceneGraphRoot.prototype.getController = function(){
<e085737>
parents:
diff changeset
113 var left_push = currentlyPressedKeys[37] /* ← */
<e085737>
parents:
diff changeset
114 var down_push = currentlyPressedKeys[40] /* ↓ */
<e085737>
parents:
diff changeset
115 var right_push = currentlyPressedKeys[39] /* → */
<e085737>
parents:
diff changeset
116 var up_push = currentlyPressedKeys[38] /* ↑ */
<e085737>
parents:
diff changeset
117 var cross_push = currentlyPressedKeys[90] /* Z */
<e085737>
parents:
diff changeset
118 var circle_push = currentlyPressedKeys[88] /* X */
<e085737>
parents:
diff changeset
119 var start_push = currentlyPressedKeys[13] /* Enter */
<e085737>
parents:
diff changeset
120 var zoom_in_push = currentlyPressedKeys[75] /* K */
<e085737>
parents:
diff changeset
121 var zoom_out_push = currentlyPressedKeys[76] /* L */
<e085737>
parents:
diff changeset
122 var left_move = currentlyPressedKeys[65] /* A */
<e085737>
parents:
diff changeset
123 var right_move = currentlyPressedKeys[68] /* D */
<e085737>
parents:
diff changeset
124 var front_move = currentlyPressedKeys[87] /* W */
<e085737>
parents:
diff changeset
125 var back_move = currentlyPressedKeys[83] /* S */
<e085737>
parents:
diff changeset
126 var space_push = currentlyPressedKeys[32] /* SPACE */
<e085737>
parents:
diff changeset
127
<e085737>
parents:
diff changeset
128
<e085737>
parents:
diff changeset
129 this.right_isHold = function(){
<e085737>
parents:
diff changeset
130 return right_push
<e085737>
parents:
diff changeset
131 }
<e085737>
parents:
diff changeset
132
<e085737>
parents:
diff changeset
133 this.right_isRelease = function(){
<e085737>
parents:
diff changeset
134 return !right_push
<e085737>
parents:
diff changeset
135 }
<e085737>
parents:
diff changeset
136
<e085737>
parents:
diff changeset
137 this.left_isHold = function(){
<e085737>
parents:
diff changeset
138 return left_push
<e085737>
parents:
diff changeset
139 }
<e085737>
parents:
diff changeset
140
<e085737>
parents:
diff changeset
141 this.left_isRelease = function(){
<e085737>
parents:
diff changeset
142 return !left_push
<e085737>
parents:
diff changeset
143 }
<e085737>
parents:
diff changeset
144
<e085737>
parents:
diff changeset
145 this.up_isHold = function(){
<e085737>
parents:
diff changeset
146 return up_push
<e085737>
parents:
diff changeset
147 }
<e085737>
parents:
diff changeset
148
<e085737>
parents:
diff changeset
149 this.up_isRelease = function(){
<e085737>
parents:
diff changeset
150 return !up_push
<e085737>
parents:
diff changeset
151 }
<e085737>
parents:
diff changeset
152
<e085737>
parents:
diff changeset
153 this.down_isHold = function(){
<e085737>
parents:
diff changeset
154 return down_push
<e085737>
parents:
diff changeset
155 }
<e085737>
parents:
diff changeset
156
<e085737>
parents:
diff changeset
157 this.down_isRelease = function(){
<e085737>
parents:
diff changeset
158 return !down_push
<e085737>
parents:
diff changeset
159 }
<e085737>
parents:
diff changeset
160
<e085737>
parents:
diff changeset
161 this.cross_isHold = function(){
<e085737>
parents:
diff changeset
162 return cross_push
<e085737>
parents:
diff changeset
163 }
<e085737>
parents:
diff changeset
164
<e085737>
parents:
diff changeset
165 this.cross_isRelease = function(){
<e085737>
parents:
diff changeset
166 return !cross_push
<e085737>
parents:
diff changeset
167 }
<e085737>
parents:
diff changeset
168
<e085737>
parents:
diff changeset
169 this.circle_isHold = function(){
<e085737>
parents:
diff changeset
170 return circle_push
<e085737>
parents:
diff changeset
171 }
<e085737>
parents:
diff changeset
172
<e085737>
parents:
diff changeset
173 this.circle_isRelease = function(){
<e085737>
parents:
diff changeset
174 return !circle_push
<e085737>
parents:
diff changeset
175 }
<e085737>
parents:
diff changeset
176
<e085737>
parents:
diff changeset
177 this.start_isHold = function(){
<e085737>
parents:
diff changeset
178 return start_push
<e085737>
parents:
diff changeset
179 }
<e085737>
parents:
diff changeset
180
<e085737>
parents:
diff changeset
181 this.start_isRelease = function(){
<e085737>
parents:
diff changeset
182 return !start_push
<e085737>
parents:
diff changeset
183 }
<e085737>
parents:
diff changeset
184
<e085737>
parents:
diff changeset
185 this.zoom_in_isHold = function(){
<e085737>
parents:
diff changeset
186 return zoom_in_push
<e085737>
parents:
diff changeset
187 }
<e085737>
parents:
diff changeset
188
<e085737>
parents:
diff changeset
189 this.zoom_out_isHold = function(){
<e085737>
parents:
diff changeset
190 return zoom_out_push
<e085737>
parents:
diff changeset
191 }
<e085737>
parents:
diff changeset
192
<e085737>
parents:
diff changeset
193 this.left_move_isHold = function(){
<e085737>
parents:
diff changeset
194 return left_move
<e085737>
parents:
diff changeset
195 }
<e085737>
parents:
diff changeset
196
<e085737>
parents:
diff changeset
197 this.right_move_isHold = function(){
<e085737>
parents:
diff changeset
198 return right_move
<e085737>
parents:
diff changeset
199 }
<e085737>
parents:
diff changeset
200
<e085737>
parents:
diff changeset
201 this.front_move_isHold = function(){
<e085737>
parents:
diff changeset
202 return front_move
<e085737>
parents:
diff changeset
203 }
<e085737>
parents:
diff changeset
204
<e085737>
parents:
diff changeset
205 this.back_move_isHold = function(){
<e085737>
parents:
diff changeset
206 return back_move
<e085737>
parents:
diff changeset
207 }
<e085737>
parents:
diff changeset
208
<e085737>
parents:
diff changeset
209 this.space_isHold = function(){
<e085737>
parents:
diff changeset
210 return space_push
<e085737>
parents:
diff changeset
211 }
<e085737>
parents:
diff changeset
212 }
<e085737>
parents:
diff changeset
213
<e085737>
parents:
diff changeset
214
<e085737>
parents:
diff changeset
215
<e085737>
parents:
diff changeset
216 /* rootになるnodeを設定する */
<e085737>
parents:
diff changeset
217 SceneGraphRoot.prototype.setSceneData = function(sg){
<e085737>
parents:
diff changeset
218 sg.parents = null
<e085737>
parents:
diff changeset
219 sg_exec_tree = sg
<e085737>
parents:
diff changeset
220 }
<e085737>
parents:
diff changeset
221
<e085737>
parents:
diff changeset
222