Mercurial > hg > Members > e085722 > Cerium
diff Renderer/Test_/gaplant_action.cc @ 4:b5b462ac9b3b
Cerium Blender ball_bound
author | Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 29 Nov 2010 16:42:42 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Renderer/Test_/gaplant_action.cc Mon Nov 29 16:42:42 2010 +0900 @@ -0,0 +1,99 @@ +#include <iostream> +#include <cmath> +#include "SceneGraphRoot.h" +#include "gaplant.h" +using namespace std; + +void +move_right(SceneGraphPtr node) +{ + /*cout << "右を押したんだ " << node->angle[2] << "\n";*/ + node->angle[1] -= 10; + /* if (node->angle[2] < -30) { + node->angle[2] = -30; + } + node->xyz[0] += 5;*/ +} + +void +move_left(SceneGraphPtr node) +{ + /*cout << "左を押したんだ " << node->angle[2] << "\n";*/ + node->angle[1] += 10; + /* if (node->angle[2] > 30) { + node->angle[2] = 30; + } + node->xyz[0] -= 5;*/ +} + +void +move_down(SceneGraphPtr node) +{ + /*cout << "下だって押したくなる時はある "<< node->angle[0] << "\n";*/ + node->angle[0] += 10; + /*if (node->angle[0] > -60) { + node->angle[0] = -60; + } + node->xyz[1] += 5;*/ +} + +void +move_up(SceneGraphPtr node) +{ + /*cout << "上を押したんだ "<< node->angle[0] << "\n";*/ + node->angle[0] -= 10; + /*if (node->angle[0] < -120) { + node->angle[0] = -120; + } + node->xyz[1] -= 5;*/ +} + +void +gaplant_move(SceneGraphPtr node, void *sgroot_, int w, int h) +{ + SceneGraphRoot *sgroot = (SceneGraphRoot *)sgroot_; + Pad *pad = sgroot->getController(); + + if (pad->right.isHold() || pad->left.isHold() || pad->down.isHold() || pad->up.isHold()) { + if (pad->right.isHold()) { + move_right(node); + } else if (pad->left.isHold()) { + move_left(node); + } else if (pad->down.isHold()) { + move_down(node); + } else if (pad->up.isHold()) { + move_up(node); + } + } + + if (pad->cross.isHold() || pad->circle.isHold()) { + if (pad->cross.isHold()) { + node->xyz[2] += 5; + } else if (pad->circle.isHold()) { + node->xyz[2] -= 5; + } + } +} + +void +gaplant_coll(SceneGraphPtr node, void *sgroot_, int w, int h, SceneGraphPtr tree) +{ + SceneGraphRoot *sgroot = (SceneGraphRoot *)sgroot_; + SceneGraphIteratorPtr it = sgroot->getIterator(tree); + //static int damage = 0; + + for (; it->hasNext(sgroot->getSgid("Ball"));) { + it->next(sgroot->getSgid("Ball")); + SceneGraphPtr ball = it->get(); + + double dis_x = node->xyz[0] - ball->xyz[0]; + double dis_y = node->xyz[1] - ball->xyz[1]; + double dis_z = node->xyz[2] - ball->xyz[2]; + double distance = sqrt(dis_x*dis_x + dis_y*dis_y + dis_z*dis_z); + + if (distance < CHECK_HIT_RAD + BALL_RAD) { + cout << "今からもっと細かく判定するよ ^q^\n"; + ball->remove(); + } + } +}