annotate src/CollisionNode.cpp @ 10:5727d511a13a

add src in Martial Project Xcode.
author tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
date Wed, 03 Feb 2010 03:39:04 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
1 /*
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
2 * CollisionNode.cpp
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
3 * Martial
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
4 *
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
5 * Created by ryoma on 10/01/26.
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
6 * Copyright 2010 琉球大学. All rights reserved.
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
7 *
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
8 */
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
9
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
10 #include "CollisionNode.h"
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
11
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
12 CollisionNode::CollisionNode(char* name, osg::Sphere* shape):
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
13 name(name), shape(shape) {
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
14 collision = false;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
15 attack = false;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
16 guard = false;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
17 radius = shape->getRadius();
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
18 drawable = new osg::ShapeDrawable(shape);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
19 drawable->setColor(osg::Vec4f(1,1,1,1));
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
20 collisionNode = new osg::Geode();
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
21 collisionNode->addDrawable(drawable);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
22 }
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
23
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
24 CollisionNode::CollisionNode(char* name, osg::Cylinder* shape):
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
25 name(name), shape(shape) {
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
26 collision = false;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
27 attack = false;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
28 guard = false;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
29 radius = shape->getRadius();
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
30 drawable = new osg::ShapeDrawable(shape);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
31 drawable->setColor(osg::Vec4f(1,1,1,1));
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
32 collisionNode = new osg::Geode();
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
33 collisionNode->addDrawable(drawable);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
34 }
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
35
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
36 CollisionNode::CollisionNode(char* name, osg::Geode* geode, osg::Shape* shape):
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
37 name(name), collisionNode(geode), shape(shape) {
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
38 collision = false;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
39 attack = false;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
40 guard = false;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
41 drawable = new osg::ShapeDrawable(shape);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
42 drawable->setColor(osg::Vec4f(1,1,1,1));
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
43 collisionNode->addDrawable(drawable);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
44 }
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
45
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
46
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
47 void CollisionNode::setCollision(bool _collision) {
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
48 _collision ? drawable->setColor(osg::Vec4f(1,0,0,1)) : drawable->setColor(osg::Vec4f(1,1,1,1));
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
49 collision = _collision;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
50 }
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
51
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
52 char* CollisionNode::getName() {
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
53 return name;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
54 }
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
55
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
56 osg::NodePath CollisionNode::getNodePath() {
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
57 return collisionNode->getParentalNodePaths().front();
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
58 }
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
59
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
60 osg::Geode* CollisionNode::getGeode() {
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
61 return collisionNode;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
62 }
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
63
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
64 osg::BoundingSphere CollisionNode::getBound(osg::Matrix localToWorldMatrix) {
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
65 osg::Vec3 t = localToWorldMatrix.getTrans();
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
66 osg::BoundingSphere bound = collisionNode->computeBound();
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
67 //printf("[%.3f, %.3f, %.3f]\n", localToWorldMatrix.getTrans().x(), localToWorldMatrix.getTrans().y(),
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
68 // localToWorldMatrix.getTrans().z());
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
69 bound.set(bound.center()*localToWorldMatrix, radius*0.01);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
70 return bound;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
71 }