Mercurial > hg > Members > e075743
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 |
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 } |