public Boolean IsBoxVisibleToPoint(Vector3 startPoint, OrientedBoundingBox blockingBox) { Boolean isBlocked = Corners.All(t => blockingBox.LineInBox(startPoint, t)); if (!blockingBox.LineInBox(startPoint, blockingBox.Origin)) { isBlocked = false; } return(isBlocked); }
public Boolean Collides(OrientedBoundingBox box) { BoundingSphere boxSphere = box.ExtentSphere; switch (ExtentSphere.Contains(ref boxSphere)) { case ContainmentType.Disjoint: { return(false); } } for (Int32 i = 0; i < 4; i++) { if (LineInBox(box.Corners[i], box.Corners[i + 4]) || box.LineInBox(Corners[i], Corners[i + 4])) { return(true); } } for (Int32 i = 0; i < 8; i++) { Int32 pIndex; switch (i) { case 3: { pIndex = 0; break; } case 7: { pIndex = 4; break; } default: { pIndex = i + 1; break; } } if (LineInBox(box.Corners[i], box.Corners[pIndex]) || box.LineInBox(Corners[i], Corners[pIndex])) { return(true); } } return(false); }