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(); } }
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); } }
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); } }