Ejemplo n.º 1
0
        public void SetBlock(int x, int y, int z, BlockId block)
        {
            Chunk chunk = GetChunk(x, y, z);

            if (chunk == null)
            {
                chunk = CreateChunk(x, y, z);
            }

            data.SetBlock(x, y, z, block);
            chunk.Render();

            var xx  = x - chunk.pos.x;
            var yy  = y - chunk.pos.y;
            var zz  = z - chunk.pos.z;
            var cs1 = MapConstants.ChunkSize - 1;

            UpdateIfEqual(xx, 0, new WorldPos(x - 1, y + 0, z + 0));
            UpdateIfEqual(xx, cs1, new WorldPos(x + 1, y + 0, z + 0));
            UpdateIfEqual(yy, 0, new WorldPos(x + 0, y - 1, z + 0));
            UpdateIfEqual(yy, cs1, new WorldPos(x + 0, y + 1, z + 0));
            UpdateIfEqual(zz, 0, new WorldPos(x + 0, y + 0, z - 1));
            UpdateIfEqual(zz, cs1, new WorldPos(x + 0, y + 0, z + 1));
        }