--- a/src/PhysicsWorld.cc Tue Dec 09 02:37:02 2008 +0000
+++ b/src/PhysicsWorld.cc Tue Dec 09 02:46:51 2008 +0000
@@ -37,6 +37,7 @@
for (std::list<PhysicsObject*>::iterator i = objects.begin(); i != objects.end(); i++) {
(*i)->tick(tick_length);
}
+ // Object - object collision detection
for (std::list<PhysicsObject*>::iterator i = objects.begin(); i != objects.end(); i++) {
for (std::list<PhysicsObject*>::iterator j = i; j != objects.end(); j++) {
if(i == j)
@@ -50,32 +51,12 @@
}
range_sum_sqr *= range_sum_sqr;
bool collision = false;
- Vector a1 = (*i)->getPreviousPosition();
Vector a2 = (*i)->getPosition();
- Vector b1 = (*j)->getPreviousPosition();
Vector b2 = (*j)->getPosition();
-/* if(a1 == a2) {
- float d = abs(distancePointToLine(b1, b2, a1));
- if(d*d < range_sum_sqr)
- collision = true;
- } else if(b1 == b2) {
- float d = abs(distancePointToLine(a1, a2, b1));
- if(d*d < range_sum_sqr)
- collision = true;
- } else {*/
- float db1 = distancePointToLine(a1, a2, b1);
- float db2 = distancePointToLine(a1, a2, b2);
- float da1 = distancePointToLine(b1, b2, a1);
- float da2 = distancePointToLine(b1, b2, a2);
- if(db1*db2 < 0 && da1*da2 < 0) {
- // lines intersected
-// collision = true;
- }
- float dab = (a2-b2).sqrLength();
- if(dab < range_sum_sqr) {
- collision = true;
- }
-// }
+ float dab = (a2-b2).sqrLength();
+ if(dab < range_sum_sqr) {
+ collision = true;
+ }
if(collision) {
(*i)->onCollision(a2, *j);
(*j)->onCollision(b2, *i);