Пример #1
0
    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++;
        }
    }
Пример #2
0
 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);
         }
     }
 }