Mercurial > hg > Members > tkaito > task_dandy
diff stage_init.cc @ 26:6bea374ee604
global alloc test.
author | koba <koba@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 10 Dec 2010 02:20:37 +0900 |
parents | 3fb8a6a34e24 |
children | 34fde39c0a31 |
line wrap: on
line diff
--- a/stage_init.cc Tue Oct 26 17:28:56 2010 +0900 +++ b/stage_init.cc Fri Dec 10 02:20:37 2010 +0900 @@ -1,25 +1,63 @@ #include "dandy.h" -void -create_crab(SchedTask *s, void *charactor_, void *b) +HTaskPtr +pad_alloc(Viewer *sgroot) +{ + HTaskPtr task = sgroot->manager->create_task(PAD_ALLOCATE); + void *pad = (void*)sgroot->getController(); + int size = sizeof(Pad); + + task->set_param(0, PAD_INPUT); + task->set_param(1, size); + task->add_inData(pad, size); + task->set_cpu(SPE_ANY); + task->spawn(); + + return task; +} + +HTaskPtr +pad_update(SceneGraphRoot *sgroot) { - ObjPropertyPtr charactor = (ObjPropertyPtr)charactor_; - SceneGraphPtr crab = (SceneGraphPtr)charactor->root; + HTaskPtr task = sgroot->tmanager->create_task(PAD_UPDATE); + void *pad = (void*)sgroot->getController(); + int size = sizeof(Pad); + + task->set_param(0, PAD_INPUT); + task->set_param(1, size); + task->add_inData(pad, size); + task->set_cpu(SPE_ANY); + task->spawn(); - crab->xyz[0] = charactor->x; - crab->xyz[1] = charactor->y; + return task; +} + +HTaskPtr +pad_free(Viewer *sgroot) +{ + HTaskPtr task = sgroot->manager->create_task(PAD_FREE); + + task->set_param(0, PAD_INPUT); + task->set_cpu(SPE_ANY); + task->spawn(); + + return task; } void -create_title(SchedTask *s, void *charactor_, void *b) +title_move(SceneGraphPtr node, void *sgroot_, int w, int h) { - ObjPropertyPtr charactor = (ObjPropertyPtr)charactor_; - SceneGraphPtr title = (SceneGraphPtr)charactor->root; + SceneGraphRoot *sgroot = (SceneGraphRoot *)sgroot_; - if (charactor->flag == 1) { - title->remove(); - charactor->flag = 0; - } + HTaskPtr update = pad_update(sgroot); + HTaskPtr title_task = sgroot->tmanager->create_task(TITLE_MOVE); + int size = sizeof(ObjProperty); + title_task->set_param(0, PAD_INPUT); + title_task->add_inData((void *)&charactor[0], size); + title_task->add_outData((void *)&charactor[0], size); + title_task->set_cpu(SPE_ANY); + title_task->wait_for(update); + title_task->spawn(); } void @@ -35,48 +73,13 @@ charactor[0].vy = 0.0; charactor[0].flag = 0; charactor[0].parent = (void*)root; - + title->xyz[0] = charactor[0].x; title->xyz[1] = charactor[0].y; + title->set_move_collision(title_move); - SceneGraphPtr crab = (SceneGraphPtr)charactor[1].root; - charactor[1].x = w/2; - charactor[1].y = h/2; - charactor[1].vx = 1.0; - charactor[1].vy = 1.0; - charactor[1].flag = 0; - charactor[1].parent = (void*)root; - - crab->xyz[0] = charactor[1].x; - crab->xyz[1] = charactor[1].y; - crab->flag_drawable = 0; + pad_alloc(sgroot); - int size = sizeof(ObjProperty); - sgroot->task_array_init(TITLE_MOVE, TASK_NUM, PARAMETER, INDATA_NUM, OUTDATA_NUM); - sgroot->set_pad_task(title, TITLE_MOVE, (void*)&charactor[0], size, create_title); - sgroot->set_pad_task(crab, CRAB_MOVE, (void*)&charactor[1], size, create_crab); - root->addChild(title); - root->addChild(crab); sgroot->setSceneData(root); } - - -void -create_stage(void *sgroot_, int w, int h, ObjPropertyPtr charactor) -{ - SceneGraphRoot *sgroot = (SceneGraphRoot *)sgroot_; - - SceneGraphPtr stage = sgroot->createSceneGraph(); - SceneGraphPtr mydandy = sgroot->createSceneGraph("mydandy"); - - //mydandy->set_move_collision(dandy_move, dandy_coll); - //stage->set_move_collision(stage_move, stage_coll); - - mydandy->xyz[0] = w/2; - mydandy->xyz[1] = h*0.9; - mydandy->xyz[2] = 0.0f; - - stage->addChild(mydandy); - sgroot->setSceneData(stage); -}