public override void ValidateChunkAt(int x, int y) { ChunkAddress addr = new ChunkAddress() { X = x / ChunkSize, Y = y / ChunkSize }; if (!Chunks.ContainsKey(addr)) { return; } var toRemove = new LinkedList <Drawable>(); var chunk = Chunks[addr]; foreach (Drawable e in chunk) { if (!addr.Equals(new ChunkAddress() { X = (int)e.X / ChunkSize, Y = (int)e.Y / ChunkSize })) { Console.WriteLine("Addresses are not equal: {0}:{1} and {2}:{3}", addr.X, addr.Y, (int)e.X / ChunkSize, (int)e.Y / ChunkSize); toRemove.AddLast(e); } } foreach (Drawable e in toRemove) { Console.WriteLine("Moving drawable"); chunk.Remove(e); InsertAt(e, (int)e.X, (int)e.Y); } }
public override void ValidateChunkAt(int x, int y) { ChunkAddress addr = new ChunkAddress() { X = x / ChunkSize, Y = y / ChunkSize }; if (!Chunks.ContainsKey(addr)) { return; } var toRemove = new LinkedList <Entity>(); var chunk = Chunks[addr]; foreach (Entity e in chunk) { if (!addr.Equals(new ChunkAddress() { X = (int)e.X, Y = (int)e.Y })) { toRemove.AddLast(e); } } foreach (Entity e in toRemove) { chunk.Remove(e); InsertAt(e, (int)e.X, (int)e.Y); } }
public void Draw(ChunkAddress address) { var chunk = dimension[address]; if (!IsDrawed(address)) { chunk.GameObjects["Chunk"] = CreateGameObject(chunk, chunkPrefab); SetMesh(chunk); chunk.GameObjects["Chunk"].SetActive(true); } }
public void DrawArroundChunk(Chunk chunk) { isDrawing.Value = true; for (int x = -1; x <= 1; x++) { for (int z = -1; z <= 1; z++) { var baseAddress = chunk.Address; var address = new ChunkAddress(baseAddress.X + x, baseAddress.Z + z); terrainRenderer.Draw(address); } } isDrawing.Value = false; }
private IEnumerator DrawFluid(FluidPropagator propagator) { yield return(new WaitForSeconds(0.5f)); foreach (var items in propagator.Start()) { var chunkAddresses = new HashSet <ChunkAddress>(); foreach (var item in items) { dimension.Blocks[item.Position] = item.Block; chunkAddresses.Add(ChunkAddress.FromPosition(item.Position)); } foreach (var address in chunkAddresses) { terrainRenderer.Redraw(address); } yield return(new WaitForSeconds(0.5f)); } }
public void Draw(Vector3 position) { Draw(ChunkAddress.FromPosition(position)); }
public void Redraw(ChunkAddress address) { var chunk = world [address]; SetMesh(chunk); }
public bool IsDrawed(ChunkAddress address) { return(world.IsGenerated(address) && world [address].GameObjects.Count > 0); }
public bool IsDrawed(Vector3 position) { return(IsDrawed(ChunkAddress.FromPosition(position))); }
public void Redraw(ChunkAddress address) { var chunk = dimension[address]; SetMesh(chunk); }
public bool IsDrawed(ChunkAddress address) { return(dimension.IsGenerated(address) && dimension[address].GameObjects.Count > 0); }