Hello,
I'm trying to set up a job dependancy within a parallel job system for a RTS-like game
[BurstCompile]
public void OnUpdate(ref SystemState state)
{
var spatial = SystemAPI.GetSingleton<AgentSpatialPartitioningSystem.Singleton>();
EntityCommandBuffer ecb = new EntityCommandBuffer(Allocator.TempJob);
EntityCommandBuffer.ParallelWriter parallelEcb = ecb.AsParallelWriter();
m_UnitLookup.Update(ref state);
m_TransformLookup.Update(ref state);
JobHandle idleJob = new Jobs.SwarmUnitBrainIdleJob()
.ScheduleParallel(state.Dependency);
JobHandle moveJob = new Jobs.SwarmUnitBrainMoveJob()
.ScheduleParallel(state.Dependency);
JobHandle sightJob = new Jobs.SwarmUnitBrainEnnemySight {
CharacterLookup = m_UnitLookup,
Spatial = spatial
}.ScheduleParallel(state.Dependency);
JobHandle addFollowEnnemy = new Jobs.SwarmUnitStartFollowingEnnemyOnSightJob {
Ecb = parallelEcb
}.ScheduleParallel(sightJob);
JobHandle updateFollowEnnemy = new Jobs.SwarmUnitUpdateFollowingEnnemyToSightedJob {
Ecb = parallelEcb
}.ScheduleParallel(sightJob);
JobHandle followDecisionHandle = JobHandle.CombineDependencies(
addFollowEnnemy, updateFollowEnnemy);
JobHandle followEnnemyJob = new Jobs.SwarmUnitBrainFollowingEnnemyJob {
Ecb = parallelEcb,
TransformLookup = m_TransformLookup
}.ScheduleParallel(followDecisionHandle);
JobHandle attackJob = new Jobs.SwarmUnitBrainAttackJob {
Ecb = parallelEcb
}.ScheduleParallel(followDecisionHandle);
NativeArray<JobHandle> deps = new NativeArray<JobHandle>(new JobHandle[]{
idleJob,
moveJob,
followEnnemyJob,
attackJob
}, Allocator.Temp);
state.Dependency = JobHandle.CombineDependencies(deps);
ecb.Playback(state.EntityManager);
ecb.Dispose();
}```