X-Git-Url: http://gitweb.pgornicz.com/gitweb.cgi?a=blobdiff_plain;f=src%2FcollisionManager.cpp;h=81d5e052a64728ad5ba36c2b8b532d30b237a19a;hb=9d6dea5f1cfd43cfa136241b352830371acfdc88;hp=95a21935d877ce01b6597d222d39248ac6d97898;hpb=19c2da50f7f1ce9854c718e6c1c545ccc2afbb5f;p=physics.git diff --git a/src/collisionManager.cpp b/src/collisionManager.cpp index 95a2193..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) @@ -228,8 +228,8 @@ void applyCollision(Ball* b1, Ball* b2) return; // a few values to simplify the equations - const Vector2& normal = cInfo.normal; - const Vector2& point = cInfo.point; + const Vector2& normal = cInfo.m_vecNormal; + const Vector2& point = cInfo.m_vecPoint; float m1 = b1->mass; float m2 = b2->mass; @@ -259,7 +259,7 @@ void applyCollision(Polygon* pPoly, Ball* pBall) return; float fCoR = pBall->CoR; - Vector2 vecNorm = cInfo.normal; + Vector2 vecNorm = cInfo.m_vecNormal; Vector2 vecVelo = pBall->velocityRaw(); @@ -274,7 +274,7 @@ void applyCollision(Polygon* pPoly, Ball* pBall) // from center to point Vector2 vecCollP = vecNorm / vecNorm.length() * pBall->radius; - pBall->applyNudge(cInfo.point + vecCollP - pBall->positionRaw()); + pBall->applyNudge(cInfo.m_vecPoint + vecCollP - pBall->positionRaw()); } bool getInfo(const Ball* b1, const Ball* b2, CollisionInfo* pcInfo) @@ -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 @@ -305,8 +305,8 @@ bool getInfo(const Ball* b1, const Ball* b2, CollisionInfo* pcInfo) if ((v1 - v2).dot(p1 - p2) >= 0) return false; - pcInfo->point = p1 - (p1 - p2) * r1 / (r1 + r2); - pcInfo->normal = p1 - p2; + pcInfo->m_vecPoint = p1 - (p1 - p2) * r1 / (r1 + r2); + pcInfo->m_vecNormal = p1 - p2; return true; } @@ -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)) { @@ -356,8 +356,8 @@ bool getInfo(const Polygon* pPoly, const Ball* pBall, CollisionInfo* pcInfo) return false; - pcInfo->point = vecTotVec / iTot + vecPos; - pcInfo->normal = vecPos - pcInfo->point; + pcInfo->m_vecPoint = vecTotVec / iTot + vecPos; + pcInfo->m_vecNormal = vecPos - pcInfo->m_vecPoint; return true; }