LineBlockTracer: Fixed a math rounding error failure.
This commit is contained in:
parent
0551d78dff
commit
bc6e2100c1
@ -122,7 +122,11 @@ bool cLineBlockTracer::FirstSolidHitTrace(
|
|||||||
cBoundingBox bb(a_BlockX, a_BlockX + 1, a_BlockY, a_BlockY + 1, a_BlockZ, a_BlockZ + 1); // Bounding box of the block hit
|
cBoundingBox bb(a_BlockX, a_BlockX + 1, a_BlockY, a_BlockY + 1, a_BlockZ, a_BlockZ + 1); // Bounding box of the block hit
|
||||||
double LineCoeff = 0; // Used to calculate where along the line an intersection with the bounding box occurs
|
double LineCoeff = 0; // Used to calculate where along the line an intersection with the bounding box occurs
|
||||||
eBlockFace Face; // Face hit
|
eBlockFace Face; // Face hit
|
||||||
VERIFY(bb.CalcLineIntersection(m_Start, m_End, LineCoeff, Face));
|
if (!bb.CalcLineIntersection(m_Start, m_End, LineCoeff, Face))
|
||||||
|
{
|
||||||
|
// Math rounding errors have caused the calculation to miss the block completely, assume immediate hit
|
||||||
|
LineCoeff = 0;
|
||||||
|
}
|
||||||
m_HitCoords = m_Start + (m_End - m_Start) * LineCoeff; // Point where projectile goes into the hit block
|
m_HitCoords = m_Start + (m_End - m_Start) * LineCoeff; // Point where projectile goes into the hit block
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user