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