public override void ExecuteReplication(Connection connection) { var componentDataArray = ReplicationComponentGroup.GetComponentDataArray <SpatialOSBlittableComponent>(); var spatialEntityIdData = ReplicationComponentGroup.GetComponentDataArray <SpatialEntityId>(); for (var i = 0; i < componentDataArray.Length; i++) { var componentData = componentDataArray[i]; var entityId = spatialEntityIdData[i].EntityId; var hasPendingEvents = false; var firstEventEvents = EntityIdToFirstEventEvents[entityId]; hasPendingEvents |= firstEventEvents.Count() > 0; var secondEventEvents = EntityIdToSecondEventEvents[entityId]; hasPendingEvents |= secondEventEvents.Count() > 0; if (componentData.DirtyBit || hasPendingEvents) { var update = new global::Improbable.Gdk.Tests.BlittableTypes.BlittableComponent.Update(); update.SetBoolField(componentData.BoolField); update.SetIntField(componentData.IntField); update.SetLongField(componentData.LongField); update.SetFloatField(componentData.FloatField); update.SetDoubleField(componentData.DoubleField); foreach (var nativeEvent in firstEventEvents) { var spatialEvent = global::Generated.Improbable.Gdk.Tests.BlittableTypes.FirstEventPayload.ToSpatial(nativeEvent); update.firstEvent.Add(spatialEvent); } foreach (var nativeEvent in secondEventEvents) { var spatialEvent = global::Generated.Improbable.Gdk.Tests.BlittableTypes.SecondEventPayload.ToSpatial(nativeEvent); update.secondEvent.Add(spatialEvent); } SendComponentUpdate(connection, entityId, update); componentData.DirtyBit = false; componentDataArray[i] = componentData; firstEventEvents.Clear(); secondEventEvents.Clear(); } } }
public static void SendComponentUpdate(Connection connection, long entityId, global::Improbable.Gdk.Tests.BlittableTypes.BlittableComponent.Update update) { connection.SendComponentUpdate(new global::Improbable.EntityId(entityId), update); }