MCPcopy Create free account
hub / github.com/bfbbdecomp/bfbb / xSweptSphereToBox

Function xSweptSphereToBox

src/SB/Core/x/xCollide.cpp:1621–1909  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1619 F32 dz = box->upper.z - box->lower.z;
1620
1621 if (mat)
1622 {
1623 xMat4x3Mul(&tmpmat, mat, &sws->invbasis.xm);
1624 boxinvbasis = &tmpmat;
1625 }
1626 else
1627 {
1628 boxinvbasis = &sws->invbasis.xm;
1629 }
1630
1631 F32 rad, radsqr;
1632 xVec3 boxPos, boxaX, boxaY, boxaZ;
1633
1634 boxaX.x = dx * boxinvbasis->right.x;
1635 boxaX.y = dx * boxinvbasis->right.y;
1636 boxaX.z = dx * boxinvbasis->right.z;
1637 boxaY.x = dy * boxinvbasis->up.x;
1638 boxaY.y = dy * boxinvbasis->up.y;
1639 boxaY.z = dy * boxinvbasis->up.z;
1640 boxaZ.x = dz * boxinvbasis->at.x;
1641 boxaZ.y = dz * boxinvbasis->at.y;
1642 boxaZ.z = dz * boxinvbasis->at.z;
1643
1644 xMat4x3Toworld(&boxPos, boxinvbasis, &box->lower);
1645
1646 if (boxaX.z < 0.0f)
1647 {
1648 boxPos.x += boxaX.x;
1649 boxPos.y += boxaX.y;
1650 boxPos.z += boxaX.z;
1651 boxaX.x = -boxaX.x;
1652 boxaX.y = -boxaX.y;
1653 boxaX.z = -boxaX.z;
1654 }
1655 if (boxaY.z < 0.0f)
1656 {
1657 boxPos.x += boxaY.x;
1658 boxPos.y += boxaY.y;
1659 boxPos.z += boxaY.z;
1660 boxaY.x = -boxaY.x;
1661 boxaY.y = -boxaY.y;
1662 boxaY.z = -boxaY.z;
1663 }
1664 if (boxaZ.z < 0.0f)
1665 {
1666 boxPos.x += boxaZ.x;
1667 boxPos.y += boxaZ.y;
1668 boxPos.z += boxaZ.z;
1669 boxaZ.x = -boxaZ.x;
1670 boxaZ.y = -boxaZ.y;
1671 boxaZ.z = -boxaZ.z;
1672 }
1673
1674 xVec3 boxNorm, boxA1, boxA2;
1675 S32 quadfound = 0;
1676
1677 rad = sws->radius;
1678 radsqr = rad * rad;

Callers 2

SweptSphereHitsCameraEntFunction · 0.70
SweptSphereHitsEntCBFunction · 0.70

Calls 5

xMat4x3MulFunction · 0.85
xMat4x3ToworldFunction · 0.85
xsqrtFunction · 0.85
xsqrtfastFunction · 0.85
xVec3NormalizeFunction · 0.70

Tested by

no test coverage detected