public override void ExecuteReplication(ComponentGroup replicationGroup, ComponentSystemBase system, global::Improbable.Worker.Core.Connection connection) { Profiler.BeginSample("ComponentWithNoFieldsWithEvents"); var chunkArray = replicationGroup.CreateArchetypeChunkArray(Allocator.TempJob); var spatialOSEntityType = system.GetArchetypeChunkComponentType <SpatialEntityId>(true); var componentType = system.GetArchetypeChunkComponentType <Improbable.Gdk.Tests.ComponentsWithNoFields.ComponentWithNoFieldsWithEvents.Component>(); var eventEvtType = system.GetArchetypeChunkComponentType <EventSender.Evt>(true); foreach (var chunk in chunkArray) { var entityIdArray = chunk.GetNativeArray(spatialOSEntityType); var componentArray = chunk.GetNativeArray(componentType); var eventEvtArray = chunk.GetNativeArray(eventEvtType); for (var i = 0; i < componentArray.Length; i++) { var data = componentArray[i]; var dirtyEvents = 0; var eventsEvt = eventEvtArray[i].Events; dirtyEvents += eventsEvt.Count; if (data.DirtyBit || dirtyEvents > 0) { var update = new global::Improbable.Worker.Core.SchemaComponentUpdate(1004); Improbable.Gdk.Tests.ComponentsWithNoFields.ComponentWithNoFieldsWithEvents.Serialization.SerializeUpdate(data, update); // Serialize events var eventsObject = update.GetEvents(); if (eventsEvt.Count > 0) { foreach (var e in eventsEvt) { var obj = eventsObject.AddObject(1); global::Improbable.Gdk.Tests.ComponentsWithNoFields.Empty.Serialization.Serialize(e, obj); } eventsEvt.Clear(); } // Send serialized update over the wire connection.SendComponentUpdate(entityIdArray[i].EntityId, new global::Improbable.Worker.Core.ComponentUpdate(update)); data.DirtyBit = false; componentArray[i] = data; } } } chunkArray.Dispose(); Profiler.EndSample(); }
public override void ExecuteReplication(ComponentGroup replicationGroup, ComponentSystemBase system, global::Improbable.Worker.Core.Connection connection) { Profiler.BeginSample("Connection"); var chunkArray = replicationGroup.CreateArchetypeChunkArray(Allocator.TempJob); var spatialOSEntityType = system.GetArchetypeChunkComponentType <SpatialEntityId>(true); var componentType = system.GetArchetypeChunkComponentType <Improbable.Gdk.Tests.AlternateSchemaSyntax.Connection.Component>(); var eventMyEventType = system.GetArchetypeChunkComponentType <EventSender.MyEvent>(true); foreach (var chunk in chunkArray) { var entityIdArray = chunk.GetNativeArray(spatialOSEntityType); var componentArray = chunk.GetNativeArray(componentType); var eventMyEventArray = chunk.GetNativeArray(eventMyEventType); for (var i = 0; i < componentArray.Length; i++) { var data = componentArray[i]; var eventsToSend = 0; var eventsMyEvent = eventMyEventArray[i].Events; eventsToSend += eventsMyEvent.Count; if (data.IsDataDirty() || eventsToSend > 0) { var update = new global::Improbable.Worker.Core.SchemaComponentUpdate(1105); Improbable.Gdk.Tests.AlternateSchemaSyntax.Connection.Serialization.SerializeUpdate(data, update); // Serialize events var eventsObject = update.GetEvents(); if (eventsMyEvent.Count > 0) { foreach (var e in eventsMyEvent) { var obj = eventsObject.AddObject(1); global::Improbable.Gdk.Tests.AlternateSchemaSyntax.RandomDataType.Serialization.Serialize(e, obj); } eventsMyEvent.Clear(); } // Send serialized update over the wire connection.SendComponentUpdate(entityIdArray[i].EntityId, new global::Improbable.Worker.Core.ComponentUpdate(update)); data.MarkDataClean(); componentArray[i] = data; } } } chunkArray.Dispose(); Profiler.EndSample(); }
public override void ExecuteReplication(ComponentGroup replicationGroup, global::Improbable.Worker.Core.Connection connection) { Profiler.BeginSample("ComponentWithNoFieldsWithEvents"); var entityIdDataArray = replicationGroup.GetComponentDataArray <SpatialEntityId>(); var componentDataArray = replicationGroup.GetComponentDataArray <Improbable.Gdk.Tests.ComponentsWithNoFields.ComponentWithNoFieldsWithEvents.Component>(); var eventEvtArray = replicationGroup.GetComponentDataArray <EventSender.Evt>(); for (var i = 0; i < componentDataArray.Length; i++) { var data = componentDataArray[i]; var dirtyEvents = 0; var eventsEvt = eventEvtArray[i].Events; dirtyEvents += eventsEvt.Count; if (data.DirtyBit || dirtyEvents > 0) { var update = new global::Improbable.Worker.Core.SchemaComponentUpdate(1004); Improbable.Gdk.Tests.ComponentsWithNoFields.ComponentWithNoFieldsWithEvents.Serialization.SerializeUpdate(data, update); // Serialize events var eventsObject = update.GetEvents(); if (eventsEvt.Count > 0) { foreach (var e in eventsEvt) { var obj = eventsObject.AddObject(1); global::Improbable.Gdk.Tests.ComponentsWithNoFields.Empty.Serialization.Serialize(e, obj); } eventsEvt.Clear(); } // Send serialized update over the wire connection.SendComponentUpdate(entityIdDataArray[i].EntityId, new global::Improbable.Worker.Core.ComponentUpdate(update)); data.DirtyBit = false; componentDataArray[i] = data; } } Profiler.EndSample(); }
public override void ExecuteReplication(ComponentGroup replicationGroup, global::Improbable.Worker.Core.Connection connection) { var entityIdDataArray = replicationGroup.GetComponentDataArray <SpatialEntityId>(); var componentDataArray = replicationGroup.GetComponentDataArray <SpatialOSConnection>(); var eventMyEventArray = replicationGroup.GetComponentDataArray <EventSender.MyEvent>(); for (var i = 0; i < componentDataArray.Length; i++) { var data = componentDataArray[i]; var dirtyEvents = 0; var eventsMyEvent = eventMyEventArray[i].Events; dirtyEvents += eventsMyEvent.Count; if (data.DirtyBit || dirtyEvents > 0) { var update = new global::Improbable.Worker.Core.SchemaComponentUpdate(1105); SpatialOSConnection.Serialization.Serialize(data, update.GetFields()); // Serialize events var eventsObject = update.GetEvents(); if (eventsMyEvent.Count > 0) { foreach (var e in eventsMyEvent) { var obj = eventsObject.AddObject(1); global::Generated.Improbable.Gdk.Tests.AlternateSchemaSyntax.RandomDataType.Serialization.Serialize(e, obj); } eventsMyEvent.Clear(); } // Send serialized update over the wire connection.SendComponentUpdate(entityIdDataArray[i].EntityId, new global::Improbable.Worker.Core.ComponentUpdate(update)); data.DirtyBit = false; componentDataArray[i] = data; } } }