Mercurial > hg > Game > Cerium
changeset 419:a3ef5c15edac draft
merge
author | Hiroki NAKASONE <hiroki@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 23 Sep 2009 21:24:38 +0900 |
parents | 0e62e80fc039 (diff) a10f5322d262 (current diff) |
children | cd9baead0c39 |
files | TaskManager/Test/test_render/Makefile TaskManager/Test/test_render/task/task_init.cc TaskManager/Test/test_render/viewer.cc |
diffstat | 11 files changed, 154 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/TaskManager/Test/test_render/Func.h Wed Sep 23 20:59:32 2009 +0900 +++ b/TaskManager/Test/test_render/Func.h Wed Sep 23 21:24:38 2009 +0900 @@ -29,7 +29,8 @@ TASK_SWITCH, SHOW_TIME, - SEND_KEY, + UPDATE_KEY, + INIT_KEY_TASK, CHAIN_MOVE, };
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TaskManager/Test/test_render/KeyStat.h Wed Sep 23 21:24:38 2009 +0900 @@ -0,0 +1,18 @@ +#ifndef INCLUDED_KEY_STATUS +#define INCLUDED_KEY_STATUS + +enum { + NONE, + HOLD, + PUSH, +}; + +typedef struct key_stat { + int right; + int left; + int up; + int down; + int circle; +}; + +#endif
--- a/TaskManager/Test/test_render/Makefile Wed Sep 23 20:59:32 2009 +0900 +++ b/TaskManager/Test/test_render/Makefile Wed Sep 23 21:24:38 2009 +0900 @@ -34,7 +34,7 @@ run-ps3: /usr/sbin/ps3-video-mode -v 133 - ./test_nogl -video fb -width 1920 -height 1080 -sg 17 + ./test_nogl -video fb -width 1920 -height 1080 run-ps3tv: ./test_nogl -video fb -width 576 -height 384 -bpp 32
--- a/TaskManager/Test/test_render/global_alloc.h Wed Sep 23 20:59:32 2009 +0900 +++ b/TaskManager/Test/test_render/global_alloc.h Wed Sep 23 21:24:38 2009 +0900 @@ -11,7 +11,7 @@ TEXTURE_ID, GLOBAL_TEXTURE_HASH, GLOBAL_TILE_LIST, - + KEY_STATUS, }; #endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TaskManager/Test/test_render/task/InitKey.cc Wed Sep 23 21:24:38 2009 +0900 @@ -0,0 +1,16 @@ +#include <stdlib.h> +#include <string.h> +#include "InitKey.h" +#include "Func.h" +#include "global_alloc.h" +#include "KeyStat.h" + +SchedDefineTask(InitKey); + +int +InitKey::run(SchedTask *smanager, void *rbuf , void *wbuf) +{ + void *key = smanager->global_alloc(KEY_STATUS, sizeof(key_stat)); + + return 0; +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TaskManager/Test/test_render/task/InitKey.h Wed Sep 23 21:24:38 2009 +0900 @@ -0,0 +1,13 @@ +#ifndef INCLUDED_TASK_INIT_KEY +#define INCLUDED_TASK_INIT_KEY + +#include "SchedTask.h" + +class InitKey : public SchedTask { +public: + SchedConstructor(InitKey); + + int run(SchedTask *smanager, void *rbuf, void *wbuf); +}; + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TaskManager/Test/test_render/task/UpdateKey.cc Wed Sep 23 21:24:38 2009 +0900 @@ -0,0 +1,16 @@ +#include "TaskManager.h" +#include "KeyStat.h" +#include "UpdateKey.h" +#include "global_alloc.h" + +SchedDefineTask(UpdateKey); + +int +UpdateKey::run(SchedTask *smanager, void *rbuf, void *wbuf) +{ + key_stat *key = (key_stat*)smanager->get_input(0); + key_stat *gdata = (key_stat*)smanager->global_get(KEY_STATUS); + memcpy(gdata, key, sizeof(key_stat)); + + return 0; +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TaskManager/Test/test_render/task/UpdateKey.h Wed Sep 23 21:24:38 2009 +0900 @@ -0,0 +1,15 @@ +#ifndef INCLUDED_TASK_UPDATE_KEY +#define INCLUDED_TASK_UPDATE_KEY + +#include "SchedTask.h" +#include "SceneGraphRoot.h" + +class UpdateKey : public SchedTask { +public: + SchedConstructor(UpdateKey); + + int run(SchedTask *smanager, void *rbuf, void *wbuf); + void setKeyStat(); +}; + +#endif
--- a/TaskManager/Test/test_render/task/task_init.cc Wed Sep 23 20:59:32 2009 +0900 +++ b/TaskManager/Test/test_render/task/task_init.cc Wed Sep 23 21:24:38 2009 +0900 @@ -20,7 +20,12 @@ SchedExternTask(Dummy); SchedExternTask(ShowTime); +SchedExternTask(ChainMove); SchedExternTask(SendKey); + +SchedExternTask(UpdateKey); +SchedExternTask(InitKey); + SchedExternTask(ChainMove); SchedExternTask(Switch); @@ -49,7 +54,9 @@ SchedRegisterTask(TASK_DUMMY, Dummy); - SchedRegisterTask(SEND_KEY, SendKey); + SchedRegisterTask(UPDATE_KEY, UpdateKey); + SchedRegisterTask(INIT_KEY_TASK, InitKey); + SchedRegisterTask(SHOW_TIME, ShowTime); SchedRegisterTask(TASK_SWITCH, Switch);
--- a/TaskManager/Test/test_render/viewer.cc Wed Sep 23 20:59:32 2009 +0900 +++ b/TaskManager/Test/test_render/viewer.cc Wed Sep 23 21:24:38 2009 +0900 @@ -168,8 +168,6 @@ break; case 17: chain_old_init(manager, this->width, this-> height); - speLoop(); - return; break; default: node_init(manager); @@ -231,10 +229,18 @@ return task_next; } +/* Loop って言っても1回しか実行されない */ void Viewer::speLoop() { HTaskPtr task_next = initLoop(); + // key の情報を格納する領域を確保する (global_alloc(KEY_STATUS)) + HTaskPtr init_key_task = manager->create_task(INIT_KEY_TASK); + init_key_task->spawn(); + + // SPE に送信する KEY_STATUS の領域確保 + key_stat *key = (key_stat*)manager->allocate(sizeof(key_stat)); + this->keyPtr = key; // post2runLoop は旧バージョン用なので post2speRunLoop の様なものを別につくるべき task_next->set_post(post2speRunLoop, (void*)this); // set_post(function(this->run_loop()), NULL) @@ -249,13 +255,64 @@ task_switch->spawn(); } +void +Viewer::getKey() +{ + Pad *pad = sgroot->getController(); + if (pad->right.isHold()) { + keyPtr->right = HOLD; + } else if (pad->right.isPush()) { + keyPtr->right = PUSH; + } else { + keyPtr->right = NONE; + } + + if (pad->left.isHold()) { + keyPtr->left = HOLD; + } else if (pad->left.isPush()) { + keyPtr->left = PUSH; + } else { + keyPtr->left = NONE; + } + + if (pad->up.isHold()) { + keyPtr->up = HOLD; + } else if (pad->up.isPush()) { + keyPtr->up = PUSH; + } else { + keyPtr->up = NONE; + } + + if (pad->down.isHold()) { + keyPtr->down = HOLD; + } else if (pad->down.isPush()) { + keyPtr->down = PUSH; + } else { + keyPtr->down = NONE; + } + + if (pad->circle.isHold()) { + keyPtr->circle = HOLD; + } else if (pad->circle.isPush()) { + keyPtr->circle = PUSH; + } else { + keyPtr->circle = NONE; + } +} static void post2runMoveDrawLoop(void *viewer_) { Viewer *viewer = (Viewer*)viewer_; - - HTaskPtr send_key_task = viewer->manager->create_task(SEND_KEY); + + // 同じ PPE 上なので sgroot(ポインタ) を add_param で送る。 + //HTaskPtr send_key_task = viewer->manager->create_task(SEND_KEY); + //send_key_task->add_param((int)sgroot); + // set input data -> viewer keyPtr + viewer->getKey(); + HTaskPtr update_key = viewer->manager->create_task(UPDATE_KEY); + update_key->add_inData(viewer->keyPtr, sizeof(key_stat)); + update_key->spawn(); HTaskPtr move_task = viewer->manager->create_task(TASK_MOVE); //move_task->add_param(sgroot); @@ -265,7 +322,6 @@ HTaskPtr switch_task = viewer->manager->create_task(TASK_SWITCH); switch_task->wait_for(move_task); switch_task->wait_for(draw_task); - send_key_task->spawn(); move_task->spawn(); draw_task->spawn();
--- a/TaskManager/Test/test_render/viewer.h Wed Sep 23 20:59:32 2009 +0900 +++ b/TaskManager/Test/test_render/viewer.h Wed Sep 23 21:24:38 2009 +0900 @@ -5,6 +5,7 @@ #include "viewer_types.h" #include "TaskManager.h" +#include "KeyStat.h" class Viewer { public: @@ -14,6 +15,7 @@ virtual ~Viewer(void) {} TaskManager *manager; + key_stat *keyPtr; /* screen info */ int width; @@ -45,6 +47,7 @@ virtual void rendering(HTaskPtr task_next); //virtual void exchange_sgroot(TaskManager *manager); + void getKey(); void get_send_controll(); private: HTaskPtr initLoop();