public List <LiquidPrimitive> GetAllLiquidPrimitives() { List <LiquidPrimitive> toReturn = new List <LiquidPrimitive>(); foreach (VoxelChunk chunk in ChunkMap.Select(chunks => chunks.Value)) { toReturn.AddRange(chunk.Liquids.Values); } return(toReturn); }
public void SetMaxViewingLevel(float level, ChunkManager.SliceMode slice) { Slice = slice; MaxViewingLevel = Math.Max(Math.Min(level, ChunkSizeY), 1); foreach (VoxelChunk c in ChunkMap.Select(chunks => chunks.Value).Where(c => c.NeedsViewingLevelChange())) { c.ShouldRecalculateLighting = false; c.ShouldRebuild = true; } }
public void RecomputeNeighbors() { foreach (VoxelChunk chunk in ChunkMap.Select(chunks => chunks.Value)) { chunk.Neighbors.Clear(); } foreach (KeyValuePair <Point3, VoxelChunk> chunks in ChunkMap) { VoxelChunk chunk = chunks.Value; List <VoxelChunk> adjacents = GetAdjacentChunks(chunk); foreach (VoxelChunk c in adjacents) { if (!c.Neighbors.ContainsKey(chunk.ID) && chunk != c) { c.Neighbors[chunk.ID] = (chunk); } chunk.Neighbors[c.ID] = c; } } }
public void RecomputeNeighbors() { foreach (VoxelChunk chunk in ChunkMap.Select(chunks => chunks.Value)) { chunk.Neighbors.Clear(); chunk.EuclidianNeighbors.Clear(); } foreach (KeyValuePair <Point3, VoxelChunk> chunks in ChunkMap) { VoxelChunk chunk = chunks.Value; Point3 successor = new Point3(0, 0, 0); for (successor.X = -1; successor.X < 2; successor.X++) { for (successor.Z = -1; successor.Z < 2; successor.Z++) { for (successor.Y = -1; successor.Y < 2; successor.Y++) { Point3 sideChunkID = chunk.ID + successor; VoxelChunk sideChunk; ChunkMap.TryGetValue(sideChunkID, out sideChunk); if (successor.Y == 0 && sideChunk != null) { if (!sideChunk.Neighbors.ContainsKey(chunk.ID) && chunk != sideChunk) { chunk.Neighbors[chunk.ID] = chunk; } chunk.Neighbors[sideChunkID] = sideChunk; } chunk.EuclidianNeighbors[VoxelChunk.SuccessorToEuclidianLookupKey(successor)] = sideChunk; } } } } }