Esempio n. 1
0
        public override void CreateChunk(Vector2 center, Vector2 dimensions, ChunkCreatedCallback callback)
        {
            var bw = new BackgroundWorker();

            bw.DoWork += delegate(object o, DoWorkEventArgs args) {
                args.Result = GenerateTerrain(center, dimensions);
            };

            bw.RunWorkerCompleted += delegate(object o, RunWorkerCompletedEventArgs args) {
                var quadMesh = args.Result as QuadMesh;

                var mesh  = quadMesh.ToMesh(!FlatShading, ConvertToTris);
                var chunk = Instantiate(ChunkPrefab.gameObject).GetComponent <InfiniteTerrainChunk>();
                chunk.gameObject.SetActive(false);
                chunk.SetMesh(mesh);
                chunk.Center     = center;
                chunk.Dimensions = dimensions;

                // set correct position
                chunk.transform.position = chunk.transform.position.CopySetXZ(center - dimensions / 2);

                callback(chunk);
            };

            bw.RunWorkerAsync();
        }
 public abstract void CreateChunk(Vector2 center, Vector2 dimensions, ChunkCreatedCallback callback);