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

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