ball collisions now optimized
authorPatrik Gornicz <Gornicz.P@gmail.com>
Sun, 7 Dec 2008 15:51:55 +0000 (10:51 -0500)
committerPatrik Gornicz <Gornicz.P@gmail.com>
Sun, 7 Dec 2008 15:51:55 +0000 (10:51 -0500)
src/collisionManager.cpp

index df83319..9db130e 100644 (file)
@@ -42,6 +42,8 @@ bool getInfo(Ball* b1, Ball* b2, CollisionInfo* cInfo);
 
 const int xDivisions = 20;
 const int yDivisions = 16;
+const int screenX    = 800;
+const int screenY    = 600;
 
 setPhys divisions[xDivisions][yDivisions];
 
@@ -103,15 +105,15 @@ void placeEntity(PhysicsEntity* p)
     const float& yb     = b->positionRaw().y;
     const float& rad    = b->radius;
 
-    for( int x = (int)(xb - rad);
-             x < (int)(xb + rad);
+    for( int x =  static_cast<int>( (xb - rad) / (screenX / xDivisions) );
+             x <= static_cast<int>( (xb + rad) / (screenX / xDivisions) );
              x++ )
     {
         if(x < 0 || xDivisions <= x)
             break;
 
-        for( int y = (int)(yb - rad);
-                 y < (int)(yb + rad);
+        for( int y =  static_cast<int>( (yb - rad) / (screenY / yDivisions) );
+                 y <= static_cast<int>( (yb + rad) / (screenY / yDivisions) );
                  y++ )
         {
             if(y < 0 || yDivisions <= y)