public override void OnAddComponent(AddComponentOp op) { if (!IsValidEntityId(op.EntityId, "AddComponentOp", out var entity)) { return; } var data = Generated.Improbable.Gdk.Tests.ComponentsWithNoFields.ComponentWithNoFieldsWithEvents.Serialization.Deserialize(op.Data.SchemaData.Value.GetFields(), World); data.DirtyBit = false; entityManager.AddComponentData(entity, data); entityManager.AddComponentData(entity, new NotAuthoritative <Generated.Improbable.Gdk.Tests.ComponentsWithNoFields.ComponentWithNoFieldsWithEvents.Component>()); var update = new Generated.Improbable.Gdk.Tests.ComponentsWithNoFields.ComponentWithNoFieldsWithEvents.Update { }; var updates = new List <Generated.Improbable.Gdk.Tests.ComponentsWithNoFields.ComponentWithNoFieldsWithEvents.Update> { update }; var updatesComponent = new Generated.Improbable.Gdk.Tests.ComponentsWithNoFields.ComponentWithNoFieldsWithEvents.ReceivedUpdates { handle = ReferenceTypeProviders.UpdatesProvider.Allocate(World) }; ReferenceTypeProviders.UpdatesProvider.Set(updatesComponent.handle, updates); entityManager.AddComponentData(entity, updatesComponent); if (entityManager.HasComponent <ComponentRemoved <Generated.Improbable.Gdk.Tests.ComponentsWithNoFields.ComponentWithNoFieldsWithEvents.Component> >(entity)) { entityManager.RemoveComponent <ComponentRemoved <Generated.Improbable.Gdk.Tests.ComponentsWithNoFields.ComponentWithNoFieldsWithEvents.Component> >(entity); } else if (!entityManager.HasComponent <ComponentAdded <Generated.Improbable.Gdk.Tests.ComponentsWithNoFields.ComponentWithNoFieldsWithEvents.Component> >(entity)) { entityManager.AddComponentData(entity, new ComponentAdded <Generated.Improbable.Gdk.Tests.ComponentsWithNoFields.ComponentWithNoFieldsWithEvents.Component>()); } else { LogDispatcher.HandleLog(LogType.Error, new LogEvent(ReceivedDuplicateComponentAdded) .WithField(LoggingUtils.LoggerName, LoggerName) .WithField(LoggingUtils.EntityId, op.EntityId.Id) .WithField("Component", "Generated.Improbable.Gdk.Tests.ComponentsWithNoFields.ComponentWithNoFieldsWithEvents") ); } }
public override void OnComponentUpdate(ComponentUpdateOp op) { if (!IsValidEntityId(op.EntityId, "OnComponentUpdate", out var entity)) { return; } if (entityManager.HasComponent <NotAuthoritative <Generated.Improbable.Gdk.Tests.ComponentsWithNoFields.ComponentWithNoFieldsWithEvents.Component> >(entity)) { var data = entityManager.GetComponentData <Generated.Improbable.Gdk.Tests.ComponentsWithNoFields.ComponentWithNoFieldsWithEvents.Component>(entity); var update = Generated.Improbable.Gdk.Tests.ComponentsWithNoFields.ComponentWithNoFieldsWithEvents.Serialization.GetAndApplyUpdate(op.Update.SchemaData.Value.GetFields(), ref data); List <Generated.Improbable.Gdk.Tests.ComponentsWithNoFields.ComponentWithNoFieldsWithEvents.Update> updates; if (entityManager.HasComponent <Generated.Improbable.Gdk.Tests.ComponentsWithNoFields.ComponentWithNoFieldsWithEvents.ReceivedUpdates>(entity)) { updates = entityManager.GetComponentData <Generated.Improbable.Gdk.Tests.ComponentsWithNoFields.ComponentWithNoFieldsWithEvents.ReceivedUpdates>(entity).Updates; } else { var updatesComponent = new Generated.Improbable.Gdk.Tests.ComponentsWithNoFields.ComponentWithNoFieldsWithEvents.ReceivedUpdates { handle = ReferenceTypeProviders.UpdatesProvider.Allocate(World) }; ReferenceTypeProviders.UpdatesProvider.Set(updatesComponent.handle, new List <Generated.Improbable.Gdk.Tests.ComponentsWithNoFields.ComponentWithNoFieldsWithEvents.Update>()); updates = updatesComponent.Updates; entityManager.AddComponentData(entity, updatesComponent); } updates.Add(update); data.DirtyBit = false; entityManager.SetComponentData(entity, data); } var eventsObject = op.Update.SchemaData.Value.GetEvents(); { var eventCount = eventsObject.GetObjectCount(1); if (eventCount > 0) { // Create component to hold received events ReceivedEvents.Evt eventsReceived; List <global::Generated.Improbable.Gdk.Tests.ComponentsWithNoFields.Empty> eventList; if (!entityManager.HasComponent <ReceivedEvents.Evt>(entity)) { eventsReceived = new ReceivedEvents.Evt() { handle = ReferenceTypeProviders.EvtProvider.Allocate(World) }; eventList = new List <global::Generated.Improbable.Gdk.Tests.ComponentsWithNoFields.Empty>((int)eventCount); ReferenceTypeProviders.EvtProvider.Set(eventsReceived.handle, eventList); entityManager.AddComponentData(entity, eventsReceived); } else { eventsReceived = entityManager.GetComponentData <ReceivedEvents.Evt>(entity); eventList = eventsReceived.Events; } // Deserialize events onto component for (var i = 0; i < eventCount; i++) { var e = global::Generated.Improbable.Gdk.Tests.ComponentsWithNoFields.Empty.Serialization.Deserialize(eventsObject.GetObject(1)); eventList.Add(e); } } } }