示例#1
0
 private void ClearGrid(ProjectedGrid.Grid grid)
 {
     if (grid == null)
     {
         return;
     }
     grid.screenWidth  = 0;
     grid.screenHeight = 0;
     grid.resolution   = 0;
     grid.groups       = 0;
     if (grid.top != null)
     {
         int count = grid.top.Count;
         for (int i = 0; i < count; i++)
         {
             if (!(grid.top[i] == null))
             {
                 UnityEngine.Object.Destroy(grid.top[i]);
             }
         }
         grid.top.Clear();
     }
     if (grid.topFilters != null)
     {
         int count2 = grid.topFilters.Count;
         for (int j = 0; j < count2; j++)
         {
             if (!(grid.topFilters[j] == null))
             {
                 UnityEngine.Object.Destroy(grid.topFilters[j].mesh);
             }
         }
         grid.topFilters.Clear();
     }
     if (grid.under != null)
     {
         int count3 = grid.under.Count;
         for (int k = 0; k < count3; k++)
         {
             if (!(grid.under[k] == null))
             {
                 UnityEngine.Object.Destroy(grid.under[k]);
             }
         }
         grid.under.Clear();
     }
     if (grid.underFilters != null)
     {
         int count4 = grid.underFilters.Count;
         for (int l = 0; l < count4; l++)
         {
             if (!(grid.underFilters[l] == null))
             {
                 UnityEngine.Object.Destroy(grid.underFilters[l].mesh);
             }
         }
         grid.underFilters.Clear();
     }
     if (grid.topRenderer != null)
     {
         grid.topRenderer.Clear();
     }
     if (grid.underRenderer != null)
     {
         grid.underRenderer.Clear();
     }
 }
示例#2
0
        private void CreateGrid(MESH_RESOLUTION meshRes)
        {
            ProjectedGrid.Grid grid = null;
            if (!this.m_grids.TryGetValue(meshRes, out grid))
            {
                grid = new ProjectedGrid.Grid();
                this.m_grids.Add(meshRes, grid);
            }
            int num  = this.ScreenWidth();
            int num2 = this.ScreenHeight();
            int num3 = this.ResolutionToNumber(meshRes);
            int num4 = this.ChooseGroupSize(num3, this.gridGroups, num, num2);

            if (!base.ForceRecreate && grid.screenWidth == num && grid.screenHeight == num2 && grid.groups == num4)
            {
                return;
            }
            this.ClearGrid(grid);
            grid.screenWidth   = num;
            grid.screenHeight  = num2;
            grid.resolution    = num3;
            grid.groups        = num4;
            base.ForceRecreate = false;
            IList <Mesh> list = this.CreateScreenQuads(num3, num4, num, num2);

            foreach (Mesh mesh in list)
            {
                if (this.oceanTopSideMat != null)
                {
                    GameObject         gameObject         = new GameObject("Ceto TopSide Grid LOD: " + meshRes);
                    MeshFilter         meshFilter         = gameObject.AddComponent <MeshFilter>();
                    MeshRenderer       meshRenderer       = gameObject.AddComponent <MeshRenderer>();
                    NotifyOnWillRender notifyOnWillRender = gameObject.AddComponent <NotifyOnWillRender>();
                    meshFilter.sharedMesh             = mesh;
                    meshRenderer.shadowCastingMode    = ShadowCastingMode.Off;
                    meshRenderer.receiveShadows       = this.receiveShadows;
                    meshRenderer.sharedMaterial       = this.oceanTopSideMat;
                    meshRenderer.reflectionProbeUsage = this.reflectionProbes;
                    gameObject.layer     = LayerMask.NameToLayer(Ocean.OCEAN_LAYER);
                    gameObject.hideFlags = HideFlags.HideAndDontSave;
                    notifyOnWillRender.AddAction(new Action <GameObject>(this.m_ocean.RenderReflection));
                    notifyOnWillRender.AddAction(new Action <GameObject>(this.ApplyProjection));
                    notifyOnWillRender.AddAction(new Action <GameObject>(this.m_ocean.RenderWaveOverlays));
                    notifyOnWillRender.AddAction(new Action <GameObject>(this.m_ocean.RenderOceanMask));
                    notifyOnWillRender.AddAction(new Action <GameObject>(this.m_ocean.RenderOceanDepth));
                    grid.top.Add(gameObject);
                    grid.topRenderer.Add(meshRenderer);
                    grid.topFilters.Add(meshFilter);
                }
                if (this.oceanUnderSideMat)
                {
                    GameObject         gameObject2         = new GameObject("Ceto UnderSide Grid LOD: " + meshRes);
                    MeshFilter         meshFilter2         = gameObject2.AddComponent <MeshFilter>();
                    MeshRenderer       meshRenderer2       = gameObject2.AddComponent <MeshRenderer>();
                    NotifyOnWillRender notifyOnWillRender2 = gameObject2.AddComponent <NotifyOnWillRender>();
                    meshFilter2.sharedMesh             = mesh;
                    meshRenderer2.shadowCastingMode    = ShadowCastingMode.Off;
                    meshRenderer2.receiveShadows       = this.receiveShadows;
                    meshRenderer2.reflectionProbeUsage = this.reflectionProbes;
                    meshRenderer2.sharedMaterial       = this.oceanUnderSideMat;
                    gameObject2.layer     = LayerMask.NameToLayer(Ocean.OCEAN_LAYER);
                    gameObject2.hideFlags = HideFlags.HideAndDontSave;
                    notifyOnWillRender2.AddAction(new Action <GameObject>(this.ApplyProjection));
                    notifyOnWillRender2.AddAction(new Action <GameObject>(this.m_ocean.RenderWaveOverlays));
                    notifyOnWillRender2.AddAction(new Action <GameObject>(this.m_ocean.RenderOceanMask));
                    notifyOnWillRender2.AddAction(new Action <GameObject>(this.m_ocean.RenderOceanDepth));
                    grid.under.Add(gameObject2);
                    grid.underRenderer.Add(meshRenderer2);
                    grid.underFilters.Add(meshFilter2);
                }
                UnityEngine.Object.Destroy(mesh);
            }
        }
示例#3
0
 private void CreateGrid(MESH_RESOLUTION meshRes)
 {
     ProjectedGrid.Grid grid = null;
     if (!this.m_grids.TryGetValue(meshRes, out grid))
     {
         grid = new ProjectedGrid.Grid();
         this.m_grids.Add(meshRes, grid);
     }
     int num = this.ScreenWidth();
     int num2 = this.ScreenHeight();
     int num3 = this.ResolutionToNumber(meshRes);
     int num4 = this.ChooseGroupSize(num3, this.gridGroups, num, num2);
     if (!base.ForceRecreate && grid.screenWidth == num && grid.screenHeight == num2 && grid.groups == num4)
     {
         return;
     }
     this.ClearGrid(grid);
     grid.screenWidth = num;
     grid.screenHeight = num2;
     grid.resolution = num3;
     grid.groups = num4;
     base.ForceRecreate = false;
     IList<Mesh> list = this.CreateScreenQuads(num3, num4, num, num2);
     foreach (Mesh current in list)
     {
         if (this.oceanTopSideMat != null)
         {
             GameObject gameObject = new GameObject("Ceto TopSide Grid LOD: " + meshRes);
             MeshFilter meshFilter = gameObject.AddComponent<MeshFilter>();
             MeshRenderer meshRenderer = gameObject.AddComponent<MeshRenderer>();
             NotifyOnWillRender notifyOnWillRender = gameObject.AddComponent<NotifyOnWillRender>();
             meshFilter.sharedMesh = current;
             meshRenderer.shadowCastingMode = ShadowCastingMode.Off;
             meshRenderer.receiveShadows = this.receiveShadows;
             meshRenderer.sharedMaterial = this.oceanTopSideMat;
             meshRenderer.reflectionProbeUsage = this.reflectionProbes;
             gameObject.layer = LayerMask.NameToLayer(Ocean.OCEAN_LAYER);
             gameObject.hideFlags = HideFlags.HideAndDontSave;
             notifyOnWillRender.AddAction(new Action<GameObject>(this.m_ocean.RenderReflection));
             notifyOnWillRender.AddAction(new Action<GameObject>(this.ApplyProjection));
             notifyOnWillRender.AddAction(new Action<GameObject>(this.m_ocean.RenderWaveOverlays));
             notifyOnWillRender.AddAction(new Action<GameObject>(this.m_ocean.RenderOceanMask));
             notifyOnWillRender.AddAction(new Action<GameObject>(this.m_ocean.RenderOceanDepth));
             grid.top.Add(gameObject);
             grid.topRenderer.Add(meshRenderer);
             grid.topFilters.Add(meshFilter);
         }
         if (this.oceanUnderSideMat)
         {
             GameObject gameObject2 = new GameObject("Ceto UnderSide Grid LOD: " + meshRes);
             MeshFilter meshFilter2 = gameObject2.AddComponent<MeshFilter>();
             MeshRenderer meshRenderer2 = gameObject2.AddComponent<MeshRenderer>();
             NotifyOnWillRender notifyOnWillRender2 = gameObject2.AddComponent<NotifyOnWillRender>();
             meshFilter2.sharedMesh = current;
             meshRenderer2.shadowCastingMode = ShadowCastingMode.Off;
             meshRenderer2.receiveShadows = this.receiveShadows;
             meshRenderer2.reflectionProbeUsage = this.reflectionProbes;
             meshRenderer2.sharedMaterial = this.oceanUnderSideMat;
             gameObject2.layer = LayerMask.NameToLayer(Ocean.OCEAN_LAYER);
             gameObject2.hideFlags = HideFlags.HideAndDontSave;
             notifyOnWillRender2.AddAction(new Action<GameObject>(this.ApplyProjection));
             notifyOnWillRender2.AddAction(new Action<GameObject>(this.m_ocean.RenderWaveOverlays));
             notifyOnWillRender2.AddAction(new Action<GameObject>(this.m_ocean.RenderOceanMask));
             notifyOnWillRender2.AddAction(new Action<GameObject>(this.m_ocean.RenderOceanDepth));
             grid.under.Add(gameObject2);
             grid.underRenderer.Add(meshRenderer2);
             grid.underFilters.Add(meshFilter2);
         }
         UnityEngine.Object.Destroy(current);
     }
 }