public void SendUpdates( NativeArray <ArchetypeChunk> chunkArray, ComponentSystemBase system, EntityManager entityManager, ComponentUpdateSystem componentUpdateSystem) { Profiler.BeginSample("Worker"); var spatialOSEntityType = system.GetArchetypeChunkComponentType <SpatialEntityId>(true); var componentType = system.GetArchetypeChunkComponentType <global::Improbable.Restricted.Worker.Component>(); var authorityType = system.GetArchetypeChunkSharedComponentType <ComponentAuthority>(); foreach (var chunk in chunkArray) { var entityIdArray = chunk.GetNativeArray(spatialOSEntityType); var componentArray = chunk.GetNativeArray(componentType); var authorityIndex = chunk.GetSharedComponentIndex(authorityType); if (!entityManager.GetSharedComponentData <ComponentAuthority>(authorityIndex).HasAuthority) { continue; } for (var i = 0; i < componentArray.Length; i++) { var data = componentArray[i]; if (data.IsDataDirty()) { Update update = new Update(); if (data.IsDataDirty(0)) { update.WorkerId = data.WorkerId; } if (data.IsDataDirty(1)) { update.WorkerType = data.WorkerType; } if (data.IsDataDirty(2)) { update.Connection = data.Connection; } componentUpdateSystem.SendUpdate(in update, entityIdArray[i].EntityId); data.MarkDataClean(); componentArray[i] = data; } } } Profiler.EndSample(); }
public void SendUpdates( NativeArray <ArchetypeChunk> chunkArray, ComponentSystemBase system, EntityManager entityManager, ComponentUpdateSystem componentUpdateSystem) { Profiler.BeginSample("PlayerHeartbeatServer"); var spatialOSEntityType = system.GetArchetypeChunkComponentType <SpatialEntityId>(true); var componentType = system.GetArchetypeChunkComponentType <Improbable.PlayerLifecycle.PlayerHeartbeatServer.Component>(); var authorityType = system.GetArchetypeChunkSharedComponentType <ComponentAuthority>(); foreach (var chunk in chunkArray) { var entityIdArray = chunk.GetNativeArray(spatialOSEntityType); var componentArray = chunk.GetNativeArray(componentType); var authorityIndex = chunk.GetSharedComponentIndex(authorityType); if (!entityManager.GetSharedComponentData <ComponentAuthority>(authorityIndex).HasAuthority) { continue; } for (var i = 0; i < componentArray.Length; i++) { var data = componentArray[i]; if (data.IsDataDirty()) { Update update = new Update(); componentUpdateSystem.SendUpdate(in update, entityIdArray[i].EntityId); data.MarkDataClean(); componentArray[i] = data; } } } Profiler.EndSample(); }
public void SendUpdates( NativeArray <ArchetypeChunk> chunkArray, ComponentSystemBase system, EntityManager entityManager, ComponentUpdateSystem componentUpdateSystem) { Profiler.BeginSample("BlittableComponent"); var spatialOSEntityType = system.GetArchetypeChunkComponentType <SpatialEntityId>(true); var componentType = system.GetArchetypeChunkComponentType <global::Improbable.Gdk.Tests.BlittableTypes.BlittableComponent.Component>(); var authorityType = system.GetArchetypeChunkSharedComponentType <ComponentAuthority>(); foreach (var chunk in chunkArray) { var entityIdArray = chunk.GetNativeArray(spatialOSEntityType); var componentArray = chunk.GetNativeArray(componentType); var authorityIndex = chunk.GetSharedComponentIndex(authorityType); if (!entityManager.GetSharedComponentData <ComponentAuthority>(authorityIndex).HasAuthority) { continue; } for (var i = 0; i < componentArray.Length; i++) { var data = componentArray[i]; if (data.IsDataDirty()) { Update update = new Update(); if (data.IsDataDirty(0)) { update.BoolField = data.BoolField; } if (data.IsDataDirty(1)) { update.IntField = data.IntField; } if (data.IsDataDirty(2)) { update.LongField = data.LongField; } if (data.IsDataDirty(3)) { update.FloatField = data.FloatField; } if (data.IsDataDirty(4)) { update.DoubleField = data.DoubleField; } componentUpdateSystem.SendUpdate(in update, entityIdArray[i].EntityId); data.MarkDataClean(); componentArray[i] = data; } } } Profiler.EndSample(); }
public void ScheduleTimeInitialize(ComponentSystemBase jobComponentSystem, bool isReadOnly) { _type = jobComponentSystem.GetArchetypeChunkSharedComponentType <T>(); _entityManager = jobComponentSystem.EntityManager; }
public void SendUpdates( NativeArray <ArchetypeChunk> chunkArray, ComponentSystemBase system, EntityManager entityManager, ComponentUpdateSystem componentUpdateSystem) { Profiler.BeginSample("ExhaustiveRepeated"); var spatialOSEntityType = system.GetArchetypeChunkComponentType <SpatialEntityId>(true); var componentType = system.GetArchetypeChunkComponentType <Improbable.Gdk.Tests.ExhaustiveRepeated.Component>(); var authorityType = system.GetArchetypeChunkSharedComponentType <ComponentAuthority>(); foreach (var chunk in chunkArray) { var entityIdArray = chunk.GetNativeArray(spatialOSEntityType); var componentArray = chunk.GetNativeArray(componentType); var authorityIndex = chunk.GetSharedComponentIndex(authorityType); if (!entityManager.GetSharedComponentData <ComponentAuthority>(authorityIndex).HasAuthority) { continue; } for (var i = 0; i < componentArray.Length; i++) { var data = componentArray[i]; if (data.IsDataDirty()) { Update update = new Update(); if (data.IsDataDirty(0)) { update.Field1 = data.Field1; } if (data.IsDataDirty(1)) { update.Field2 = data.Field2; } if (data.IsDataDirty(2)) { update.Field3 = data.Field3; } if (data.IsDataDirty(3)) { update.Field4 = data.Field4; } if (data.IsDataDirty(4)) { update.Field5 = data.Field5; } if (data.IsDataDirty(5)) { update.Field6 = data.Field6; } if (data.IsDataDirty(6)) { update.Field7 = data.Field7; } if (data.IsDataDirty(7)) { update.Field8 = data.Field8; } if (data.IsDataDirty(8)) { update.Field9 = data.Field9; } if (data.IsDataDirty(9)) { update.Field10 = data.Field10; } if (data.IsDataDirty(10)) { update.Field11 = data.Field11; } if (data.IsDataDirty(11)) { update.Field12 = data.Field12; } if (data.IsDataDirty(12)) { update.Field13 = data.Field13; } if (data.IsDataDirty(13)) { update.Field14 = data.Field14; } if (data.IsDataDirty(14)) { update.Field15 = data.Field15; } if (data.IsDataDirty(15)) { update.Field16 = data.Field16; } if (data.IsDataDirty(16)) { update.Field17 = data.Field17; } if (data.IsDataDirty(17)) { update.Field18 = data.Field18; } componentUpdateSystem.SendUpdate(in update, entityIdArray[i].EntityId); data.MarkDataClean(); componentArray[i] = data; } } } Profiler.EndSample(); }
public void SendUpdates( NativeArray <ArchetypeChunk> chunkArray, ComponentSystemBase system, EntityManager entityManager, ComponentUpdateSystem componentUpdateSystem) { Profiler.BeginSample("HealthRegenComponent"); var spatialOSEntityType = system.GetArchetypeChunkComponentType <SpatialEntityId>(true); var componentType = system.GetArchetypeChunkComponentType <Improbable.Gdk.Health.HealthRegenComponent.Component>(); var authorityType = system.GetArchetypeChunkSharedComponentType <ComponentAuthority>(); foreach (var chunk in chunkArray) { var entityIdArray = chunk.GetNativeArray(spatialOSEntityType); var componentArray = chunk.GetNativeArray(componentType); var authorityIndex = chunk.GetSharedComponentIndex(authorityType); if (!entityManager.GetSharedComponentData <ComponentAuthority>(authorityIndex).HasAuthority) { continue; } for (var i = 0; i < componentArray.Length; i++) { var data = componentArray[i]; if (data.IsDataDirty()) { Update update = new Update(); if (data.IsDataDirty(0)) { update.DamagedRecently = data.DamagedRecently; } if (data.IsDataDirty(1)) { update.RegenCooldownTimer = data.RegenCooldownTimer; } if (data.IsDataDirty(2)) { update.CooldownSyncInterval = data.CooldownSyncInterval; } if (data.IsDataDirty(3)) { update.RegenPauseTime = data.RegenPauseTime; } if (data.IsDataDirty(4)) { update.RegenInterval = data.RegenInterval; } if (data.IsDataDirty(5)) { update.RegenAmount = data.RegenAmount; } componentUpdateSystem.SendUpdate(in update, entityIdArray[i].EntityId); data.MarkDataClean(); componentArray[i] = data; } } } Profiler.EndSample(); }
public void SendUpdates( NativeArray <ArchetypeChunk> chunkArray, ComponentSystemBase system, EntityManager entityManager, ComponentUpdateSystem componentUpdateSystem) { Profiler.BeginSample("ExhaustiveEntity"); var spatialOSEntityType = system.GetArchetypeChunkComponentType <SpatialEntityId>(true); var componentType = system.GetArchetypeChunkComponentType <global::Improbable.TestSchema.ExhaustiveEntity.Component>(); var authorityType = system.GetArchetypeChunkSharedComponentType <ComponentAuthority>(); foreach (var chunk in chunkArray) { var entityIdArray = chunk.GetNativeArray(spatialOSEntityType); var componentArray = chunk.GetNativeArray(componentType); var authorityIndex = chunk.GetSharedComponentIndex(authorityType); if (!entityManager.GetSharedComponentData <ComponentAuthority>(authorityIndex).HasAuthority) { continue; } for (var i = 0; i < componentArray.Length; i++) { var data = componentArray[i]; if (data.IsDataDirty()) { Update update = new Update(); if (data.IsDataDirty(0)) { update.Field1 = data.Field1; } if (data.IsDataDirty(1)) { update.Field2 = data.Field2; } if (data.IsDataDirty(2)) { update.Field3 = data.Field3; } if (data.IsDataDirty(3)) { update.Field4 = data.Field4; } if (data.IsDataDirty(4)) { update.Field5 = data.Field5; } componentUpdateSystem.SendUpdate(in update, entityIdArray[i].EntityId); data.MarkDataClean(); componentArray[i] = data; } } } Profiler.EndSample(); }
public void SendUpdates( NativeArray <ArchetypeChunk> chunkArray, ComponentSystemBase system, EntityManager entityManager, ComponentUpdateSystem componentUpdateSystem) { Profiler.BeginSample("TransformInternal"); var spatialOSEntityType = system.GetArchetypeChunkComponentType <SpatialEntityId>(true); var componentType = system.GetArchetypeChunkComponentType <global::Improbable.Gdk.TransformSynchronization.TransformInternal.Component>(); var authorityType = system.GetArchetypeChunkSharedComponentType <ComponentAuthority>(); foreach (var chunk in chunkArray) { var entityIdArray = chunk.GetNativeArray(spatialOSEntityType); var componentArray = chunk.GetNativeArray(componentType); var authorityIndex = chunk.GetSharedComponentIndex(authorityType); if (!entityManager.GetSharedComponentData <ComponentAuthority>(authorityIndex).HasAuthority) { continue; } for (var i = 0; i < componentArray.Length; i++) { var data = componentArray[i]; if (data.IsDataDirty()) { Update update = new Update(); if (data.IsDataDirty(0)) { update.Location = data.Location; } if (data.IsDataDirty(1)) { update.Rotation = data.Rotation; } if (data.IsDataDirty(2)) { update.Velocity = data.Velocity; } if (data.IsDataDirty(3)) { update.PhysicsTick = data.PhysicsTick; } if (data.IsDataDirty(4)) { update.TicksPerSecond = data.TicksPerSecond; } componentUpdateSystem.SendUpdate(in update, entityIdArray[i].EntityId); data.MarkDataClean(); componentArray[i] = data; } } } Profiler.EndSample(); }