Mercurial > hg > Members > kono > Cerium
view TaskManager/Test/test_render/universe.cpp @ 198:57921c8d21c5
rename snake_bg to panel
author | gongo@gendarme.cr.ie.u-ryukyu.ac.jp |
---|---|
date | Mon, 26 Jan 2009 10:38:29 +0900 |
parents | 8143bbade40d |
children | eb20274baa7c |
line wrap: on
line source
#include <stdlib.h> #include "SceneGraphRoot.h" #include "SGList.h" int moonrem = 0; static void cube_collision(SceneGraphPtr node, int screen_w, int screen_h, SceneGraphPtr tree) { } static void moon_collision(SceneGraphPtr node, int screen_w, int screen_h, SceneGraphPtr tree) { } static void moon_move(SceneGraphPtr node, int screen_w, int screen_h) { node->angle[0] += 3.0f; printf("%f\n", node->angle[0]); if (node->angle[0] > 360.0f) { node->remove(); //node->angle[0] = 0.0f; moonrem = 1; } } static void cube_move(SceneGraphPtr node, int screen_w, int screen_h) { node->angle[1] += 1.0f; if (node->angle[1] > 360.0f) { node->angle[1] = 0.0f; if (moonrem) { SceneGraphPtr moon = sgroot->createSceneGraph(Moon); moon->set_move_collision(moon_move, moon_collision); node->addChild(moon); moonrem = 0; } } node->xyz[0] += node->stack_xyz[0]; if ((int)node->xyz[0] > screen_w || (int)node->xyz[0] < 0) { node->stack_xyz[0] = -node->stack_xyz[0]; } node->xyz[1] += node->stack_xyz[1]; if ((int)node->xyz[1] > screen_h || (int)node->xyz[1] < 0) { node->stack_xyz[1] = -node->stack_xyz[1]; } } void universe_init(void) { SceneGraphPtr earth; SceneGraphPtr moon; sgroot->createFromXMLfile("xml_file/universe.xml"); // SGList.h にある SceneGraph ID から SceneGraph を生成する earth = sgroot->createSceneGraph(Earth); moon = sgroot->createSceneGraph(Moon); // SceneGraph の move と collision を設定 earth->set_move_collision(cube_move, cube_collision); earth->stack_xyz[0] = 3.0f; earth->stack_xyz[1] = 3.0f; moon->set_move_collision(moon_move, moon_collision); // SceneGraph 同士の親子関係を設定 (今回は 親 earth、子 moon) earth->addChild(moon); // SceneGraphRoot に、使用する SceneGraph を設定する // このとき、ユーザーが記述した SceneGraph の root を渡す。 sgroot->setSceneData(earth); }