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 }