Mercurial > hg > Members > kono > Cerium
diff Renderer/Engine/SceneGraphRoot.cc @ 1002:c79651141045
many changes.
author | koba <koba@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 24 Oct 2010 19:00:47 +0900 |
parents | 9a53faae88d8 |
children | 295b3c79fb44 |
line wrap: on
line diff
--- a/Renderer/Engine/SceneGraphRoot.cc Mon Oct 11 19:42:28 2010 +0900 +++ b/Renderer/Engine/SceneGraphRoot.cc Sun Oct 24 19:00:47 2010 +0900 @@ -8,6 +8,9 @@ #include "texture.h" #include "Application.h" +//取りあえず動かす用 本来はA pplication 側で定義した post_func で値の更新するべき +#include "../../../task_dandy/dandy.h" + static int cnt = 0; static const int SGLIST_LENGTH = 138; static int sg_src_size = SGLIST_LENGTH ; @@ -699,28 +702,57 @@ void SceneGraphRoot::set_game_task(int id, void *property, int size, PostFunction post_func) -{ +{ + game_task = game_task_array->next_task_array(id, game_task); + + game_task->set_inData(0, property, size); + game_task->set_outData(0, property, size); + + /* HTask *task = sgroot->tmanager->create_task(id); task->set_cpu(SPE_ANY); - task->add_inData(property, size); - task->add_outData(property, size); - task->add_param((memaddr)1); + task->set_inData(0, property, size); + task->set_outData(0, property, size); task->set_post(post_func, (void*)property, 0); wait_game_task->wait_for(task); task->spawn(); + */ } void SceneGraphRoot::set_game_task(int id, void *property, void *pad, int size, PostFunction post_func) { + game_task = game_task_array->next_task_array(id, game_task); + + game_task->set_inData(0, property, size); + game_task->set_inData(1, pad, sizeof(Pad)); + game_task->set_outData(0, property, size); + + /* HTask *task = sgroot->tmanager->create_task(id); task->set_cpu(SPE_ANY); - task->add_inData(property, size); - task->add_inData(pad, sizeof(Pad)); - task->add_outData(property, size); + task->set_inData(0, property, size); + task->set_inData(0, pad, sizeof(Pad)); + task->set_outData(0, property, size); task->set_post(post_func, (void*)property, 0); wait_game_task->wait_for(task); task->spawn(); + */ +} + +void +SceneGraphRoot::task_array_init(int id, int task_num, int param, int inData_num, int outData_num) +{ + game_task_array = tmanager->create_task_array(id, task_num, param, inData_num, outData_num); + game_task = 0; +} + +void +SceneGraphRoot::task_array_finish() +{ + game_task_array->spawn_task_array(game_task->next()); + game_task_array->set_cpu(SPE_ANY); + game_task_array->spawn(); } void @@ -730,8 +762,11 @@ void *e = node->propertyptr; int move = node->move_id; PostFunction post_func = node->post_func; + ObjPropertyPtr property = (ObjPropertyPtr)node->propertyptr; + property->root = node; SceneGraphRoot *sgroottmp = (SceneGraphRoot*)sgroot_; + sgroottmp->set_game_task(move, (void*)e, size, post_func); } @@ -742,6 +777,8 @@ void *e = node->propertyptr; int move = node->move_id; PostFunction post_func = node->post_func; + ObjPropertyPtr property = (ObjPropertyPtr)node->propertyptr; + property->root = node; SceneGraphRoot *sgroottmp = (SceneGraphRoot*)sgroot_; void *pad = (void*)sgroottmp->getController(); @@ -750,7 +787,7 @@ } void -SceneGraphRoot::set_move_task(SceneGraphPtr node, int move, void *property, int size, +SceneGraphRoot::set_move_task(SceneGraphPtr node, int move, void *property, int size, PostFunction post_func) { node->move = main_task_move;