| 382 | } |
| 383 | |
| 384 | Vec3 OBB::getFaceDirection(int index) const |
| 385 | { |
| 386 | Vec3 corners[8]; |
| 387 | getCorners(corners); |
| 388 | |
| 389 | Vec3 faceDirection, v0, v1; |
| 390 | switch (index) |
| 391 | { |
| 392 | case 0: // front and back |
| 393 | v0 = corners[2] - corners[1]; |
| 394 | v1 = corners[0] - corners[1]; |
| 395 | Vec3::cross(v0, v1, &faceDirection); |
| 396 | faceDirection.normalize(); |
| 397 | break; |
| 398 | case 1: // left and right |
| 399 | v0 = corners[5] - corners[2]; |
| 400 | v1 = corners[3] - corners[2]; |
| 401 | Vec3::cross(v0, v1, &faceDirection); |
| 402 | faceDirection.normalize(); |
| 403 | break; |
| 404 | case 2: // top and bottom |
| 405 | v0 = corners[1] - corners[2]; |
| 406 | v1 = corners[5] - corners[2]; |
| 407 | Vec3::cross(v0, v1, &faceDirection); |
| 408 | faceDirection.normalize(); |
| 409 | break; |
| 410 | default: |
| 411 | AXASSERT(0, "Invalid index!"); |
| 412 | break; |
| 413 | } |
| 414 | return faceDirection; |
| 415 | } |
| 416 | |
| 417 | bool OBB::intersects(const OBB& box) const |
| 418 | { |
no test coverage detected