private void UserSideFrustumCulling(IList <SceneNode> nodeChildren, Frustum frustum) { foreach (SceneNode node in nodeChildren) { if (node.Name == "Frustum" || node.Name.Contains("Cam")) { continue; } Mesh mesh = node.GetComponent <Mesh>(); if (mesh != null) { //We only perform the test for meshes that do have a calculated - non-zero sized - bounding box. if (mesh.BoundingBox.Size != float3.Zero) { AABBf worldSpaceBoundingBox = node.GetComponent <Transform>().Matrix() * mesh.BoundingBox; if (!worldSpaceBoundingBox.InsideOrIntersectingFrustum(frustum)) { mesh.Active = false; } else { mesh.Active = true; } } } if (node.Children.Count != 0) { UserSideFrustumCulling(node.Children, frustum); } } }