X-Git-Url: http://gitweb.pgornicz.com/gitweb.cgi?p=physics.git;a=blobdiff_plain;f=src%2FcollisionManager.cpp;h=81d5e052a64728ad5ba36c2b8b532d30b237a19a;hp=72dcd6bd9fe9895c4e4a9cc4522a9e85133e08f5;hb=9d6dea5f1cfd43cfa136241b352830371acfdc88;hpb=e86c86b38b25bcb463943dc166b60f236aa4af10 diff --git a/src/collisionManager.cpp b/src/collisionManager.cpp index 72dcd6b..81d5e05 100644 --- a/src/collisionManager.cpp +++ b/src/collisionManager.cpp @@ -106,14 +106,14 @@ void placeEntity(PhysicsEntity* p) if( b != NULL ) { - const float& xb = b->positionRaw().x; - const float& yb = b->positionRaw().y; + const float& xb = b->positionRaw().m_fX; + const float& yb = b->positionRaw().m_fY; const float& rad = b->radius; - minP.x = xb - rad; - minP.y = yb - rad; - maxP.x = xb + rad; - maxP.y = yb + rad; + minP.m_fX = xb - rad; + minP.m_fY = yb - rad; + maxP.m_fX = xb + rad; + maxP.m_fY = yb + rad; goto start; } @@ -135,15 +135,15 @@ void placeEntity(PhysicsEntity* p) return; start: - for( int x = static_cast( minP.x / (screenX / xDivisions) ); - x <= static_cast( maxP.x / (screenX / xDivisions) ); + for( int x = static_cast( minP.m_fX / (screenX / xDivisions) ); + x <= static_cast( maxP.m_fX / (screenX / xDivisions) ); x++ ) { if(x < 0 || xDivisions <= x) break; - for( int y = static_cast( minP.y / (screenY / yDivisions) ); - y <= static_cast( maxP.y / (screenY / yDivisions) ); + for( int y = static_cast( minP.m_fY / (screenY / yDivisions) ); + y <= static_cast( maxP.m_fY / (screenY / yDivisions) ); y++ ) { if(y < 0 || yDivisions <= y) @@ -289,10 +289,10 @@ bool getInfo(const Ball* b1, const Ball* b2, CollisionInfo* pcInfo) Vector2 v2 = b2->velocityRaw(); // quick binding box check - if (p1.x - r1 > p2.x + r2 - || p1.x + r1 < p2.x - r2 - || p1.y - r1 > p2.y + r2 - || p1.y + r1 < p2.y - r2) + if (p1.m_fX - r1 > p2.m_fX + r2 + || p1.m_fX + r1 < p2.m_fX - r2 + || p1.m_fY - r1 > p2.m_fY + r2 + || p1.m_fY + r1 < p2.m_fY - r2) return false; // test if not touching @@ -318,14 +318,14 @@ bool getInfo(const Polygon* pPoly, const Ball* pBall, CollisionInfo* pcInfo) Vector2 vecPos = pBall->positionRaw(); Vector2 vecVelo = pBall->velocityRaw(); - float fMaxX = pPoly->maxP.x; - float fMinX = pPoly->minP.x; - float fMaxY = pPoly->maxP.y; - float fMinY = pPoly->minP.y; + float fMaxX = pPoly->maxP.m_fX; + float fMinX = pPoly->minP.m_fX; + float fMaxY = pPoly->maxP.m_fY; + float fMinY = pPoly->minP.m_fY; // quick binding box check - if (vecPos.x - fRad > fMaxX || vecPos.x + fRad < fMinX || - vecPos.y - fRad > fMaxY || vecPos.y + fRad < fMinY) + if (vecPos.m_fX - fRad > fMaxX || vecPos.m_fX + fRad < fMinX || + vecPos.m_fY - fRad > fMaxY || vecPos.m_fY + fRad < fMinY) return false; @@ -339,10 +339,10 @@ bool getInfo(const Polygon* pPoly, const Ball* pBall, CollisionInfo* pcInfo) for (unsigned int i = 0; i < num; i++) { Vector2 vec = vectorToLine(vecPos, - pts[i].x, - pts[i].y, - pts[(i + 1) % num].x, - pts[(i + 1) % num].y); + pts[i].m_fX, + pts[i].m_fY, + pts[(i + 1) % num].m_fX, + pts[(i + 1) % num].m_fY); if (vec.sqrLength() <= fRad*fRad && 0 < vec.dot(vecVelo)) {