Mercurial > hg > Game > Cerium
view example/scenegraph/xml/task/move.cpp @ 404:0d2dc1869cbe draft
rename cpp to cc
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 23 Sep 2009 12:23:01 +0900 |
parents | 10c1f6970f6a |
children |
line wrap: on
line source
/** * SceneGraph を読み込んで * node の型に対応する move 関数を呼び出す * move 関数が無かったら load する * 新しい SceneGraoh を生成する * */ // #define DEBUG #include "error.h" #include "scene_graph_pack.h" // 本来は tasks.xml に書く SchedDefineTask(SceneGraphMove); int move::run(void *rbuf, void *wbuf) { __debug_spe("SceneGraphMove\n"); SceneGraphPackPtr cur = (SceneGraphPack*) rbuf; int move_task_id = cur->move_task; // next は Mainmemory 上のアドレス SceneGraphPackPtr next = (SceneGraphPackPtr)smanager->allocate(sizeof(SceneGraphPack)); if (smanager->call_task(move_task_id, (void*)cur, (void*)next)) { // 次の状態があって、新しく node を確保してそこを確保する smanager->write(cur, next, sizeof(SceneGraphPack)); } else { // この node は消滅 smanager->free(next); } return 0; }