Mercurial > hg > Game > Cerium
comparison Renderer/Engine/SceneGraphRoot.cc @ 653:7a311860a76e draft
remove global variable "sgroot" , add SgChange.{cc, h} SgMain.cc SgRootChange.{cc, h}
author | hiroki@henri.cr.ie.u-ryukyu.ac.jp |
---|---|
date | Wed, 25 Nov 2009 21:56:14 +0900 |
parents | 1bfa45a08fa7 |
children | 24054155368c 18d31d18a6b2 |
comparison
equal
deleted
inserted
replaced
646:9f9390b45f78 | 653:7a311860a76e |
---|---|
22 { | 22 { |
23 // SGLIST_LENGTH 決め打ちかぁ、動的生成にする場合上限決めておいた方がいいのかな | 23 // SGLIST_LENGTH 決め打ちかぁ、動的生成にする場合上限決めておいた方がいいのかな |
24 // | 24 // |
25 sg_src = (SceneGraphPtr*) malloc(sizeof(SceneGraphPtr)*SGLIST_LENGTH); | 25 sg_src = (SceneGraphPtr*) malloc(sizeof(SceneGraphPtr)*SGLIST_LENGTH); |
26 | 26 |
27 camera = new Camera(w, h); | 27 camera = new Camera(w, h, this); |
28 light = new Light(w, h); | 28 light = new Light(w, h); |
29 iterator = new SceneGraphIterator; | 29 iterator = new SceneGraphIterator; |
30 controller = create_controller(); | 30 controller = create_controller(); |
31 | 31 |
32 sg_exec_tree = NULL; | 32 sg_exec_tree = NULL; |
181 src = sg_src[id]; | 181 src = sg_src[id]; |
182 | 182 |
183 /* ユーザーにはオリジナルの clone を返す */ | 183 /* ユーザーにはオリジナルの clone を返す */ |
184 p = src->clone(); | 184 p = src->clone(); |
185 | 185 |
186 /* move, collision に sgroot を渡したいのでここで sgroot を渡しておく*/ | |
187 p->sgroot = (void *)this; | |
188 | |
186 addNext(p); | 189 addNext(p); |
187 | 190 |
188 return p; | 191 return p; |
189 } | 192 } |
190 | 193 |
205 /* オリジナルの SceneGraph */ | 208 /* オリジナルの SceneGraph */ |
206 src = sg_src[id]; | 209 src = sg_src[id]; |
207 | 210 |
208 /* ユーザーにはオリジナルの clone を返す */ | 211 /* ユーザーにはオリジナルの clone を返す */ |
209 p = src->clone(); | 212 p = src->clone(); |
213 | |
214 /* move, collision に sgroot を渡したいのでここで sgroot を渡しておく*/ | |
215 p->sgroot = (void *)this; | |
210 | 216 |
211 addNext(p); | 217 addNext(p); |
212 | 218 |
213 return p; | 219 return p; |
214 } | 220 } |
237 */ | 243 */ |
238 SceneGraphPtr | 244 SceneGraphPtr |
239 SceneGraphRoot::createSceneGraph() | 245 SceneGraphRoot::createSceneGraph() |
240 { | 246 { |
241 SceneGraphPtr p = new SceneGraph; | 247 SceneGraphPtr p = new SceneGraph; |
248 | |
249 /* move, collision に sgroot を渡したいのでここで sgroot を渡しておく*/ | |
250 p->sgroot = (void *)this; | |
242 | 251 |
243 addNext(p); | 252 addNext(p); |
244 p->flag_drawable = 0; | 253 p->flag_drawable = 0; |
245 | 254 |
246 return p; | 255 return p; |
390 while (list) { | 399 while (list) { |
391 | 400 |
392 list->move_execute(screen_w, screen_h); | 401 list->move_execute(screen_w, screen_h); |
393 list->collision_check(screen_w, screen_h, list); | 402 list->collision_check(screen_w, screen_h, list); |
394 | 403 |
395 list->frame++; | 404 list->frame++; |
396 list = list->next; | 405 list = list->next; |
397 | |
398 } | 406 } |
399 | 407 |
400 if(sg_exec_tree != NULL) { | 408 if(sg_exec_tree != NULL) { |
401 return; | 409 return; |
402 } | 410 } |