//		public ulong ID;
    //public string ShelfName;
    //public bool IsEnabled;
    //public GameObject Shelf;

    ////public NetFriendlyBookShelf[] ObscuredBookShelves;
    //public string ObscuredBookShelves;
    ////public NetFriendlyBookShelf ObscuredBy;
    //public string ObscuredBy;
    //public NetFriendlyBook[] HeldBooks;

    public static NetFriendlyBook ProcessBook(Librarian.Book _book)
    {
        string Classe;

        Classe = _book.BookClass.GetType().Name;
        NetFriendlyBook Book = new NetFriendlyBook()
        {
            ID            = _book.ID,
            BookClassname = Classe,
            Title         = _book.Title,
            UnGenerated   = _book.UnGenerated
        };

        List <NetFriendlyPage> ListPages = new List <NetFriendlyPage>();

        foreach (var bob in _book.GetBindedPages())
        {
            List <NetFriendlySentence> Sentences = new List <NetFriendlySentence>();
            NetFriendlyPage            Page      = new NetFriendlyPage
            {
                ID           = bob.ID,
                Variable     = bob.Variable.ToString(),
                VariableName = bob.VariableName,
                VariableType = bob.VariableType.ToString()
            };
            if (Librarian.UEGetType(Page.VariableType) == null)
            {
                Page.VariableType = bob.VariableType.AssemblyQualifiedName;
            }
            if (bob.Sentences.Sentences != null && (bob.Sentences.Sentences.Count > 0))
            {
                NetFriendlySentence FriendlySentence = new NetFriendlySentence()
                {
                    HeldBySentenceID = bob.Sentences.SentenceID
                };
                FriendlySentence.OnPageID = 8888888;
                Sentences.Add(FriendlySentence);
                RecursiveSentencePopulate(bob.Sentences, Sentences);
            }
            Page.Sentences = Sentences.ToArray();
            ListPages.Add(Page);
        }
        Book.BindedPages = ListPages.ToArray();

        return(Book);
    }
    public static NetFriendlyBook ProcessBook(Librarian.Book _book)
    {
        string Classe;

        Classe = _book.BookClass.GetType().Name;
        NetFriendlyBook Book = new NetFriendlyBook()
        {
            ID            = _book.ID,
            BookClassname = Classe,
            Title         = _book.Title,
            UnGenerated   = _book.UnGenerated
        };

        // get max possible packet size from current transform
        int maxPacketSize = Mirror.Transport.activeTransport.GetMaxPacketSize(0);
        // set currentSize start value to max TCP header size (60b)
        int currentSize = 60;

        List <NetFriendlyPage> ListPages = new List <NetFriendlyPage>();

        foreach (var bob in _book.GetBindedPages())
        {
            List <NetFriendlySentence> Sentences = new List <NetFriendlySentence>();
            NetFriendlyPage            Page      = new NetFriendlyPage
            {
                ID           = bob.ID,
                Variable     = VVUIElementHandler.Serialise(bob.Variable, bob.VariableType),
                VariableName = bob.VariableName,
                VariableType = bob.VariableType?.ToString(),
                VVHighlight  = bob.VVHighlight
            };
            if (bob.PInfo != null)
            {
                Page.CanWrite = bob.PCanWrite;
            }



            if (Librarian.UEGetType(Page.VariableType) == null)
            {
                Page.VariableType = bob?.VariableType?.AssemblyQualifiedName;
            }
            if (bob.Sentences.Sentences != null && (bob.Sentences.Sentences.Count > 0))
            {
                NetFriendlySentence FriendlySentence = new NetFriendlySentence()
                {
                    HeldBySentenceID = bob.Sentences.SentenceID
                };
                FriendlySentence.OnPageID = 8888888;
                Sentences.Add(FriendlySentence);
                RecursiveSentencePopulate(bob.Sentences, Sentences);
            }
            Page.Sentences = Sentences.ToArray();

            //currentSize += Page.GetSize(); //TODO work out why this causes errors


            // if currentSize is greater than the maxPacketSize - break loop and send message
            if (currentSize > maxPacketSize)
            {
                Logger.LogError("[VariableViewerNetworking.ProcessBook] - message is to big to send in one packet", Category.VariableViewer);
                break;
            }

            ListPages.Add(Page);
        }
        Book.BindedPages = ListPages.ToArray();

        return(Book);
    }