summaryrefslogtreecommitdiffstats
path: root/src/entities
diff options
context:
space:
mode:
Diffstat (limited to 'src/entities')
-rw-r--r--src/entities/Physical.cpp37
1 files changed, 1 insertions, 36 deletions
diff --git a/src/entities/Physical.cpp b/src/entities/Physical.cpp
index 07d1d0b4..706b469c 100644
--- a/src/entities/Physical.cpp
+++ b/src/entities/Physical.cpp
@@ -883,13 +883,9 @@ CPhysical::ApplyCollision(CPhysical *B, CColPoint &colpoint, float &impulseA, fl
if(B->GetStatus() == STATUS_PLAYER)
pointposB *= 0.8f;
if(CWorld::bNoMoreCollisionTorque){
-#ifdef FIX_BUGS
+ // BUG: the game actually uses A here, but this can't be right
B->ApplyFrictionMoveForce(fB*-0.3f);
B->ApplyFrictionTurnForce(fB*-0.3f, pointposB);
-#else
- A->ApplyFrictionMoveForce(fB*-0.3f);
- A->ApplyFrictionTurnForce(fB*-0.3f, pointposB);
-#endif
}
}
if(!A->bInfiniteMass){
@@ -1058,13 +1054,7 @@ CPhysical::ApplyFriction(CPhysical *B, float adhesiveLimit, CColPoint &colpoint)
fOtherSpeedA = vOtherSpeedA.Magnitude();
fOtherSpeedB = vOtherSpeedB.Magnitude();
-#ifdef FIX_BUGS // division by 0
- frictionDir = vOtherSpeedA;
- frictionDir.Normalise();
-#else
frictionDir = vOtherSpeedA * (1.0f/fOtherSpeedA);
-#endif
-
speedSum = (B->m_fMass*fOtherSpeedB + A->m_fMass*fOtherSpeedA)/(B->m_fMass + A->m_fMass);
if(fOtherSpeedA > speedSum){
impulseA = (speedSum - fOtherSpeedA) * A->m_fMass;
@@ -1094,12 +1084,7 @@ CPhysical::ApplyFriction(CPhysical *B, float adhesiveLimit, CColPoint &colpoint)
fOtherSpeedA = vOtherSpeedA.Magnitude();
fOtherSpeedB = vOtherSpeedB.Magnitude();
-#ifdef FIX_BUGS // division by 0
- frictionDir = vOtherSpeedA;
- frictionDir.Normalise();
-#else
frictionDir = vOtherSpeedA * (1.0f/fOtherSpeedA);
-#endif
float massB = B->GetMass(pointposB, frictionDir);
speedSum = (massB*fOtherSpeedB + A->m_fMass*fOtherSpeedA)/(massB + A->m_fMass);
if(fOtherSpeedA > speedSum){
@@ -1127,12 +1112,7 @@ CPhysical::ApplyFriction(CPhysical *B, float adhesiveLimit, CColPoint &colpoint)
fOtherSpeedA = vOtherSpeedA.Magnitude();
fOtherSpeedB = vOtherSpeedB.Magnitude();
-#ifdef FIX_BUGS // division by 0
- frictionDir = vOtherSpeedA;
- frictionDir.Normalise();
-#else
frictionDir = vOtherSpeedA * (1.0f/fOtherSpeedA);
-#endif
float massA = A->GetMass(pointposA, frictionDir);
speedSum = (B->m_fMass*fOtherSpeedB + massA*fOtherSpeedA)/(B->m_fMass + massA);
if(fOtherSpeedA > speedSum){
@@ -1160,12 +1140,7 @@ CPhysical::ApplyFriction(CPhysical *B, float adhesiveLimit, CColPoint &colpoint)
fOtherSpeedA = vOtherSpeedA.Magnitude();
fOtherSpeedB = vOtherSpeedB.Magnitude();
-#ifdef FIX_BUGS // division by 0
- frictionDir = vOtherSpeedA;
- frictionDir.Normalise();
-#else
frictionDir = vOtherSpeedA * (1.0f/fOtherSpeedA);
-#endif
float massA = A->GetMass(pointposA, frictionDir);
float massB = B->GetMass(pointposB, frictionDir);
speedSum = (massB*fOtherSpeedB + massA*fOtherSpeedA)/(massB + massA);
@@ -1203,12 +1178,7 @@ CPhysical::ApplyFriction(float adhesiveLimit, CColPoint &colpoint)
fOtherSpeed = vOtherSpeed.Magnitude();
if(fOtherSpeed > 0.0f){
-#ifdef FIX_BUGS // division by 0
- frictionDir = vOtherSpeed;
- frictionDir.Normalise();
-#else
frictionDir = vOtherSpeed * (1.0f/fOtherSpeed);
-#endif
// not really impulse but speed
// maybe use ApplyFrictionMoveForce instead?
fImpulse = -fOtherSpeed;
@@ -1226,12 +1196,7 @@ CPhysical::ApplyFriction(float adhesiveLimit, CColPoint &colpoint)
fOtherSpeed = vOtherSpeed.Magnitude();
if(fOtherSpeed > 0.0f){
-#ifdef FIX_BUGS // division by 0
- frictionDir = vOtherSpeed;
- frictionDir.Normalise();
-#else
frictionDir = vOtherSpeed * (1.0f/fOtherSpeed);
-#endif
fImpulse = -fOtherSpeed * m_fMass;
impulseLimit = adhesiveLimit*CTimer::GetTimeStep() * 1.5;
if(fImpulse < -impulseLimit) fImpulse = -impulseLimit;