public List <GameObject> SetBlock(Vector3 Pnt, BlockClass B) { var Affected = new List <GameObject>(); var PS = BlockProperties.GetPosition(Pnt); var BlockPos = PS.BlockInChunk; //Test that block is contained in Block if ((BlockPos.x >= 0) & (BlockPos.y >= 0) & (BlockPos.z >= 0) & (BlockPos.x < BlockProperties.ChunkSize) & (BlockPos.y < BlockProperties.ChunkSize) & (BlockPos.z < BlockProperties.ChunkSize)) { GameObject tempChunk; if (Chunks.TryGetValue(PS.ChunkInWorld, out tempChunk)) { tempChunk.GetComponent <ChunkObject>().Blocks[BlockPos.x + 1][BlockPos.y + 1][BlockPos.z + 1] = B; Affected.Add(tempChunk); var ChunkOffset = new Vector3Int(); if (BlockPos.x == 0) { ChunkOffset.x--; } if (BlockPos.y == 0) { ChunkOffset.y--; } if (BlockPos.z == 0) { ChunkOffset.z--; } if (BlockPos.x == BlockProperties.ChunkSize - 1) { ChunkOffset.x++; } if (BlockPos.y == BlockProperties.ChunkSize - 1) { ChunkOffset.y++; } if (BlockPos.z == BlockProperties.ChunkSize - 1) { ChunkOffset.z++; } if (ChunkOffset.x != 0) { if (Chunks.TryGetValue(PS.ChunkInWorld + new Vector3Int(ChunkOffset.x * 16, 0, 0), out tempChunk)) { tempChunk.GetComponent <ChunkObject>() .Blocks[BlockPos.x + 1 - ChunkOffset.x * BlockProperties.ChunkSize][ BlockPos.y + 1][BlockPos.z + 1] = B; Affected.Add(tempChunk); } } if (ChunkOffset.y != 0) { if (Chunks.TryGetValue(PS.ChunkInWorld + new Vector3Int(0, ChunkOffset.y * 16, 0), out tempChunk)) { tempChunk.GetComponent <ChunkObject>().Blocks[BlockPos.x + 1][ BlockPos.y + 1 - ChunkOffset.y * BlockProperties.ChunkSize][BlockPos.z + 1] = B; Affected.Add(tempChunk); } } if (ChunkOffset.z != 0) { if (Chunks.TryGetValue(PS.ChunkInWorld + new Vector3Int(0, 0, ChunkOffset.z * 16), out tempChunk)) { tempChunk.GetComponent <ChunkObject>().Blocks[BlockPos.x + 1][BlockPos.y + 1][ BlockPos.z + 1 - ChunkOffset.z * BlockProperties.ChunkSize] = B; Affected.Add(tempChunk); } } if ((ChunkOffset.x != 0) & (ChunkOffset.y != 0)) { if (Chunks.TryGetValue(PS.ChunkInWorld + new Vector3Int(ChunkOffset.x * 16, ChunkOffset.y * 16, 0), out tempChunk)) { tempChunk.GetComponent <ChunkObject>() .Blocks[BlockPos.x + 1 - ChunkOffset.x * BlockProperties.ChunkSize][ BlockPos.y + 1 - ChunkOffset.y * BlockProperties.ChunkSize][BlockPos.z + 1] = B; Affected.Add(tempChunk); } } if ((ChunkOffset.x != 0) & (ChunkOffset.z != 0)) { if (Chunks.TryGetValue(PS.ChunkInWorld + new Vector3Int(ChunkOffset.x * 16, 0, ChunkOffset.z * 16), out tempChunk)) { tempChunk.GetComponent <ChunkObject>() .Blocks[BlockPos.x + 1 - ChunkOffset.x * BlockProperties.ChunkSize] [BlockPos.y + 1][BlockPos.z + 1 - ChunkOffset.z * BlockProperties.ChunkSize] = B; Affected.Add(tempChunk); } } if ((ChunkOffset.y != 0) & (ChunkOffset.z != 0)) { if (Chunks.TryGetValue(PS.ChunkInWorld + new Vector3Int(0, ChunkOffset.y * 16, ChunkOffset.z * 16), out tempChunk)) { tempChunk.GetComponent <ChunkObject>().Blocks[BlockPos.x + 1][ BlockPos.y + 1 - ChunkOffset.y * BlockProperties.ChunkSize][ BlockPos.z + 1 - ChunkOffset.z * BlockProperties.ChunkSize] = B; Affected.Add(tempChunk); } } if ((ChunkOffset.x != 0) & (ChunkOffset.y != 0) & (ChunkOffset.z != 0)) { if (Chunks.TryGetValue( PS.ChunkInWorld + new Vector3Int(ChunkOffset.x * 16, ChunkOffset.y * 16, ChunkOffset.z * 16), out tempChunk)) { tempChunk.GetComponent <ChunkObject>() .Blocks[BlockPos.x + 1 - ChunkOffset.x * BlockProperties.ChunkSize][ BlockPos.y + 1 - ChunkOffset.y * BlockProperties.ChunkSize][ BlockPos.z + 1 - ChunkOffset.z * BlockProperties.ChunkSize] = B; Affected.Add(tempChunk); } } } } return(Affected); }