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;
}
return;
start:
- for( int x = static_cast<int>( minP.x / (screenX / xDivisions) );
- x <= static_cast<int>( maxP.x / (screenX / xDivisions) );
+ for( int x = static_cast<int>( minP.m_fX / (screenX / xDivisions) );
+ x <= static_cast<int>( maxP.m_fX / (screenX / xDivisions) );
x++ )
{
if(x < 0 || xDivisions <= x)
break;
- for( int y = static_cast<int>( minP.y / (screenY / yDivisions) );
- y <= static_cast<int>( maxP.y / (screenY / yDivisions) );
+ for( int y = static_cast<int>( minP.m_fY / (screenY / yDivisions) );
+ y <= static_cast<int>( maxP.m_fY / (screenY / yDivisions) );
y++ )
{
if(y < 0 || yDivisions <= y)
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;
return;
float fCoR = pBall->CoR;
- Vector2 vecNorm = cInfo.normal;
+ Vector2 vecNorm = cInfo.m_vecNormal;
Vector2 vecVelo = pBall->velocityRaw();
// 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)
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
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;
}
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;
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))
{
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;
}