| 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; |
no test coverage detected