Mercurial > hg > Members > e085722 > Cerium
diff Renderer/Test/direction.cc @ 0:04e28d8d3c6f
first commit
author | Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 08 Nov 2010 01:23:25 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Renderer/Test/direction.cc Mon Nov 08 01:23:25 2010 +0900 @@ -0,0 +1,123 @@ +#include "SceneGraphRoot.h" +#include "direction.h" + +static void +x_move(SceneGraphPtr node, void *sgroot_, int w, int h) +{ + SceneGraphRoot *sgroot = (SceneGraphRoot *)sgroot_; + Pad *pad = sgroot->getController(); + + node->xyz[0] = w/2; + node->xyz[1] = h/2; + + if (pad->circle.isPush() || pad->circle.isHold()) { + node->angle[1] += 10.0f; + if (node->angle[1] > 360.0f) node->angle[1] = 0.0f; + } + + if (pad->triangle.isPush() || pad->triangle.isHold()) { + node->angle[0] += 10.0f; + if (node->angle[0] > 360.0f) node->angle[0] = 0.0f; + } + + if (pad->start.isPush()) { + node->angle[0] = 0.0f; + node->angle[1] = 90.0f; + } + +} + +static void +y_move(SceneGraphPtr node, void *sgroot_, int w, int h) +{ + SceneGraphRoot *sgroot = (SceneGraphRoot *)sgroot_; + Pad *pad = sgroot->getController(); + + node->xyz[0] = w/2; + node->xyz[1] = h/2; + + if (pad->cross.isPush() || pad->cross.isHold()) { + node->angle[2] += 10.0f; + } + + if (pad->square.isPush() || pad->square.isHold()) { + node->angle[0] += 10.0f; + } + + if (pad->start.isPush()) { + node->angle[0] = 90.0f; + node->angle[1] = 0.0f; + } + +} + +static void +z_move(SceneGraphPtr node, void *sgroot_, int w, int h) +{ + node->xyz[0] = w/2; + node->xyz[1] = h/2; +} + +static void +dir_collision(SceneGraphPtr node, void *sgroot_, int w, int h, SceneGraphPtr tree) +{ +} + +MainLoopPtr +direction::init(Viewer *sgroot, int screen_w, int screen_h) +{ + SceneGraphPtr dx; + SceneGraphPtr dy; + SceneGraphPtr dz; + SceneGraphPtr back; + + sgroot->createFromXMLfile("xml_file/direction.xml"); + + dx = sgroot->createSceneGraph("Dirx"); + dy = sgroot->createSceneGraph("Diry"); + dz = sgroot->createSceneGraph("Dirz"); + back = sgroot->createSceneGraph(); + + back->addChild(dx); + back->addChild(dy); + back->addChild(dz); + + dx->set_move_collision(x_move, dir_collision); + dx->angle[1] = 90.0f; + dy->set_move_collision(y_move, dir_collision); + dy->angle[0] = 90.0f; + dz->set_move_collision(z_move, dir_collision); + + back->angle[0] = 30.0f; + back->angle[1] = -30.0f; + + sgroot->setSceneData(back); + return sgroot; +} + +extern Application * +application() { + return new direction(); +} + +const char *usr_help_str = "Usage: ./test_nogl [OPTION]\n"; + +extern int init(TaskManager *manager, int argc, char *argv[]); +extern void task_initialize(); +static void TMend(TaskManager *manager); + +int +TMmain(TaskManager *manager, int argc, char *argv[]) +{ + task_initialize(); + manager->set_TMend(TMend); + return init(manager, argc, argv); + +} + +void +TMend(TaskManager *manager) +{ + printf("test_nogl end\n"); +} +