Mercurial > hg > Game > Cerium
view TaskManager/Test/test_render/Application/dynamic_create.cc @ 520:8d86242337ba draft
SGList isn't used
author | tkaito@henri.cr.ie.u-ryukyu.ac.jp |
---|---|
date | Wed, 21 Oct 2009 19:56:00 +0900 |
parents | d2772feb34e3 |
children | 74a8b7c97964 |
line wrap: on
line source
#include <stdlib.h> #include "SceneGraphRoot.h" static void earth_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; node->xyz[1] += 1.0f; } static void earth_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; } 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]; } Pad *pad = sgroot->getController(); if (pad->circle.isPush()) { SceneGraphPtr earth; sgroot->createFromXMLmemory(sgroot->tmanager, "xml_file/universe.xml"); earth = sgroot->createSceneGraph("Earth"); earth->set_move_collision(moon_move, moon_collision); node->addChild(earth); } } void dynamic_init(TaskManager *manager) { //SceneGraphPtr earth; sgroot->tmanager = manager; #if 0 // テスト用に mmap したデータを第2引数に渡す sgroot->createFromXMLmemory(manager, "xml_file/universe.xml"); // sglist に登録されている name から sgid を引き、sg_src[sgid] からコピーして返す earth = sgroot->createSceneGraph("Earth"); #else SceneGraphPtr parent; parent = sgroot->createSceneGraph(); parent->set_move_collision(earth_move, earth_collision); #endif // SceneGraphRoot に、使用する SceneGraph を設定する // このとき、ユーザーが記述した SceneGraph の root を渡す。 sgroot->setSceneData(parent); }