From 2869e2e8412cd7fd600ad1566f18ffb39aa38ab0 Mon Sep 17 00:00:00 2001 From: Patrik Gornicz Date: Thu, 21 Aug 2008 21:37:23 -0400 Subject: [PATCH] time_steping collisions was a MASSIVE bottleneak, removed --- src/collisionHandler.cpp | 32 ++++++++++++++++---------------- src/collisionHandler.h | 2 +- src/entityManager.cpp | 2 +- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/collisionHandler.cpp b/src/collisionHandler.cpp index 08dc904..7d99469 100644 --- a/src/collisionHandler.cpp +++ b/src/collisionHandler.cpp @@ -29,10 +29,10 @@ /// ***** Private Method Headers ***** -void applyCollisionAt(PhysicsEntity* p1, PhysicsEntity* p2, float time_step); -void applyCollisionAt(Ball* b1, Ball* b2, float time_step); +void applyCollisionAt(PhysicsEntity* p1, PhysicsEntity* p2); +void applyCollisionAt(Ball* b1, Ball* b2); -CollisionInfo* getInfoAt(Ball* b1, Ball* b2, float time_step); +CollisionInfo* getInfoAt(Ball* b1, Ball* b2); /// ***** Private Variables ***** @@ -49,7 +49,7 @@ void collision::clean() /// ***** Public Methods ***** -void collision::update(setPhys sp, float time_step) +void collision::update(setPhys& sp) { for( setPhys::iterator it1 = sp.begin(); it1 != sp.end(); @@ -61,7 +61,7 @@ void collision::update(setPhys sp, float time_step) { if( *it1 != *it2 ) { - applyCollisionAt(*it1, *it2, time_step); + applyCollisionAt(*it1, *it2); } } } @@ -70,14 +70,14 @@ void collision::update(setPhys sp, float time_step) /// ***** Private Methods ***** -void applyCollisionAt(PhysicsEntity* p1, PhysicsEntity* p2, float time_step) +void applyCollisionAt(PhysicsEntity* p1, PhysicsEntity* p2) { Ball* b1 = dynamic_cast(p1); Ball* b2 = dynamic_cast(p2); if( b1 != NULL && b2 != NULL ) { - applyCollisionAt(b1, b2, time_step); + applyCollisionAt(b1, b2); return; } @@ -86,10 +86,10 @@ void applyCollisionAt(PhysicsEntity* p1, PhysicsEntity* p2, float time_step) #endif } -void applyCollisionAt(Ball* b1, Ball* b2, float time_step) +void applyCollisionAt(Ball* b1, Ball* b2) { // /* - CollisionInfo* info = getInfoAt(b1, b2, time_step); + CollisionInfo* info = getInfoAt(b1, b2); if(info == NULL) return; @@ -105,8 +105,8 @@ void applyCollisionAt(Ball* b1, Ball* b2, float time_step) float e = (b1->CoR + b2->CoR) / 2; - Vector2 v1 = b1->velocityAt(time_step); - Vector2 v2 = b2->velocityAt(time_step); + Vector2 v1 = b1->velocityRaw(); + Vector2 v2 = b2->velocityRaw(); float iTop = -(e + 1) * (v1 - v2).dot(normal); @@ -121,16 +121,16 @@ void applyCollisionAt(Ball* b1, Ball* b2, float time_step) // */ } -CollisionInfo* getInfoAt(Ball* b1, Ball* b2, float time_step) +CollisionInfo* getInfoAt(Ball* b1, Ball* b2) { // a few values to simplify the equations float r1 = b1->radius; float r2 = b2->radius; - Vector2 p1 = b1->positionAt(time_step); - Vector2 p2 = b2->positionAt(time_step); - Vector2 v1 = b1->velocityAt(time_step); - Vector2 v2 = b2->velocityAt(time_step); + Vector2 p1 = b1->positionRaw(); + Vector2 p2 = b2->positionRaw(); + Vector2 v1 = b1->velocityRaw(); + Vector2 v2 = b2->velocityRaw(); // quick binding box check if (p1.x - r1 > p2.x + r2 diff --git a/src/collisionHandler.h b/src/collisionHandler.h index 27940c2..d9b54c1 100644 --- a/src/collisionHandler.h +++ b/src/collisionHandler.h @@ -29,7 +29,7 @@ namespace collision void init(); void clean(); - void update(setPhys, float); + void update(setPhys&); } #endif // COLLISIONHANDLER_H diff --git a/src/entityManager.cpp b/src/entityManager.cpp index c78a7ce..cbe9e03 100644 --- a/src/entityManager.cpp +++ b/src/entityManager.cpp @@ -187,7 +187,7 @@ void updatePhysics(float time_step) physics_To_Remove.clear(); // apply collision math - collision::update(active_Physics, time_step); + collision::update(active_Physics); // update active PhysicsEntity*s for( setPhys::iterator it = active_Physics.begin(); -- 2.10.2