cleaned object-object collision detection in PhysicsWorld.cc:tick
authornireco
Tue, 09 Dec 2008 02:46:51 +0000
changeset 351 7e6d373d8c98
parent 350 4f90d2c2d221
child 352 bbc30317fa6a
cleaned object-object collision detection in PhysicsWorld.cc:tick
src/PhysicsWorld.cc
--- 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);