public static BlockMeshBuilder GenerateBlock(BlockFaceVisibility visibility)
 {
     return(BlockMeshBuilder.GenerateBlockMesh(
                visibility.Top,
                visibility.Front,
                visibility.Left,
                visibility.Bottom,
                visibility.Right,
                visibility.Back));
 }
        public static BlockFaceVisibility GetVisibleFaces(Block block)
        {
            BlockFaceVisibility visibility = new BlockFaceVisibility();
            Chunk         chunk            = block.Location.Chunk;
            BlockLocation location         = block.Location;

            Block left = chunk.GetBlockAt(location.X - 1, location.Y, location.Z);
            Block righ = chunk.GetBlockAt(location.X + 1, location.Y, location.Z);
            Block topp = chunk.GetBlockAt(location.X, location.Y + 1, location.Z);
            Block botm = chunk.GetBlockAt(location.X, location.Y - 1, location.Z);
            Block back = chunk.GetBlockAt(location.X, location.Y, location.Z - 1);
            Block frnt = chunk.GetBlockAt(location.X, location.Y, location.Z + 1);

            visibility.Left   = (left == null || left.IsEmpty() || left.IsTransparent);
            visibility.Right  = (righ == null || righ.IsEmpty() || righ.IsTransparent);
            visibility.Top    = (topp == null || topp.IsEmpty() || topp.IsTransparent);
            visibility.Bottom = (botm == null || botm.IsEmpty() || botm.IsTransparent);
            visibility.Back   = (back == null || back.IsEmpty() || back.IsTransparent);
            visibility.Front  = (frnt == null || frnt.IsEmpty() || frnt.IsTransparent);
            return(visibility);
        }