| 1198 | } |
| 1199 | |
| 1200 | void xBoxFromRay(xBox& box, const xRay3& ray) |
| 1201 | { |
| 1202 | xLine3 line; |
| 1203 | |
| 1204 | if (ray.flags & 0x400) |
| 1205 | { |
| 1206 | F32 x = ray.dir.x * ray.min_t; |
| 1207 | F32 y = ray.dir.y * ray.min_t; |
| 1208 | F32 z = ray.dir.z * ray.min_t; |
| 1209 | |
| 1210 | line.p1.x = ray.origin.x + x; |
| 1211 | line.p1.y = ray.origin.y + y; |
| 1212 | line.p1.z = ray.origin.z + z; |
| 1213 | } |
| 1214 | else |
| 1215 | { |
| 1216 | line.p1.x = ray.origin.x; |
| 1217 | line.p1.y = ray.origin.y; |
| 1218 | line.p1.z = ray.origin.z; |
| 1219 | } |
| 1220 | |
| 1221 | if (ray.flags & 0x800) |
| 1222 | { |
| 1223 | F32 dist = (ray.flags & 0x400) ? ray.max_t - ray.min_t : ray.max_t; |
| 1224 | |
| 1225 | line.p2.x = ray.dir.x * dist; |
| 1226 | line.p2.y = ray.dir.y * dist; |
| 1227 | line.p2.z = ray.dir.z * dist; |
| 1228 | } |
| 1229 | else |
| 1230 | { |
| 1231 | line.p2.x = ray.dir.x; |
| 1232 | line.p2.y = ray.dir.y; |
| 1233 | line.p2.z = ray.dir.z; |
| 1234 | } |
| 1235 | |
| 1236 | line.p2.x = line.p1.x + line.p2.x; |
| 1237 | line.p2.y = line.p1.y + line.p2.y; |
| 1238 | line.p2.z = line.p1.z + line.p2.z; |
| 1239 | |
| 1240 | xBoxFromLine(box, line); |
| 1241 | } |
| 1242 | |
| 1243 | void xBoxFromLine(xBox& box, const xLine3& line) |
| 1244 | { |
no test coverage detected