public static void SerializeUpdate(Improbable.EntityAcl.Update update, global::Improbable.Worker.CInterop.SchemaComponentUpdate updateObj) { var obj = updateObj.GetFields(); { if (update.ReadAcl.HasValue) { var field = update.ReadAcl.Value; global::Improbable.WorkerRequirementSet.Serialization.Serialize(field, obj.AddObject(1)); } } { if (update.ComponentWriteAcl.HasValue) { var field = update.ComponentWriteAcl.Value; foreach (var keyValuePair in field) { var mapObj = obj.AddObject(2); mapObj.AddUint32(1, keyValuePair.Key); global::Improbable.WorkerRequirementSet.Serialization.Serialize(keyValuePair.Value, mapObj.AddObject(2)); } if (field.Count == 0) { updateObj.AddClearedField(2); } } } }
public void SendUpdate(EntityAcl.Update update) { var component = EntityManager.GetComponentData <EntityAcl.Component>(Entity); if (update.ReadAcl.HasValue) { component.ReadAcl = update.ReadAcl.Value; } if (update.ComponentWriteAcl.HasValue) { component.ComponentWriteAcl = update.ComponentWriteAcl.Value; } EntityManager.SetComponentData(Entity, component); }
public static Improbable.EntityAcl.Update DeserializeUpdate(global::Improbable.Worker.CInterop.SchemaComponentData data) { var update = new Improbable.EntityAcl.Update(); var obj = data.GetFields(); { var value = global::Improbable.WorkerRequirementSet.Serialization.Deserialize(obj.GetObject(1)); update.ReadAcl = new global::Improbable.Gdk.Core.Option <global::Improbable.WorkerRequirementSet>(value); } { var mapSize = obj.GetObjectCount(2); update.ComponentWriteAcl = new global::Improbable.Gdk.Core.Option <global::System.Collections.Generic.Dictionary <uint, global::Improbable.WorkerRequirementSet> >(new global::System.Collections.Generic.Dictionary <uint, global::Improbable.WorkerRequirementSet>()); for (var i = 0; i < mapSize; i++) { var mapObj = obj.IndexObject(2, (uint)i); var key = mapObj.GetUint32(1); var value = global::Improbable.WorkerRequirementSet.Serialization.Deserialize(mapObj.GetObject(2)); update.ComponentWriteAcl.Value.Add(key, value); } } return(update); }
public static Improbable.EntityAcl.Update DeserializeUpdate(global::Improbable.Worker.CInterop.SchemaComponentUpdate updateObj) { var update = new Improbable.EntityAcl.Update(); var obj = updateObj.GetFields(); var clearedFields = updateObj.GetClearedFields(); { if (obj.GetObjectCount(1) == 1) { var value = global::Improbable.WorkerRequirementSet.Serialization.Deserialize(obj.GetObject(1)); update.ReadAcl = new global::Improbable.Gdk.Core.Option <global::Improbable.WorkerRequirementSet>(value); } } { var mapSize = obj.GetObjectCount(2); bool isCleared = false; foreach (var fieldIndex in clearedFields) { isCleared = fieldIndex == 2; if (isCleared) { break; } } if (mapSize > 0 || isCleared) { update.ComponentWriteAcl = new global::Improbable.Gdk.Core.Option <global::System.Collections.Generic.Dictionary <uint, global::Improbable.WorkerRequirementSet> >(new global::System.Collections.Generic.Dictionary <uint, global::Improbable.WorkerRequirementSet>()); } for (var i = 0; i < mapSize; i++) { var mapObj = obj.IndexObject(2, (uint)i); var key = mapObj.GetUint32(1); var value = global::Improbable.WorkerRequirementSet.Serialization.Deserialize(mapObj.GetObject(2)); update.ComponentWriteAcl.Value.Add(key, value); } } return(update); }