예제 #1
0
        BookShelfFlat DataFlat(int nToCreate)
        {
            var builder = new FlatBufferBuilder(1024);

            Offset <BookFlat>[] books = new Offset <BookFlat> [nToCreate];

            for (int i = 1; i <= nToCreate; i++)
            {
                var title = builder.CreateString($"Book {i}");
                builder.StartVector(1, BookDataSize, 0);
                byte[] bytes = CreateAndFillByteBuffer();
                if (bytes.Length > 0)
                {
                    builder.Put(bytes);
                }
                VectorOffset bookbyteArrayOffset = builder.EndVector();
                var          bookOffset          = BookFlat.CreateBookFlat(builder, title, i, bookbyteArrayOffset);
                books[i - 1] = bookOffset;
            }

            var          secretOffset = builder.CreateString("private member value");
            VectorOffset booksVector  = builder.CreateVectorOfTables <BookFlat>(books);
            var          lret         = BookShelfFlat.CreateBookShelfFlat(builder, booksVector, secretOffset);

            builder.Finish(lret.Value);
            var bookshelf = BookShelfFlat.GetRootAsBookShelfFlat(builder.DataBuffer);

            return(bookshelf);
        }
    //TODO Once finished use flatbuffer to save player game data
    public void SaveProfileToFlat(PlayerProfileModel prof)
    {
        float start = Time.realtimeSinceStartup;
        List <Offset <CharacterModelFlat> > charList = new List <Offset <CharacterModelFlat> >();
        FlatBufferBuilder fbb  = new FlatBufferBuilder(1);
        StringOffset      item = fbb.CreateString(prof.itemString);

        foreach (CharacterModel model in prof.characters)
        {
            charList.Add(AddCharacterToFlat(fbb, model));
        }
        VectorOffset charVector = fbb.CreateVectorOfTables <CharacterModelFlat>(charList.ToArray());

        PlayerProfileFlat.StartPlayerProfileFlat(fbb);
        PlayerProfileFlat.AddGold(fbb, prof.Gold);
        PlayerProfileFlat.AddItems(fbb, item);
        PlayerProfileFlat.AddCharacters(fbb, charVector);
        Offset <PlayerProfileFlat> offset = PlayerProfileFlat.EndPlayerProfileFlat(fbb);

        PlayerProfileFlat.FinishPlayerProfileFlatBuffer(fbb, offset);
        MemoryStream ms = new MemoryStream(fbb.DataBuffer.Data, fbb.DataBuffer.Position, fbb.Offset);

        File.WriteAllBytes(XmlSaver.PersistentDataPath() + "/SAVEDATA", ms.ToArray());
        Debug.Log("Flat Saving time  " + (Time.realtimeSinceStartup - start));
    }
예제 #3
0
        BookShelfFlat DataFlat(int nToCreate)
        {
            var builder = new FlatBufferBuilder(1024);

            Offset <BookFlat>[] books = new Offset <BookFlat> [nToCreate];

            for (int i = 1; i <= nToCreate; i++)
            {
                var title      = builder.CreateString($"Book {i}");
                var bookOffset = BookFlat.CreateBookFlat(builder, title, i);
                books[i - 1] = bookOffset;
            }

            var          secretOffset = builder.CreateString("private member value");
            VectorOffset booksVector  = builder.CreateVectorOfTables <BookFlat>(books);
            var          lret         = BookShelfFlat.CreateBookShelfFlat(builder, booksVector, secretOffset);

            builder.Finish(lret.Value);
            var bookshelf = BookShelfFlat.GetRootAsBookShelfFlat(builder.DataBuffer);

            return(bookshelf);
        }
예제 #4
0
 public static VectorOffset CreateMySortedVectorOfTables(FlatBufferBuilder builder, Offset <Monster>[] offsets)
 {
     Array.Sort(offsets, (Offset <Monster> o1, Offset <Monster> o2) => CompareStrings(__offset(10, o1.Value, builder.DataBuffer), __offset(10, o2.Value, builder.DataBuffer), builder.DataBuffer));
     return(builder.CreateVectorOfTables(offsets));
 }
예제 #5
0
 public static VectorOffset CreateSortedVectorOfFDisplayable(FlatBufferBuilder builder, Offset <FDisplayable>[] offsets)
 {
     Array.Sort(offsets, (Offset <FDisplayable> o1, Offset <FDisplayable> o2) => Table.CompareStrings(Table.__offset(4, o1.Value, builder.DataBuffer), Table.__offset(4, o2.Value, builder.DataBuffer), builder.DataBuffer));
     return(builder.CreateVectorOfTables(offsets));
 }
예제 #6
0
 public static VectorOffset CreateSortedVectorOfSortedVectorInt32Table(FlatBufferBuilder builder, Offset <SortedVectorInt32Table>[] offsets)
 {
     Array.Sort(offsets, (Offset <SortedVectorInt32Table> o1, Offset <SortedVectorInt32Table> o2) => builder.DataBuffer.GetInt(Table.__offset(4, o1.Value, builder.DataBuffer)).CompareTo(builder.DataBuffer.GetInt(Table.__offset(4, o2.Value, builder.DataBuffer))));
     return(builder.CreateVectorOfTables(offsets));
 }
예제 #7
0
 public static VectorOffset CreateMySortedVectorOfTables(FlatBufferBuilder builder, Offset <ShortEntry>[] offsets)
 {
     Array.Sort(offsets, (Offset <ShortEntry> o1, Offset <ShortEntry> o2) => builder.DataBufferp.bb.GetShort(Table.__offset(4, o1.Value, builder.DataBuffer)).CompareTo(builder.DataBufferp.bb.GetShort(Table.__offset(4, o2.Value, builder.DataBuffer))));
     return(builder.CreateVectorOfTables(offsets));
 }