void Awake() { //Cache thisTransform = transform; if (disableCullingForTest) { Debug.LogWarning("Culling has been disabled!"); return; } //Setup culling areas cullingAreas = (CullingArea_Manual[])FindObjectsOfType(typeof(CullingArea_Manual)); //Setup groups CullingGroup_Manual[] groups = (CullingGroup_Manual[])FindObjectsOfType(typeof(CullingGroup_Manual)); allCullingGroups = new CullingAreaGroupSettings[groups.Length]; int j = 0; foreach (CullingGroup_Manual aGroup in groups) { CullingAreaGroupSettings myGroup = new CullingAreaGroupSettings(); myGroup.script = aGroup; allCullingGroups[j] = myGroup; j++; } }
public void LinkOcclusionGroups( ) { //first make sure all the occlusion areas are created ModuleOcclusionAreas.Clear(); TransitionOcclusionAreas.Clear(); for (int i = 0; i < Modules.Count; i++) { ModuleOcclusionAreas.Add(CreateOcclusionArea(Modules [i].transform)); } for (int i = 0; i < Transitions.Count; i++) { TransitionOcclusionAreas.Add(CreateOcclusionArea(Transitions [i].transform)); } //now create links for every module for (int i = 0; i < Modules.Count; i++) { CullingArea_Manual occlusionArea = ModuleOcclusionAreas [i]; for (int j = 0; j < Modules.Count; j++) { CullingAreaGroupSettings groupSettings = new CullingAreaGroupSettings(); groupSettings.script = Modules [j].OcclusionGroup; if (i == j) { //for now, only show our own group groupSettings.cullingOptions = CullingOptions.Show; } else { groupSettings.cullingOptions = CullingOptions.AlwaysHide; } occlusionArea.groupsList.Add(groupSettings); } //now add the transitions = these are always on for (int k = 0; k < Transitions.Count; k++) { CullingAreaGroupSettings groupSettings = new CullingAreaGroupSettings(); groupSettings.script = Transitions [k].OcclusionGroup; groupSettings.cullingOptions = CullingOptions.Show; occlusionArea.groupsList.Add(groupSettings); } } //finally create links for every transition //transitions are always visible from all groups for (int i = 0; i < TransitionOcclusionAreas.Count; i++) { CullingArea_Manual occlusionArea = TransitionOcclusionAreas [i]; for (int j = 0; j < Modules.Count; j++) { CullingAreaGroupSettings groupSettings = new CullingAreaGroupSettings(); groupSettings.script = Modules [j].OcclusionGroup; groupSettings.cullingOptions = CullingOptions.AlwaysHide; occlusionArea.groupsList.Add(groupSettings); } for (int k = 0; k < Transitions.Count; k++) { CullingAreaGroupSettings groupSettings = new CullingAreaGroupSettings(); groupSettings.script = Transitions [k].OcclusionGroup; groupSettings.cullingOptions = CullingOptions.Show; occlusionArea.groupsList.Add(groupSettings); } } }