void _stab (const AABBNoLeafNode* node) { // Actual box-box test if (!_box((Fvector&)node->mAABB.mCenter,(Fvector&)node->mAABB.mExtents)) return; // 1st chield if (node->HasLeaf()) _prim (node->GetPrimitive()); else _stab (node->GetPos()); // Early exit for "only first" if (bFirst && dest->r_count()) return; // 2nd chield if (node->HasLeaf2()) _prim (node->GetPrimitive2()); else _stab (node->GetNeg()); }
void _stab (const AABBNoLeafNode* node, u32 mask) { // Actual frustum/aabb test EFC_Visible result = _box((Fvector&)node->mAABB.mCenter,(Fvector&)node->mAABB.mExtents,mask); if (fcvNone == result) return; // 1st chield if (node->HasLeaf()) _prim (node->GetPrimitive()); else _stab (node->GetPos(),mask); // Early exit for "only first" if (bFirst && dest->r_count()) return; // 2nd chield if (node->HasLeaf2()) _prim (node->GetPrimitive2()); else _stab (node->GetNeg(),mask); }