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);
-}