| 1361 | |
| 1362 | F32 rad = sws->radius; |
| 1363 | |
| 1364 | if ((xform[0].x <= -rad && xform[1].x <= -rad && xform[2].x <= -rad) || |
| 1365 | (xform[0].x >= rad && xform[1].x >= rad && xform[2].x >= rad) || |
| 1366 | (xform[0].y <= -rad && xform[1].y <= -rad && xform[2].y <= -rad) || |
| 1367 | (xform[0].y >= rad && xform[1].y >= rad && xform[2].y >= rad) || |
| 1368 | (xform[0].z <= 0.0f && xform[1].z <= 0.0f && xform[2].z <= 0.0f) || |
| 1369 | (xform[0].z >= sws->curdist + rad && xform[1].z >= sws->curdist + rad && |
| 1370 | xform[2].z >= sws->curdist + rad)) |
| 1371 | { |
| 1372 | return 0; |
| 1373 | } |
| 1374 | |
| 1375 | xVec3 var_10C; |
| 1376 | F32 f1; |
| 1377 | var_10C.x = (xform[1].y - xform[0].y) * (xform[2].z - xform[0].z) - |
| 1378 | (xform[1].z - xform[0].z) * (xform[2].y - xform[0].y); |
| 1379 | var_10C.y = (xform[1].z - xform[0].z) * (xform[2].x - xform[0].x) - |
| 1380 | (xform[1].x - xform[0].x) * (xform[2].z - xform[0].z); |
| 1381 | var_10C.z = (xform[1].x - xform[0].x) * (xform[2].y - xform[0].y) - |
| 1382 | (xform[1].y - xform[0].y) * (xform[2].x - xform[0].x); |
| 1383 | _rwV3dNormalizeMacro(f1, (RwV3d*)&var_10C, (RwV3d*)&var_10C); |
| 1384 | if (isnan(var_10C.x)) |
| 1385 | { |
| 1386 | return 0; |
| 1387 | } |
| 1388 | |
| 1389 | F32 f1_0 = xform[0].x * var_10C.x + xform[0].y * var_10C.y + xform[0].z * var_10C.z; |
| 1390 | F32 f0 = f1_0 - var_10C.z * sws->curdist; |
| 1391 | if ((f1_0 >= rad && f0 >= rad) || (f1_0 <= -rad && f0 <= -rad)) |
| 1392 | { |
| 1393 | return 0; |
| 1394 | } |
| 1395 | |
| 1396 | if (xabs(var_10C.z) > 0.001f) |
| 1397 | { |
| 1398 | F32 f8_0 = 1.0f / var_10C.z; |
| 1399 | F32 f2_0 = var_10C.x * xform[0].x + var_10C.y * xform[0].y + var_10C.z * xform[0].z; |
| 1400 | F32 f0 = f8_0 * f2_0 - xabs(rad * f8_0); |
| 1401 | if (f0 >= sws->curdist) |
| 1402 | { |
| 1403 | return 0; |
| 1404 | } |
| 1405 | if (f0 <= -rad) |
| 1406 | { |
| 1407 | return 0; |
| 1408 | } |
| 1409 | xVec3 var_118; |
| 1410 | if (var_10C.z < 0.0f) |
| 1411 | { |
| 1412 | var_118.x = -rad * var_10C.x; |
| 1413 | var_118.y = -rad * var_10C.y; |
| 1414 | var_118.z = f0 - rad * var_10C.z; |
| 1415 | } |
| 1416 | else |
| 1417 | { |
| 1418 | var_118.x = rad * var_10C.x; |
| 1419 | var_118.y = rad * var_10C.y; |
| 1420 | var_118.z = rad * var_10C.z + f0; |
no test coverage detected