// 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); }