//---------------------------------------------------------------------------- void Node::GetVisibleSetRenderObject(Culler& rCuller, Bool noCull) { const Camera* pCamera = rCuller.GetCamera(); // Add this RenderObject if it's not culled. (Its bounding volume is // smaller or equal the bounding volume of this node). if (mspRenderObject && ((pCamera->GetLayerMask() & mLayerMask) != 0)) { if (GetQuantity() == 0) { const Vector3F& rCamPos = rCuller.GetCamera()->GetLocation(); Vector3F pos = mspRenderObjectWorldBound->GetCenter() - rCamPos; rCuller.Insert(mspRenderObject, &World, pos); } else { UInt savePlaneState = rCuller.GetPlaneState(); if (noCull || rCuller.IsVisible(mspRenderObjectWorldBound, true)) { const Vector3F& rCamPos = rCuller.GetCamera()->GetLocation(); Vector3F pos = mspRenderObjectWorldBound->GetCenter() - rCamPos; rCuller.Insert(mspRenderObject, &World, pos); } rCuller.SetPlaneState(savePlaneState); } } }
//---------------------------------------------------------------------------- void Spatial::OnGetVisibleSet (Culler& culler, bool noCull) { if (Culling == CULL_ALWAYS) { return; } if (Culling == CULL_NEVER) { noCull = true; } unsigned int savePlaneState = culler.GetPlaneState(); if (noCull || culler.IsVisible(WorldBound)) { GetVisibleSet(culler, noCull); } culler.SetPlaneState(savePlaneState); }