Ejemplo n.º 1
0
            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();
            }
Ejemplo n.º 3
0
            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;
 }
Ejemplo n.º 5
0
            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();
            }
Ejemplo n.º 6
0
            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();
            }
Ejemplo n.º 7
0
            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();
            }
Ejemplo n.º 8
0
            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();
            }