int nodeId = intStack.pop();
if (nodeId == TreeNode.NULL_NODE) {
continue;
}
final TreeNode node = m_nodes[nodeId];
if (!AABB.testOverlap(node.aabb, segAABB)) {
continue;
}
// Separating axis for segment (Gino, p80).
// |dot(v, p1 - c)| > dot(|v|, h)
node.aabb.getCenterToOut(c);
node.aabb.getExtentsToOut(h);
temp.set(p1).subLocal(c);
float separation = MathUtils.abs(Vec2.dot(v, temp)) - Vec2.dot(absV, h);
if (separation > 0.0f) {
continue;
}
if (node.isLeaf()) {
subInput.p1.set(input.p1);
subInput.p2.set(input.p2);
subInput.maxFraction = maxFraction;
float value = callback.raycastCallback(subInput, nodeId);