protected override void OnUpdate() { MultiTimeValue multiElapsedTime = GetElapsedTime(); Entities .WithoutBurst() .WithStructuralChanges() .ForEach((ref EntitySpawnerState state, in EntitySpawnerSetting settings, in DynamicBuffer <EntitiesToSpawn> entitiesToSpawn, in Signal signal, in FixTranslation position) => { if (state.TotalAmountSpawned >= settings.Quantity) { return; } if (settings.OnlyWhenSignalOn && !signal.Value) { return; } TimeValue elapsedTime = multiElapsedTime.GetValue(settings.SpawnPeriod.Type); if ((elapsedTime - state.LastSpawnTime >= settings.SpawnPeriod) || (settings.StartsReady && state.TotalAmountSpawned == 0)) { state.LastSpawnTime = elapsedTime; SpawnEntities(entitiesToSpawn.ToNativeArray(Allocator.Temp), settings, ref state, position); } }).Run();
protected override void OnUpdate() { MultiTimeValue multiElapsedTime = GetElapsedTime(); var ecb = _ecbSytem.CreateCommandBuffer(); Entities .WithoutBurst() .WithStructuralChanges() .ForEach((ref Frozen frozenEffect, in Entity entity) => { TimeValue elapsedTime = multiElapsedTime.GetValue(frozenEffect.Duration.Type); if ((elapsedTime - frozenEffect.AppliedTime) >= frozenEffect.Duration) { ecb.RemoveComponent <Frozen>(entity); } }).Run(); _ecbSytem.AddJobHandleForProducer(Dependency); }