protected override void OnUpdate() { Entity grid; using (var tmp = mGridQuery.ToEntityArray(Allocator.TempJob)) grid = tmp.Length > 0 ? tmp[0] : Entity.Null; var baseJob = new GetTargetJob { Aggression = Settings.Instance.Aggression, RandomizerType = GetComponentTypeHandle <CRandomizer>(false), EntityType = GetEntityTypeHandle(), ResourceGridIndex = GetComponentDataFromEntity <CGridIndex>(true), ResourceStackHeight = GetComponentDataFromEntity <CStackHeight>(true), GridEntity = grid, GridCellCount = GetComponentDataFromEntity <CGridCellCount>(true), GridStackHeights = GetBufferFromEntity <BStackHeights>(true), }; var firstTeamJob = baseJob; firstTeamJob.CommandBuffer = mCommandBufferSystem.CreateCommandBuffer().AsParallelWriter(); firstTeamJob.Enemies = mSecondTeamAsEnemyQuery.ToEntityArray(Allocator.TempJob); firstTeamJob.Resources = mResourceQuery.ToEntityArray(Allocator.TempJob); Dependency = firstTeamJob.ScheduleParallel(mFirstTeamQuery, Dependency); var secondTeamJob = baseJob; secondTeamJob.CommandBuffer = mCommandBufferSystem.CreateCommandBuffer().AsParallelWriter(); secondTeamJob.Enemies = mFirstTeamAsEnemyQuery.ToEntityArray(Allocator.TempJob); secondTeamJob.Resources = mResourceQuery.ToEntityArray(Allocator.TempJob); Dependency = secondTeamJob.ScheduleParallel(mSecondTeamQuery, Dependency); mCommandBufferSystem.AddJobHandleForProducer(Dependency); }
protected override void OnUpdate() { var baseJob = new GetTargetJob { Aggression = Settings.Instance.Aggression, RandomizerType = GetArchetypeChunkComponentType <CRandomizer>(false), EntityType = GetArchetypeChunkEntityType(), }; var firstTeamJob = baseJob; firstTeamJob.CommandBuffer = mCommandBufferSystem.CreateCommandBuffer().ToConcurrent(); firstTeamJob.Enemies = mSecondTeamQuery.ToEntityArray(Allocator.TempJob); Dependency = firstTeamJob.ScheduleParallel(mFirstTeamQuery, Dependency); var secondTeamJob = baseJob; secondTeamJob.CommandBuffer = mCommandBufferSystem.CreateCommandBuffer().ToConcurrent(); secondTeamJob.Enemies = mFirstTeamQuery.ToEntityArray(Allocator.TempJob); Dependency = secondTeamJob.ScheduleParallel(mSecondTeamQuery, Dependency); }