public void Execute() { for (int x = 1; x < 17; x++) { for (int z = 1; z < 17; z++) { for (int y = 1; y < 17; y++) { Block block = chunkData.blocks[BlockUtils.GetBlockIndex(new int3(x, y, z))]; if (block.IsEmpty()) { continue; } // Loop all posible directions on cube and if // the next block in the direction is not empty, // save UVs to mesh data for (int i = 0; i < 6; i++) { if (Check(BlockUtils.GetPositionInDirection((Directions)i, x, y, z))) { CreateFace((Directions)i, new int3(x - 1, y - 1, z - 1)); if (block == Block.dirt && i == (int)Directions.Up) { meshData.uvs.Add(blockData.uvs[(int)Block.grass][0]); meshData.uvs.Add(blockData.uvs[(int)Block.grass][1]); meshData.uvs.Add(blockData.uvs[(int)Block.grass][2]); meshData.uvs.Add(blockData.uvs[(int)Block.grass][3]); } else { meshData.uvs.Add(blockData.uvs[(int)block][0]); meshData.uvs.Add(blockData.uvs[(int)block][1]); meshData.uvs.Add(blockData.uvs[(int)block][2]); meshData.uvs.Add(blockData.uvs[(int)block][3]); } } } } } } }
private bool Check(int3 position) { return(chunkData.blocks[BlockUtils.GetBlockIndex(position)].IsEmpty()); }