private void Update() { if (!terrain) { Debug.Log("Create terrain"); terrain = new RenderTexture(width, height, 0, RenderTextureFormat.ARGB32, RenderTextureReadWrite.Linear); terrain.filterMode = FilterMode.Point; terrain.enableRandomWrite = true; terrain.hideFlags = HideFlags.DontSave; terrain.Create(); Graphics.Blit(terrain, terrain, terrainMaterial); Shader.SetGlobalTexture("_Terrain", terrain); } if (debrisSystem == null) { debrisSystem = new LeapfrogDebrisSystem(65536, 1 / 120f, 3, debrisMaterial, new Bounds(Vector3.zero, new Vector3(width, height, 100)), this); //debrisSystem = new VerletDebrisSystem(65536, 1/120f, 3, debrisMaterial, new Bounds(Vector3.zero, new Vector3(width, height, 100)), this); } debrisSystem.DispatchDestroyTerrain(); UpdateTerrainDistanceField(); debrisSystem.Update(); }
private void OnDisable() { DestroyImmediate(terrain); DestroyImmediate(terrainDistanceField); DestroyImmediate(material); DestroyImmediate(voronoiMaterial); if (debrisSystem != null) { debrisSystem.Dispose(); debrisSystem = null; } }
private void Start() { if (terrain) { DestroyImmediate(terrain); } if (debrisSystem != null) { debrisSystem.Dispose(); debrisSystem = null; } }