public void LocationStruct() { var builder = new FlatBuffers.FlatBufferBuilder(1024); var fakeString = builder.CreateString("foobar"); Oracle.LocationHolder.StartLocationVectorVector(builder, 3); Oracle.Location.CreateLocation(builder, 7f, 8f, 9f); Oracle.Location.CreateLocation(builder, 4f, 5f, 6f); Oracle.Location.CreateLocation(builder, 1f, 2f, 3f); var vectorOffset = builder.EndVector(); Oracle.LocationHolder.StartLocationHolder(builder); Oracle.LocationHolder.AddFake(builder, fakeString); Oracle.LocationHolder.AddSingleLocation(builder, Oracle.Location.CreateLocation(builder, 0.1f, 0.2f, 0.3f)); Oracle.LocationHolder.AddLocationVector(builder, vectorOffset); var testData = Oracle.LocationHolder.EndLocationHolder(builder); builder.Finish(testData.Value); byte[] realBuffer = builder.SizedByteArray(); var parsed = FlatBufferSerializer.Default.Parse <LocationHolder>(realBuffer); Assert.Equal("foobar", parsed.Fake); Assert.Equal(0.1f, parsed.Location.X); Assert.Equal(0.2f, parsed.Location.Y); Assert.Equal(0.3f, parsed.Location.Z); Assert.Equal(3, parsed.LocationVector.Count); for (int i = 0; i < 3; ++i) { Assert.Equal((float)(3 * i + 1), parsed.LocationVector[i].X); Assert.Equal((float)(3 * i + 2), parsed.LocationVector[i].Y); Assert.Equal((float)(3 * i + 3), parsed.LocationVector[i].Z); } }
public void FiveByteStructVector() { var builder = new FlatBuffers.FlatBufferBuilder(1024); Oracle.FiveByteStructTable.StartVectorVector(builder, 3); Oracle.FiveByteStruct.CreateFiveByteStruct(builder, 3, 3); Oracle.FiveByteStruct.CreateFiveByteStruct(builder, 2, 2); Oracle.FiveByteStruct.CreateFiveByteStruct(builder, 1, 1); var vectorOffset = builder.EndVector(); Oracle.FiveByteStructTable.StartFiveByteStructTable(builder); Oracle.FiveByteStructTable.AddVector(builder, vectorOffset); var testData = Oracle.FiveByteStructTable.EndFiveByteStructTable(builder); builder.Finish(testData.Value); byte[] realBuffer = builder.SizedByteArray(); var parsed = FlatBufferSerializer.Default.Parse <FiveByteStructTable>(realBuffer); Assert.Equal(3, parsed.Vector.Length); Assert.Equal(1, parsed.Vector[0].Int); Assert.Equal(2, parsed.Vector[1].Int); Assert.Equal(3, parsed.Vector[2].Int); Assert.Equal((byte)1, parsed.Vector[0].Byte); Assert.Equal((byte)2, parsed.Vector[1].Byte); Assert.Equal((byte)3, parsed.Vector[2].Byte); }
public void Union_Struct_Location() { var builder = new FlatBuffers.FlatBufferBuilder(1024); var locationOffset = Oracle.Location.CreateLocation( builder, 1.0f, 2.0f, 3.0f); var offset = Oracle.UnionTable.CreateUnionTable( builder, Oracle.Union.Location, locationOffset.Value); builder.Finish(offset.Value); byte[] realBuffer = builder.DataBuffer.ToSizedArray(); var unionTable = FlatBufferSerializer.Default.Parse <UnionTable>(realBuffer); Assert.Equal(2, unionTable.Union.Value.Discriminator); Location parsed = unionTable.Union.Value.Item2; Assert.NotNull(parsed); Assert.Equal(1.0f, parsed.X); Assert.Equal(2.0f, parsed.Y); Assert.Equal(3.0f, parsed.Z); }
private void SetupFbs() { var builder = new FlatBuffers.FlatBufferBuilder(1024); var elementOffsets = new Offset <flatbuffers.SampleModel1Element> [1000]; foreach (var i in Enumerable.Range(0, 1000)) { elementOffsets[i] = flatbuffers.SampleModel1Element.CreateSampleModel1Element( builder, builder.CreateString(i.ToString()), i, (float)i, (double)i ); } var elements = flatbuffers.SampleModel1Array.CreateElementsVector(builder, elementOffsets); flatbuffers.SampleModel1Array.StartSampleModel1Array(builder); { flatbuffers.SampleModel1Array.AddElements( builder, elements ); } var orc = flatbuffers.SampleModel1Array.EndSampleModel1Array(builder); builder.Finish(orc.Value); this.ArrayModelFbsSerialized = builder.SizedByteArray(); }
static FlatBuffersObject.Person SerializeSingleFlatBuffers() { Console.WriteLine("FlatBuffers"); FlatBuffersObject.Person copy = default(FlatBuffersObject.Person); byte[] bytes = null; using (new Measure("Serialize")) { for (int i = 0; i < Iteration; i++) { var builder = new FlatBuffers.FlatBufferBuilder(1); var person = FlatBuffersObject.Person.CreatePerson(builder, 99999, builder.CreateString("Windows"), builder.CreateString("Server"), FlatBuffersObject.Sex.Male); builder.Finish(person.Value); bytes = builder.SizedByteArray(); } } using (new Measure("Deserialize")) { for (int i = 0; i < Iteration; i++) { copy = FlatBuffersObject.Person.GetRootAsPerson(new FlatBuffers.ByteBuffer(bytes)); } } if (!dryRun) { Console.WriteLine(string.Format("{0,15} {1}", "Binary Size", ToHumanReadableSize(bytes.Length))); } return(copy); }
public void SortedVectors(FlatBufferDeserializationOption option) { var builder = new FlatBuffers.FlatBufferBuilder(1024 * 1024); var strings = new List <string>(); var stringOffsets = new List <FlatBuffers.Offset <Oracle.SortedVectorStringTable> >(); List <int> ints = new List <int>(); var intOffsets = new List <FlatBuffers.Offset <Oracle.SortedVectorInt32Table> >(); List <double> doubles = new List <double>(); var doubleOffsets = new List <FlatBuffers.Offset <Oracle.SortedVectorDoubleTable> >(); const int Iterations = 1000; Random random = new Random(); for (int i = 0; i < Iterations; ++i) { string value = Guid.NewGuid().ToString(); strings.Add(value); stringOffsets.Add(Oracle.SortedVectorStringTable.CreateSortedVectorStringTable(builder, builder.CreateString(value))); } for (int i = 0; i < Iterations; ++i) { int value = random.Next(); ints.Add(value); intOffsets.Add(Oracle.SortedVectorInt32Table.CreateSortedVectorInt32Table(builder, value)); } for (int i = 0; i < Iterations; ++i) { double value = random.NextDouble() * random.Next(); doubles.Add(value); doubleOffsets.Add(Oracle.SortedVectorDoubleTable.CreateSortedVectorDoubleTable(builder, value)); } var table = Oracle.SortedVectorTest.CreateSortedVectorTest( builder, Oracle.SortedVectorInt32Table.CreateSortedVectorOfSortedVectorInt32Table(builder, intOffsets.ToArray()), Oracle.SortedVectorStringTable.CreateSortedVectorOfSortedVectorStringTable(builder, stringOffsets.ToArray()), Oracle.SortedVectorDoubleTable.CreateSortedVectorOfSortedVectorDoubleTable(builder, doubleOffsets.ToArray())); builder.Finish(table.Value); byte[] serialized = builder.SizedByteArray(); var serializer = new FlatBufferSerializer(option); var parsed = serializer.Parse <SortedVectorTest <SortedVectorItem <int> > >(serialized); VerifySorted(parsed.StringVector, new Utf8StringComparer(), strings, new List <string> { Guid.NewGuid().ToString(), "banana" }); VerifySorted(parsed.IntVector, Comparer <int> .Default, ints, new List <int> { -1, -3, 0 }); VerifySorted(parsed.Double, Comparer <double> .Default, doubles, new List <double> { Math.PI, Math.E, Math.Sqrt(2) }); }
static FlatBuffersObject.PersonVector SerializeArrayFlatBuffers() { Console.WriteLine("FlatBuffers"); FlatBuffersObject.PersonVector copy = default(FlatBuffersObject.PersonVector); byte[] bytes = null; Func <FlatBuffers.FlatBufferBuilder, FlatBuffers.Offset <FlatBuffersObject.Person>[]> makeVector = b => { var array = new FlatBuffers.Offset <FlatBuffersObject.Person> [1000]; var count = 0; for (int j = 1000; j < 2000; j++) { var person = FlatBuffersObject.Person.CreatePerson(b, j, b.CreateString("Windows"), b.CreateString("Server"), FlatBuffersObject.Sex.Female); array[count++] = person; } return(array); }; using (new Measure("Serialize")) { for (int i = 0; i < Iteration; i++) { var builder = new FlatBuffers.FlatBufferBuilder(1); var personVector = FlatBuffersObject.PersonVector.CreatePersonVector(builder, FlatBuffersObject.PersonVector.CreateListVector(builder, makeVector(builder))); builder.Finish(personVector.Value); bytes = builder.SizedByteArray(); } } using (new Measure("Deserialize")) { for (int i = 0; i < Iteration; i++) { copy = FlatBuffersObject.PersonVector.GetRootAsPersonVector(new FlatBuffers.ByteBuffer(bytes)); } } using (new Measure("ReSerialize")) { for (int i = 0; i < Iteration; i++) { var bb = copy.ByteBuffer; var newbytes = new byte[bb.Length]; Buffer.BlockCopy(bb.Data, 0, newbytes, 0, bb.Length); } } if (!dryRun) { Console.WriteLine(string.Format("{0,15} {1}", "Binary Size", ToHumanReadableSize(bytes.Length))); } return(copy); }
public byte[] Serialize() { var fbb = new FlatBufferBuilder(1024); var msg = MetadataMsg.CreateMetadata(fbb, ColorFrameWidth, ColorFrameHeight, DepthFrameWidth, DepthFrameHeight); fbb.Finish(msg.Value); return fbb.ToProtocolMessage(MessageIds.Metadata); }
void relay_start_callback(object req, ApiClient api_client) { if (null != req) { RelayStart relay_start = (RelayStart)req; relay_info = relay_start.response; string[] address = relay_info.server_address.Split(':'); if (client != null) { if (true == client.IsConnected()) { log("already connected server. server[" + address[0] + ":" + address[1] + "]"); return; } } else { client = new wise.net.Client(); } if (false == client.Connect(address[0], int.Parse(address[1]))) { log("cannot connect server. server[" + address[0] + ":" + address[1] + "]"); return; } log("connect server. server[" + address[0] + ":" + address[1] + "]"); foreach (var member in relay_info.members) { if (member.id == user_index.ToString()) { FlatBuffers.FlatBufferBuilder builder = new FlatBuffers.FlatBufferBuilder(1); var offset = PACKET.ENTER.CreateENTER(builder, builder.CreateString(login_info.UserID), builder.CreateString(member.hash), user_index); builder.Finish(offset.Value); if (false == client.Send((int)PACKET_C2S.ENTER, builder.SizedByteArray(), uint.Parse(relay_info.roomnum.ToString()))) { log("can't enter."); } return; } } log("not find my information from relay/start."); } else { log("failed relay_start."); } }
public byte[] Serialize() { var fbb = new FlatBufferBuilder(1024); var bodies = Array.ConvertAll(Bodies, body => body.Serialize(fbb)); var msg = BodyFrameDataMsg.CreateBodyFrameData(fbb, RelativeTime.Ticks, BodyFrameDataMsg.CreateBodiesVector(fbb, bodies)); fbb.Finish(msg.Value); return fbb.ToProtocolMessage(MessageIds.BodyFrameData); }
public void Union_NotSet() { var builder = new FlatBuffers.FlatBufferBuilder(1024); var offset = Oracle.UnionTable.CreateUnionTable(builder); builder.Finish(offset.Value); byte[] realBuffer = builder.DataBuffer.ToSizedArray(); var unionTable = FlatBufferSerializer.Default.Parse <UnionTable>(realBuffer); Assert.Null(unionTable.Union); }
public void Union_Table_BasicTypes() { var builder = new FlatBuffers.FlatBufferBuilder(1024); var basicTypesOffset = Oracle.BasicTypes.CreateBasicTypes( builder, Bool: true, Byte: GetRandom <byte>(), SByte: GetRandom <sbyte>(), UShort: GetRandom <ushort>(), Short: GetRandom <short>(), UInt: GetRandom <uint>(), Int: GetRandom <int>(), ULong: GetRandom <ulong>(), Long: GetRandom <long>(), Float: GetRandom <float>(), Double: GetRandom <double>(), StringOffset: builder.CreateString("foobar")); var offset = Oracle.UnionTable.CreateUnionTable( builder, Oracle.Union.BasicTypes, basicTypesOffset.Value); builder.Finish(offset.Value); byte[] realBuffer = builder.DataBuffer.ToSizedArray(); var oracle = Oracle.UnionTable.GetRootAsUnionTable(new FlatBuffers.ByteBuffer(realBuffer)).Value <Oracle.BasicTypes>().Value; var unionTable = FlatBufferSerializer.Default.Parse <UnionTable>(realBuffer); Assert.Equal(1, unionTable.Union.Value.Discriminator); BasicTypes parsed = unionTable.Union.Value.Item1; Assert.NotNull(parsed); Assert.True(parsed.Bool); Assert.Equal(oracle.Byte, parsed.Byte); Assert.Equal(oracle.SByte, parsed.SByte); Assert.Equal(oracle.UShort, parsed.UShort); Assert.Equal(oracle.Short, parsed.Short); Assert.Equal(oracle.UInt, parsed.UInt); Assert.Equal(oracle.Int, parsed.Int); Assert.Equal(oracle.ULong, parsed.ULong); Assert.Equal(oracle.Long, parsed.Long); Assert.Equal(oracle.Float, parsed.Float); Assert.Equal(oracle.Double, parsed.Double); Assert.Equal("foobar", parsed.String); }
private void SendDisconnectMessage() { var builder = new FlatBuffers.FlatBufferBuilder(1024); NetworkedPhysics.Message.StartMessage(builder); NetworkedPhysics.Message.AddDataType(builder, NetworkedPhysics.MessageType.ClientDisconnectMessage); var message = NetworkedPhysics.Message.EndMessage(builder); builder.Finish(message.Value); byte[] bytes = builder.SizedByteArray(); _udpClient.Send(bytes, bytes.Length); Debug.Log("Sent Disconnect message " + bytes.Length); }
public void SimpleTypes() { var builder = new FlatBuffers.FlatBufferBuilder(1024); var fbOffset = Oracle.BasicTypes.CreateBasicTypes( builder, Bool: true, Byte: GetRandom <byte>(), SByte: GetRandom <sbyte>(), UShort: GetRandom <ushort>(), Short: GetRandom <short>(), UInt: GetRandom <uint>(), Int: GetRandom <int>(), ULong: GetRandom <ulong>(), Long: GetRandom <long>(), Float: GetRandom <float>(), Double: GetRandom <double>(), StringOffset: builder.CreateString("foobar")); builder.Finish(fbOffset.Value); byte[] realBuffer = builder.DataBuffer.ToSizedArray(); var oracle = Oracle.BasicTypes.GetRootAsBasicTypes(new FlatBuffers.ByteBuffer(realBuffer)); var simple = FlatBufferSerializer.Default.Parse <BasicTypes>(realBuffer); foreach (var parsed in new[] { simple }) { Assert.True(parsed.Bool); Assert.Equal(oracle.Byte, parsed.Byte); Assert.Equal(oracle.SByte, parsed.SByte); Assert.Equal(oracle.UShort, parsed.UShort); Assert.Equal(oracle.Short, parsed.Short); Assert.Equal(oracle.UInt, parsed.UInt); Assert.Equal(oracle.Int, parsed.Int); Assert.Equal(oracle.ULong, parsed.ULong); Assert.Equal(oracle.Long, parsed.Long); Assert.Equal(oracle.Float, parsed.Float); Assert.Equal(oracle.Double, parsed.Double); Assert.Equal("foobar", parsed.String); } // Ensures the caching works correctly. //Assert.ReferenceEquals(cached.String, cached.String); Assert.True(object.ReferenceEquals(simple.String, simple.String)); }
public void VectorOfUnion() { Oracle.VectorOfUnionTableT table = new Oracle.VectorOfUnionTableT { Value = new List <Oracle.UnionUnion> { new Oracle.UnionUnion { Value = new Oracle.BasicTypesT { Int = 7 }, Type = Oracle.Union.BasicTypes }, new Oracle.UnionUnion { Value = new Oracle.LocationT { X = 1, Y = 2, Z = 3 }, Type = Oracle.Union.Location }, new Oracle.UnionUnion { Value = "foobar", Type = Oracle.Union.stringValue }, } }; var builder = new FlatBuffers.FlatBufferBuilder(1024); var offset = Oracle.VectorOfUnionTable.Pack(builder, table); builder.Finish(offset.Value); byte[] data = builder.SizedByteArray(); var parsed = FlatBufferSerializer.Default.Parse <ArrayVectorOfUnionTable>(data); Assert.Equal(3, parsed.Union.Length); Assert.Equal(1, parsed.Union[0].Discriminator); Assert.Equal(2, parsed.Union[1].Discriminator); Assert.Equal(3, parsed.Union[2].Discriminator); Assert.True(parsed.Union[0].TryGet(out BasicTypes basicTypes)); Assert.Equal(7, basicTypes.Int); Assert.True(parsed.Union[1].TryGet(out Location location)); Assert.Equal(1, location.X); Assert.Equal(2, location.Y); Assert.Equal(3, location.Z); Assert.True(parsed.Union[2].TryGet(out string str)); Assert.Equal("foobar", str); }
void send_broadcast() { if (time != 0.0f) { log("elapsed time : " + time + " count : " + count); } FlatBuffers.FlatBufferBuilder builder = new FlatBuffers.FlatBufferBuilder(1); var offset = PACKET.BROADCAST.CreateBROADCAST(builder, builder.CreateString(login_info.UserID), user_index, builder.CreateString(count.ToString())); builder.Finish(offset.Value); client.Send((int)PACKET_C2S.BROADCAST, builder.SizedByteArray(), uint.Parse(relay_info.roomnum.ToString())); count++; time = Time.deltaTime; }
public void Union_String() { var builder = new FlatBuffers.FlatBufferBuilder(1024); var stringOffset = builder.CreateString("foobar"); var offset = Oracle.UnionTable.CreateUnionTable( builder, Oracle.Union.stringValue, stringOffset.Value); builder.Finish(offset.Value); byte[] realBuffer = builder.DataBuffer.ToSizedArray(); var unionTable = FlatBufferSerializer.Default.Parse <UnionTable>(realBuffer); Assert.Equal(3, unionTable.Union.Value.Discriminator); string parsed = unionTable.Union.Value.Item3; Assert.Equal("foobar", parsed); }
private void SendMessageAck(int messageId) { var builder = new FlatBuffers.FlatBufferBuilder(1024); MessageAck.StartMessageAck(builder); MessageAck.AddMessageId(builder, messageId); var ack = MessageAck.EndMessageAck(builder); Message.StartMessage(builder); Message.AddDataType(builder, MessageType.MessageAck); Message.AddData(builder, ack.Value); var message = NetworkedPhysics.Message.EndMessage(builder); builder.Finish(message.Value); byte[] bytes = builder.SizedByteArray(); _udpClient.Send(bytes, bytes.Length); //Debug.Log("Sent MessageAck message " + messageId + " " + bytes.Length); }
private void SendInputMessage(InputType type) { var builder = new FlatBuffers.FlatBufferBuilder(1024); ClientInputMessage.StartClientInputMessage(builder); ClientInputMessage.AddType(builder, type); var input = ClientInputMessage.EndClientInputMessage(builder); Message.StartMessage(builder); Message.AddDataType(builder, MessageType.ClientInputMessage); Message.AddData(builder, input.Value); var message = Message.EndMessage(builder); builder.Finish(message.Value); byte[] bytes = builder.SizedByteArray(); _udpClient.Send(bytes, bytes.Length); //Debug.Log("Sent Input message " + bytes.Length); }
public void ScalarVectors() { var builder = new FlatBuffers.FlatBufferBuilder(1024); var testData = Oracle.Vectors.CreateVectors( builder, Oracle.Vectors.CreateIntVectorVector(builder, new[] { 1, 2, 3, 4, 5, 6, }), Oracle.Vectors.CreateLongVectorVector(builder, new[] { 7L, 8, 9, 10, 11, 12, }), Oracle.Vectors.CreateByteVector1Vector(builder, new byte[] { 1, 2, 3, 4, 5 }), Oracle.Vectors.CreateByteVector2Vector(builder, new byte[] { 1, 2, 3, 4, 5 })); builder.Finish(testData.Value); byte[] realBuffer = builder.SizedByteArray(); var parsed = FlatBufferSerializer.Default.Parse <ScalarVectorsTable>(realBuffer); IList <int> intItems = parsed.IntVector; Assert.Equal(6, intItems.Count); for (int i = 0; i < 6; ++i) { Assert.Equal(1 + i, intItems[i]); } IList <long> longItems = parsed.LongVector; Assert.Equal(6, longItems.Count); for (int i = 0; i < 6; ++i) { Assert.Equal(7 + i, longItems[i]); } Memory <byte> mem = parsed.ByteVector2.Value; Assert.Equal(5, mem.Length); for (int i = 1; i <= 5; ++i) { Assert.Equal(i, mem.Span[i - 1]); } Assert.True(parsed.ByteVector3.IsEmpty); }
public void NestedStruct() { var builder = new FlatBuffers.FlatBufferBuilder(1024); var outerOffset = Oracle.OuterStruct.CreateOuterStruct(builder, 401, 100); Oracle.NestedStructs.StartNestedStructs(builder); Oracle.NestedStructs.AddOuter(builder, outerOffset); var offset = Oracle.NestedStructs.EndNestedStructs(builder); builder.Finish(offset.Value); byte[] realBuffer = builder.DataBuffer.ToSizedArray(); var parsed = FlatBufferSerializer.Default.Parse <NestedStructs>(realBuffer); Assert.NotNull(parsed?.OuterStruct?.InnerStruct); Assert.Equal(401, parsed.OuterStruct.InnerStruct.A); Assert.Equal(100, parsed.OuterStruct.A); }
public void LinkedList() { var builder = new FlatBuffers.FlatBufferBuilder(1024); var testData = Oracle.LinkedListNode.CreateLinkedListNode( builder, builder.CreateString("node 1"), Oracle.LinkedListNode.CreateLinkedListNode( builder, builder.CreateString("node 2"))); builder.Finish(testData.Value); byte[] realBuffer = builder.SizedByteArray(); var linkedList = FlatBufferSerializer.Default.Parse <TestLinkedListNode>(realBuffer); Assert.NotNull(linkedList); Assert.NotNull(linkedList.Next); Assert.Null(linkedList.Next.Next); Assert.Equal("node 1", linkedList.Value); Assert.Equal("node 2", linkedList.Next.Value); }
void MakeGameState(FlatBufferBuilder fbb) { var playerName = createPlayerName (fbb); var resources = TypeAmountVector (fbb, metaPool.playerResources.quantities); var workers = createWorkers (fbb); var units = TypeLevelVector (fbb, metaPool.unitLevels.values); var islands = createIslands (fbb); var buildings = createBuildings(fbb); var technologies = createTechnologies(fbb); var sectors = createSectors(fbb); var completedQuests = createCompletedQuests(fbb); var currentQuests = createCurrentQuests(fbb); var defences = createDefences(fbb); var ships = createShips(fbb); GameData.StartGameData (fbb); GameData.AddPlayerName (fbb, playerName); GameData.AddPlayerResources (fbb, resources); GameData.AddWorkers (fbb, workers); GameData.AddUnitLevels (fbb, units); GameData.AddIslands (fbb, islands); GameData.AddBuildings (fbb, buildings); GameData.AddTrophies(fbb, metaPool.GetTrophies()); GameData.AddTechnologies(fbb, technologies); GameData.AddSectors(fbb, sectors); GameData.AddShips (fbb, ships); GameData.AddCompletedQuests(fbb, completedQuests); GameData.AddCurrentQuests(fbb, currentQuests); GameData.AddDefences(fbb, defences); if(metaPool.hasIslandNextPirateAttack){ GameData.AddNextPirateAttack(fbb, metaPool.islandNextPirateAttack.time.GetMicrosecondsFromEpoch()); } if(metaPool.hasLeftOverResources){ GameData.AddLeftOverResources(fbb, TypeAmountVector (fbb, metaPool.leftOverResources.resources)); } if(corePool.isFortress){ GameData.AddFortressLevel(fbb, (sbyte)corePool.fortressEntity.level.value); } Offset<GameData> gameData = GameData.EndGameData (fbb); GameStateRoot.StartGameStateRoot (fbb); GameStateRoot.AddGameData1 (fbb, gameData); Offset<GameStateRoot> root = GameStateRoot.EndGameStateRoot (fbb); fbb.Finish (root.Value); }
public static void FinishSyncFrameBuffer(FlatBufferBuilder builder, Offset<SyncFrame> offset) { builder.Finish(offset.Value); }
public static void FinishrootDataBuffer(FlatBufferBuilder builder, Offset<rootData> offset) { builder.Finish(offset.Value); }
public static void FinishLoginResponseBuffer(FlatBufferBuilder builder, Offset<LoginResponse> offset) { builder.Finish(offset.Value); }
// Example how to use FlatBuffers to create and read binary buffers. static void Main() { var builder = new FlatBufferBuilder(1); // Create some weapons for our Monster ('Sword' and 'Axe'). var weapon1Name = builder.CreateString("Sword"); var weapon1Damage = 3; var weapon2Name = builder.CreateString("Axe"); var weapon2Damage = 5; // Use the `CreateWeapon()` helper function to create the weapons, since we set every field. var weaps = new Offset<Weapon>[2]; weaps[0] = Weapon.CreateWeapon(builder, weapon1Name, (short)weapon1Damage); weaps[1] = Weapon.CreateWeapon(builder, weapon2Name, (short)weapon2Damage); // Serialize the FlatBuffer data. var name = builder.CreateString("Orc"); var treasure = new byte[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; var inv = Monster.CreateInventoryVector(builder, treasure); var weapons = Monster.CreateWeaponsVector(builder, weaps); var pos = Vec3.CreateVec3(builder, 1.0f, 2.0f, 3.0f); Monster.StartMonster(builder); Monster.AddPos(builder, pos); Monster.AddHp(builder, (short)300); Monster.AddName(builder, name); Monster.AddInventory(builder, inv); Monster.AddColor(builder, Color.Red); Monster.AddWeapons(builder, weapons); Monster.AddEquippedType(builder, Equipment.Weapon); Monster.AddEquipped(builder, weaps[1].Value); var orc = Monster.EndMonster(builder); builder.Finish(orc.Value); // You could also call `Monster.FinishMonsterBuffer(builder, orc);`. // We now have a FlatBuffer that we could store on disk or send over a network. // ...Code to store to disk or send over a network goes here... // Instead, we are going to access it right away, as if we just received it. var buf = builder.DataBuffer; // Get access to the root: var monster = Monster.GetRootAsMonster(buf); // For C#, unlike other languages, most values (except for vectors and unions) are available as // properties instead of accessor methods. // Note: We did not set the `Mana` field explicitly, so we get back the default value. Assert(monster.Mana == 150, "monster.Mana", Convert.ToString(monster.Mana), Convert.ToString(150)); Assert(monster.Hp == 300, "monster.Hp", Convert.ToString(monster.Hp), Convert.ToString(30)); Assert(monster.Name.Equals("Orc", StringComparison.Ordinal), "monster.Name", monster.Name, "Orc"); Assert(monster.Color == Color.Red, "monster.Color", Convert.ToString(monster.Color), Convert.ToString(Color.Red)); // C# also allows you to use performance-enhanced methods to fill an object that has already // been created. These functions are prefixed with "Get". For example: `monster.GetPos()`. var myAlreadyCreatedVector = new Vec3(); monster.GetPos(myAlreadyCreatedVector); // Instead of `var myNewVec3 = monster.Pos`. Assert(myAlreadyCreatedVector.X == 1.0f, "myAlreadyCreatedVector.X", Convert.ToString(myAlreadyCreatedVector.X), Convert.ToString(1.0f)); Assert(myAlreadyCreatedVector.Y == 2.0f, "myAlreadyCreatedVector.Y", Convert.ToString(myAlreadyCreatedVector.Y), Convert.ToString(2.0f)); Assert(myAlreadyCreatedVector.Z == 3.0f, "myAlreadyCreatedVector.Z", Convert.ToString(myAlreadyCreatedVector.Z), Convert.ToString(3.0f)); // Get and test the `Inventory` FlatBuffer `vector`. for (int i = 0; i < monster.InventoryLength; i++) { Assert(monster.GetInventory(i) == i, "monster.GetInventory", Convert.ToString(monster.GetInventory(i)), Convert.ToString(i)); } // Get and test the `Weapons` FlatBuffer `vector` of `table`s. var expectedWeaponNames = new string[] {"Sword", "Axe"}; var expectedWeaponDamages = new short[] {3, 5}; for (int i = 0; i < monster.WeaponsLength; i++) { Assert(monster.GetWeapons(i).Name.Equals(expectedWeaponNames[i], StringComparison.Ordinal), "monster.GetWeapons", monster.GetWeapons(i).Name, expectedWeaponNames[i]); Assert(monster.GetWeapons(i).Damage == expectedWeaponDamages[i], "monster.GetWeapons", Convert.ToString(monster.GetWeapons(i).Damage), Convert.ToString(expectedWeaponDamages[i])); } // Get and test the `Equipped` FlatBuffer `union`. Assert(monster.EquippedType == Equipment.Weapon, "monster.EquippedType", Convert.ToString(monster.EquippedType), Convert.ToString(Equipment.Weapon)); var equipped = (Weapon)monster.GetEquipped(new Weapon()); Assert(equipped.Name.Equals("Axe", StringComparison.Ordinal), "equipped.Name", equipped.Name, "Axe"); Assert(equipped.Damage == 5, "equipped.Damage", Convert.ToString(equipped.Damage), Convert.ToString(5)); Console.WriteLine("The FlatBuffer was successfully created and verified!"); }
public async Task<Response> CommitRequest(FlatBufferBuilder fbb, RequestData requestDataType, int requestDataOffset) { PendingRequest request = new PendingRequest(); request.requestId = nextRequestId++; request.responseTask = new TaskCompletionSource<Response>(); pendingRequests.TryAdd(request.requestId, request); int requestOffset = Request.CreateRequest(fbb, request.requestId, requestDataType, requestDataOffset); fbb.Finish(requestOffset); // Update the placeholder size. int bufferOffset = fbb.DataBuffer.Position; int bufferLength = fbb.DataBuffer.Length - fbb.DataBuffer.Position; fbb.DataBuffer.PutInt(bufferOffset - 4, bufferLength); // Send request. await socket.SendTaskAsync(fbb.DataBuffer.Data, bufferOffset - 4, bufferLength + 4, SocketFlags.None); // Await response. var response = await request.responseTask.Task; return response; }
public static void FinishImoveisBuffer(FlatBufferBuilder builder, Offset<Imoveis> offset) { builder.Finish(offset.Value, "IMV3"); }
public static void FinishInputRequestBuffer(FlatBufferBuilder builder, Offset<InputRequest> offset) { builder.Finish(offset.Value); }
public static void FinishMonsterBuffer(FlatBufferBuilder builder, int offset) { builder.Finish(offset, "MONS"); }
void Start() { oNetworkManager MainPlayer = NetworkObject.mainPlayer.GetComponent <oNetworkManager>(); NetDataReader.GetInstace().Reder[Class.Player] = (data) => { var m_player = Player.GetRootAsPlayer(data.ByteBuffer); if (m_player.ID != MainPlayer.id) { if (!OPlayers.ContainsKey(m_player.ID)) { var obj = Instantiate(PlayerPrifab, Vector3.zero, Quaternion.identity); obj.AddComponent <OtherPlayer>(); obj.AddComponent <oNetworkIdentity>().id = m_player.ID; obj.GetComponent <oNetworkIdentity>().type = oNetworkIdentity.ObjType.player; OPlayers[m_player.ID] = obj.GetComponent <OtherPlayer>(); SendToMe_PlayerStat.Send(m_player.ID); } OPlayers[m_player.ID].UpdateOtherObj(m_player); } else if (m_player.ID == MainPlayer.id) { var pos = m_player.Pos.Value; MainPlayer.transform.position.Set(pos.X, pos.Y, pos.Z); } }; NetDataReader.GetInstace().Reder[Class.FirstCharacterData] = (data) => { var FirstPlayerData = FirstCharacterData.GetRootAsFirstCharacterData(data.ByteBuffer); var fbb = new FlatBuffers.FlatBufferBuilder(1); fbb.Finish(PlayerStat.CreatePlayerStat( fbb, Class.PlayerStat, FirstPlayerData.HP, FirstPlayerData.HPLim, FirstPlayerData.MP, FirstPlayerData.MPLim, FirstPlayerData.EXP, FirstPlayerData.Attack, FirstPlayerData.LV, FirstPlayerData.ID ).Value); var buf = new FlatBuffers.ByteBuffer(fbb.SizedByteArray()); var _PlayerStat = PlayerStat.GetRootAsPlayerStat(buf); var pos = FirstPlayerData.Pos.Value; MainPlayer.GetComponent <oCreature>().Data_Update(_PlayerStat); MainPlayer.GetComponent <oCreature>().Data_Update(pos); MainPlayer.GetComponent <NetworkObject>().m_CurrentHP.NoEventSet(_PlayerStat.HP); MainPlayer.GetComponent <NetworkObject>().m_CurrentMP.NoEventSet(_PlayerStat.MP); MainPlayer.GetComponent <NetworkObject>().m_CurrentHPLim.NoEventSet(_PlayerStat.HPLim); MainPlayer.GetComponent <NetworkObject>().m_CurrentMPLim.NoEventSet(_PlayerStat.MPLim); MainPlayer.GetComponent <NetworkObject>().m_CurrentLV.NoEventSet(_PlayerStat.LV); MainPlayer.GetComponent <NetworkObject>().m_CurrentEXP.NoEventSet(_PlayerStat.EXP); MainPlayer.GetComponent <NetworkObject>().m_CurrentATK.NoEventSet(_PlayerStat.Attack); MainPlayer.GetComponent <NetworkObject>().CharacterName.NoEventSet(FirstPlayerData.Name); Vector3 v3 = new Vector3(); v3.Set(pos.X, pos.Y, pos.Z); }; NetDataReader.GetInstace().Reder[Class.fEquipSome] = (data) => { var equipSome = fEquipSome.GetRootAsfEquipSome(data.ByteBuffer); Debug.Log(MainPlayer.GetComponent <oNetworkIdentity>().id + ":" + equipSome.PID + ":" + equipSome.SlotNum + ":" + equipSome.ObjNum); if (MainPlayer.GetComponent <oNetworkIdentity>().id == equipSome.PID) { MainPlayer.GetComponent <EquipManager>().Equip(equipSome.ObjNum, equipSome.SlotNum); } else { OPlayers[equipSome.PID].GetComponent <EquipManager>().Equip(equipSome.ObjNum, -1); } }; NetDataReader.GetInstace().Reder[Class.PlayerStat] = (data) => { var _PlayerStat = PlayerStat.GetRootAsPlayerStat(data.ByteBuffer); var player = MainPlayer.GetComponent <NetworkObject>(); if (_PlayerStat.ID == MainPlayer.id) { MainPlayer.GetComponent <oCreature>().Data_Update(_PlayerStat); player.m_CurrentHP.NoEventSet(_PlayerStat.HP); player.m_CurrentMP.NoEventSet(_PlayerStat.MP); player.m_CurrentHPLim.NoEventSet(_PlayerStat.HPLim); player.m_CurrentMPLim.NoEventSet(_PlayerStat.MPLim); player.m_CurrentEXP.NoEventSet(_PlayerStat.EXP); player.m_CurrentATK.NoEventSet(_PlayerStat.Attack); if (_PlayerStat.LV > player.m_CurrentLV.Value) { IG_EffectManager.Show(player.gameObject.transform.position, "LVUP"); } player.m_CurrentLV.NoEventSet(_PlayerStat.LV); } else if (OPlayers.ContainsKey(_PlayerStat.ID)) { if (OPlayers[_PlayerStat.ID].GetComponent <oCreature>() == null) { OPlayers[_PlayerStat.ID].gameObject.AddComponent <oCreature>(); OPlayers[_PlayerStat.ID].gameObject.AddComponent <SendStateManager>(); OPlayers[_PlayerStat.ID].gameObject.GetComponent <OtherPlayer>().SetStatEvent(); OPlayers[_PlayerStat.ID].gameObject.name = _PlayerStat.NikName; } OPlayers[_PlayerStat.ID].gameObject.GetComponent <oCreature>().Data_Update(_PlayerStat); } }; }
public static void FinishInputCommandBuffer(FlatBufferBuilder builder, Offset<InputCommand> offset) { builder.Finish(offset.Value); }
public static void FinishSynchronizeSceneDataBuffer(FlatBufferBuilder builder, Offset<SynchronizeSceneData> offset) { builder.Finish(offset.Value); }
public static void FinishTestMessageBuffer(FlatBufferBuilder builder, int offset) { builder.Finish(offset, "TEST"); }
private void SerializeReferenceTypeFields(object obj, TypeModel typeModel) { var structDef = typeModel.StructDef; foreach (var field in structDef.Fields.Where(i => i.TypeModel.IsReferenceType)) { // get object field var val = field.ValueProvider.GetValue(obj); if (val == null) { continue; } if (field.TypeModel.IsTable) { SerializeReferenceTypeFields(val, field.TypeModel); } else if (field.TypeModel.IsUnion) { SerializeReferenceTypeFields(val, GetUnionFieldTypeModel(val, field.TypeModel)); } else if (field.TypeModel.IsVector) { var elementType = field.TypeModel.GetElementTypeModel(); if (elementType != null && elementType.IsReferenceType) { var collection = val as ICollection; if (collection != null) { SerializeReferenceTypeEnumerable(collection); } } } var fieldBufferOffset = 0; if (!field.HasNestedFlatBufferType) { if (!_objectOffsets.TryGetValue(val, out fieldBufferOffset)) { fieldBufferOffset = SerializeReferenceType(val, field.TypeModel); _objectOffsets.Add(val, fieldBufferOffset); } } else { if (!_nestedOffsets.TryGetValue(val, out fieldBufferOffset)) { var start = _builder.Offset; var objOffset = SerializeStruct(val, field.TypeModel); _builder.Finish(objOffset); var len = _builder.Offset - start; _builder.AddInt(len); fieldBufferOffset = _builder.Offset; _nestedOffsets.Add(val, fieldBufferOffset); } } } }