public void UpdateLODGroup(Camera camera, Vector3 cameraPosition, bool parentUsed) { if (m_LodGroup == null) { m_LodGroup = GetComponent <LODGroup>(); } //if lodgroup is not exists, there is no mesh. if (m_LodGroup == null) { return; } //if parent already visibled, don't need to visible to children. if (parentUsed == true) { m_LodGroup.SetEnabled(false); if (childVolumes.Count == 0) { foreach (var volumeGroup in m_VolumeGroups) { foreach (var group in volumeGroup.LODGroups) { group.SetEnabled(false); } } } else { foreach (var childVolume in childVolumes) { childVolume.UpdateLODGroup(camera, cameraPosition, true); } } return; } int currentLod = m_LodGroup.GetCurrentLOD(camera); if (currentLod == 0) { m_LodGroup.SetEnabled(false); //leaf node have to used mesh own. if (childVolumes.Count == 0) { foreach (var volumeGroup in m_VolumeGroups) { foreach (var group in volumeGroup.LODGroups) { group.SetEnabled(true); } } } else { foreach (var childVolume in childVolumes) { childVolume.UpdateLODGroup(camera, cameraPosition, false); } } } else if (currentLod == 1) { m_LodGroup.SetEnabled(true); //leaf node have to used mesh own. if (childVolumes.Count == 0) { foreach (var volumeGroup in m_VolumeGroups) { foreach (var group in volumeGroup.LODGroups) { group.SetEnabled(false); } } } else { foreach (var childVolume in childVolumes) { childVolume.UpdateLODGroup(camera, cameraPosition, true); } } } }