示例#1
0
    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();
    }
示例#2
0
 private void OnDisable()
 {
     DestroyImmediate(terrain);
     DestroyImmediate(terrainDistanceField);
     DestroyImmediate(material);
     DestroyImmediate(voronoiMaterial);
     if (debrisSystem != null)
     {
         debrisSystem.Dispose();
         debrisSystem = null;
     }
 }
示例#3
0
 private void Start()
 {
     if (terrain)
     {
         DestroyImmediate(terrain);
     }
     if (debrisSystem != null)
     {
         debrisSystem.Dispose();
         debrisSystem = null;
     }
 }