public void load(Stream stream) { int data = stream.ReadByte(); if (data <= 0) { _blocks = null; return; } int offsetX = _x * 16; int offsetY = _y * 16; int offsetZ = _z * 16; for (int z = 0; z < 16; ++z) { for (int y = 0; y < 16; ++y) { for (int x = 0; x < 16; ++x) { data = stream.ReadByte(); if (data < 0) { return; } Block block = new Block(x + offsetX, y + offsetY, offsetZ + z, 0); _blocks[x, y, z] = block; } } } }
/// <summary> /// for testing purpose only /// include it in the constructor to generate a randomly filled chunk /// </summary> private void generateStupedWorld() { Random rnd = new Random(); for (int x = 0; x < 16; ++x) { for (int y = 0; y < 16; ++y) { for (int z = 0; z < 16; ++z) { if (rnd.Next(6) == 0) { Block block = new Block(x, y, z, 0); _blocks[x, y, z] = block; } } } } }
public List<Block> createBlocks() { List<Block> blocks = new List<Block>(); foreach (Block srcBlock in model.blocks) { int blockX = (int) srcBlock.Position.x + x; int blockY = (int) srcBlock.Position.y + y; int blockZ = (int) srcBlock.Position.z + z; Block block = new Block(blockX, blockY, blockZ, srcBlock.TextureId); blocks.Add(block); } return blocks; }