protected override void OnUpdate() { var ecbPackage = m_ecbSystem.CreateCommandBuffer(); var ecb = ecbPackage.ToConcurrent(); var bulletLayer = sceneGlobalEntity.GetCollectionComponent <BulletCollisionLayer>(true).layer; var processor = new DamageHitShipsAndDestroyBulletProcessor { bulletDamageCdfe = GetComponentDataFromEntity <Damage>(true), shipHealthCdfe = this.GetPhysicsComponentDataFromEntity <ShipHealth>(), ecb = ecb }; var backup = Dependency; Dependency = default; Entities.WithAll <FactionTag>().ForEach((Entity entity, int entityInQueryIndex) => { if (entityInQueryIndex == 0) { Dependency = backup; } var shipLayer = EntityManager.GetCollectionComponent <FactionShipsCollisionLayer>(entity, true).layer; Dependency = Physics.FindPairs(bulletLayer, shipLayer, processor).ScheduleParallel(Dependency); }).WithoutBurst().Run(); m_ecbSystem.AddJobHandleForProducer(Dependency); }
protected override void OnUpdate() { var dcb = latiosWorld.syncPoint.CreateDestroyCommandBuffer().AsParallelWriter(); var icb = latiosWorld.syncPoint.CreateInstantiateCommandBuffer <Rotation, Translation>().AsParallelWriter(); int frameId = m_frameId; Entities.ForEach((ref BulletFirer firer) => { if (!firer.initialized) { firer.lastImpactFrame = frameId; firer.initialized = true; } }).ScheduleParallel(); var bulletLayer = sceneBlackboardEntity.GetCollectionComponent <BulletCollisionLayer>(true).layer; var processor = new DamageHitShipsAndDestroyBulletProcessor { bulletDamageCdfe = GetComponentDataFromEntity <Damage>(true), bulletFirerCdfe = GetComponentDataFromEntity <BulletFirer>(), shipHealthCdfe = GetComponentDataFromEntity <ShipHealth>(), shipHitEffectPrefabCdfe = GetComponentDataFromEntity <ShipHitEffectPrefab>(true), dcb = dcb, icb = icb, frameId = frameId }; var backup = Dependency; Dependency = default; Entities.WithAll <FactionTag>().ForEach((Entity entity, int entityInQueryIndex) => { if (entityInQueryIndex == 0) { Dependency = backup; } var shipLayer = EntityManager.GetCollectionComponent <FactionShipsCollisionLayer>(entity, true).layer; Dependency = Physics.FindPairs(bulletLayer, shipLayer, processor).ScheduleParallel(Dependency); }).WithoutBurst().Run(); m_frameId++; }