private void OnCmdRequest(CommandRequestOp op) { var entity = TryGetEntityFromEntityId(new EntityId(op.EntityId)); var deserializedRequest = global::Improbable.Gdk.Tests.ComponentsWithNoFields.Empty.Serialization.Deserialize(op.Request.SchemaData.Value.GetObject()); List <Improbable.Gdk.Tests.ComponentsWithNoFields.ComponentWithNoFieldsWithCommands.Cmd.ReceivedRequest> requests; if (entityManager.HasComponent <Improbable.Gdk.Tests.ComponentsWithNoFields.ComponentWithNoFieldsWithCommands.CommandRequests.Cmd>(entity)) { requests = entityManager.GetComponentData <Improbable.Gdk.Tests.ComponentsWithNoFields.ComponentWithNoFieldsWithCommands.CommandRequests.Cmd>(entity).Requests; } else { var data = new Improbable.Gdk.Tests.ComponentsWithNoFields.ComponentWithNoFieldsWithCommands.CommandRequests.Cmd { CommandListHandle = Improbable.Gdk.Tests.ComponentsWithNoFields.ComponentWithNoFieldsWithCommands.ReferenceTypeProviders.CmdRequestsProvider.Allocate(World) }; requests = data.Requests = new List <Improbable.Gdk.Tests.ComponentsWithNoFields.ComponentWithNoFieldsWithCommands.Cmd.ReceivedRequest>(); entityManager.AddComponentData(entity, data); } requests.Add(new Improbable.Gdk.Tests.ComponentsWithNoFields.ComponentWithNoFieldsWithCommands.Cmd.ReceivedRequest(op.RequestId, op.CallerWorkerId, op.CallerAttributeSet, deserializedRequest)); }
public void PopulateReactiveCommandComponents(CommandSystem commandSystem, EntityManager entityManager, WorkerSystem workerSystem, World world) { var receivedRequests = commandSystem.GetRequests <Cmd.ReceivedRequest>(); // todo Not efficient if it keeps jumping all over entities but don't care right now for (int i = 0; i < receivedRequests.Count; ++i) { if (!workerSystem.TryGetEntity(receivedRequests[i].EntityId, out var entity)) { continue; } List <Cmd.ReceivedRequest> requests; if (entityManager.HasComponent <Improbable.Gdk.Tests.ComponentsWithNoFields.ComponentWithNoFieldsWithCommands.CommandRequests.Cmd>(entity)) { requests = entityManager.GetComponentData <Improbable.Gdk.Tests.ComponentsWithNoFields.ComponentWithNoFieldsWithCommands.CommandRequests.Cmd>(entity).Requests; } else { var data = new Improbable.Gdk.Tests.ComponentsWithNoFields.ComponentWithNoFieldsWithCommands.CommandRequests.Cmd { CommandListHandle = ReferenceTypeProviders.CmdRequestsProvider.Allocate(world) }; data.Requests = new List <Cmd.ReceivedRequest>(); requests = data.Requests; entityManager.AddComponentData(entity, data); } requests.Add(receivedRequests[i]); } var receivedResponses = commandSystem.GetResponses <Cmd.ReceivedResponse>(); // todo Not efficient if it keeps jumping all over entities but don't care right now for (int i = 0; i < receivedResponses.Count; ++i) { ref readonly var response = ref receivedResponses[i];