Пример #1
0
 public static void SerializeComponent(global::Improbable.TestSchema.ExhaustiveEntity.Component component, global::Improbable.Worker.CInterop.SchemaObject obj, global::Unity.Entities.World world)
 {
     {
         obj.AddEntity(1, component.Field1);
     }
     {
         if (component.Field2.HasValue)
         {
             obj.AddEntity(2, component.Field2.Value);
         }
     }
     {
         foreach (var value in component.Field3)
         {
             obj.AddEntity(3, value);
         }
     }
     {
         foreach (var keyValuePair in component.Field4)
         {
             var mapObj = obj.AddObject(4);
             mapObj.AddEntity(1, keyValuePair.Key);
             mapObj.AddString(2, keyValuePair.Value);
         }
     }
     {
         foreach (var keyValuePair in component.Field5)
         {
             var mapObj = obj.AddObject(5);
             mapObj.AddString(1, keyValuePair.Key);
             mapObj.AddEntity(2, keyValuePair.Value);
         }
     }
 }
Пример #2
0
            public static global::Improbable.TestSchema.ExhaustiveEntity.Component Deserialize(global::Improbable.Worker.CInterop.SchemaObject obj, global::Unity.Entities.World world)
            {
                var component = new global::Improbable.TestSchema.ExhaustiveEntity.Component();

                component.field1Handle = global::Improbable.TestSchema.ExhaustiveEntity.ReferenceTypeProviders.Field1Provider.Allocate(world);
                {
                    component.Field1 = obj.GetEntity(1);
                }
                component.field2Handle = global::Improbable.TestSchema.ExhaustiveEntity.ReferenceTypeProviders.Field2Provider.Allocate(world);
                {
                    if (obj.GetEntityCount(2) == 1)
                    {
                        component.Field2 = new global::Improbable.Gdk.Core.EntitySnapshot?(obj.GetEntity(2));
                    }
                }
                component.field3Handle = global::Improbable.TestSchema.ExhaustiveEntity.ReferenceTypeProviders.Field3Provider.Allocate(world);
                {
                    component.Field3 = new global::System.Collections.Generic.List <global::Improbable.Gdk.Core.EntitySnapshot>();
                    var list       = component.Field3;
                    var listLength = obj.GetEntityCount(3);
                    for (var i = 0; i < listLength; i++)
                    {
                        list.Add(obj.IndexEntity(3, (uint)i));
                    }
                }
                component.field4Handle = global::Improbable.TestSchema.ExhaustiveEntity.ReferenceTypeProviders.Field4Provider.Allocate(world);
                {
                    component.Field4 = new global::System.Collections.Generic.Dictionary <global::Improbable.Gdk.Core.EntitySnapshot, string>();
                    var map     = component.Field4;
                    var mapSize = obj.GetObjectCount(4);
                    for (var i = 0; i < mapSize; i++)
                    {
                        var mapObj = obj.IndexObject(4, (uint)i);
                        var key    = mapObj.GetEntity(1);
                        var value  = mapObj.GetString(2);
                        map.Add(key, value);
                    }
                }
                component.field5Handle = global::Improbable.TestSchema.ExhaustiveEntity.ReferenceTypeProviders.Field5Provider.Allocate(world);
                {
                    component.Field5 = new global::System.Collections.Generic.Dictionary <string, global::Improbable.Gdk.Core.EntitySnapshot>();
                    var map     = component.Field5;
                    var mapSize = obj.GetObjectCount(5);
                    for (var i = 0; i < mapSize; i++)
                    {
                        var mapObj = obj.IndexObject(5, (uint)i);
                        var key    = mapObj.GetString(1);
                        var value  = mapObj.GetEntity(2);
                        map.Add(key, value);
                    }
                }
                return(component);
            }
Пример #3
0
            public static void ApplyUpdate(global::Improbable.Worker.CInterop.SchemaComponentUpdate updateObj, ref global::Improbable.TestSchema.ExhaustiveEntity.Component component)
            {
                var obj = updateObj.GetFields();

                var clearedFields = updateObj.GetClearedFields();

                {
                    if (obj.GetEntityCount(1) == 1)
                    {
                        var value = obj.GetEntity(1);
                        component.Field1 = value;
                    }
                }
                {
                    bool isCleared = false;
                    foreach (var fieldIndex in clearedFields)
                    {
                        isCleared = fieldIndex == 2;
                        if (isCleared)
                        {
                            break;
                        }
                    }
                    if (isCleared)
                    {
                        component.Field2 = new global::Improbable.Gdk.Core.EntitySnapshot?();
                    }
                    else if (obj.GetEntityCount(2) == 1)
                    {
                        var value = obj.GetEntity(2);
                        component.Field2 = new global::Improbable.Gdk.Core.EntitySnapshot?(value);
                    }
                }
                {
                    var  listSize  = obj.GetEntityCount(3);
                    bool isCleared = false;
                    foreach (var fieldIndex in clearedFields)
                    {
                        isCleared = fieldIndex == 3;
                        if (isCleared)
                        {
                            break;
                        }
                    }
                    if (listSize > 0 || isCleared)
                    {
                        component.Field3.Clear();
                    }
                    for (var i = 0; i < listSize; i++)
                    {
                        var value = obj.IndexEntity(3, (uint)i);
                        component.Field3.Add(value);
                    }
                }
                {
                    var  mapSize   = obj.GetObjectCount(4);
                    bool isCleared = false;
                    foreach (var fieldIndex in clearedFields)
                    {
                        isCleared = fieldIndex == 4;
                        if (isCleared)
                        {
                            break;
                        }
                    }
                    if (mapSize > 0 || isCleared)
                    {
                        component.Field4.Clear();
                    }
                    for (var i = 0; i < mapSize; i++)
                    {
                        var mapObj = obj.IndexObject(4, (uint)i);
                        var key    = mapObj.GetEntity(1);
                        var value  = mapObj.GetString(2);
                        component.Field4.Add(key, value);
                    }
                }
                {
                    var  mapSize   = obj.GetObjectCount(5);
                    bool isCleared = false;
                    foreach (var fieldIndex in clearedFields)
                    {
                        isCleared = fieldIndex == 5;
                        if (isCleared)
                        {
                            break;
                        }
                    }
                    if (mapSize > 0 || isCleared)
                    {
                        component.Field5.Clear();
                    }
                    for (var i = 0; i < mapSize; i++)
                    {
                        var mapObj = obj.IndexObject(5, (uint)i);
                        var key    = mapObj.GetString(1);
                        var value  = mapObj.GetEntity(2);
                        component.Field5.Add(key, value);
                    }
                }
            }
Пример #4
0
            public static void SerializeUpdate(global::Improbable.TestSchema.ExhaustiveEntity.Component component, global::Improbable.Worker.CInterop.SchemaComponentUpdate updateObj)
            {
                var obj = updateObj.GetFields();
                {
                    if (component.IsDataDirty(0))
                    {
                        obj.AddEntity(1, component.Field1);
                    }
                }
                {
                    if (component.IsDataDirty(1))
                    {
                        if (component.Field2.HasValue)
                        {
                            obj.AddEntity(2, component.Field2.Value);
                        }
                    }

                    if (!component.Field2.HasValue)
                    {
                        updateObj.AddClearedField(2);
                    }
                }
                {
                    if (component.IsDataDirty(2))
                    {
                        foreach (var value in component.Field3)
                        {
                            obj.AddEntity(3, value);
                        }
                    }

                    if (component.Field3.Count == 0)
                    {
                        updateObj.AddClearedField(3);
                    }
                }
                {
                    if (component.IsDataDirty(3))
                    {
                        foreach (var keyValuePair in component.Field4)
                        {
                            var mapObj = obj.AddObject(4);
                            mapObj.AddEntity(1, keyValuePair.Key);
                            mapObj.AddString(2, keyValuePair.Value);
                        }
                    }

                    if (component.Field4.Count == 0)
                    {
                        updateObj.AddClearedField(4);
                    }
                }
                {
                    if (component.IsDataDirty(4))
                    {
                        foreach (var keyValuePair in component.Field5)
                        {
                            var mapObj = obj.AddObject(5);
                            mapObj.AddString(1, keyValuePair.Key);
                            mapObj.AddEntity(2, keyValuePair.Value);
                        }
                    }

                    if (component.Field5.Count == 0)
                    {
                        updateObj.AddClearedField(5);
                    }
                }
            }