Search Unity

ITriggerJob causes a crash after scene reload

Discussion in 'Entity Component System' started by Conspiracy, Jan 12, 2020.

  1. Conspiracy

    Conspiracy

    Joined:
    Oct 22, 2016
    Posts:
    40
    so I have this triggerJob in my game. When I start the game the Job works fine but after the scene resets, that job causes my game to just stop working.
    Code (CSharp):
    1. public class triggerWithPlayerSystem : JobComponentSystem
    2. {
    3.     [BurstCompile]
    4.     public struct PlayerOnTriggerJob : ITriggerEventsJob
    5.     {
    6.         [ReadOnly]
    7.         public ComponentDataFromEntity<playerData> playerEntity;
    8.  
    9.         public ComponentDataFromEntity<triggerComponent> triggerEntity;
    10.  
    11.         public void Execute(TriggerEvent triggerEvent)
    12.         {
    13.             if (playerEntity.HasComponent(triggerEvent.Entities.EntityA))
    14.             {
    15.                 if (triggerEntity.HasComponent(triggerEvent.Entities.EntityB))
    16.                 {
    17.                     triggerComponent trigger = triggerEntity[triggerEvent.Entities.EntityB];
    18.                     trigger.active = true;
    19.                     triggerEntity[triggerEvent.Entities.EntityB] = trigger;
    20.                 }
    21.             }
    22.  
    23.             if (playerEntity.HasComponent(triggerEvent.Entities.EntityB))
    24.             {
    25.                 if (triggerEntity.HasComponent(triggerEvent.Entities.EntityA))
    26.                 {
    27.                     triggerComponent trigger = triggerEntity[triggerEvent.Entities.EntityB];
    28.                     trigger.active = true;
    29.                     triggerEntity[triggerEvent.Entities.EntityB] = trigger;
    30.                 }
    31.             }
    32.         }
    33.     }
    34.  
    35.     private BuildPhysicsWorld buildPhysicsWorld;
    36.     private StepPhysicsWorld stepPhysicsWorld;
    37.  
    38.     protected override void OnCreate()
    39.     {
    40.         if(buildPhysicsWorld == null)
    41.             buildPhysicsWorld = World.GetOrCreateSystem<BuildPhysicsWorld>();
    42.  
    43.         if (stepPhysicsWorld == null)
    44.             stepPhysicsWorld = World.GetOrCreateSystem<StepPhysicsWorld>();
    45.     }
    46.  
    47.     protected override JobHandle OnUpdate(JobHandle inputDeps)
    48.     {
    49.         PlayerOnTriggerJob job = new PlayerOnTriggerJob
    50.         {
    51.             playerEntity = GetComponentDataFromEntity<playerData>(isReadOnly: true),
    52.             triggerEntity = GetComponentDataFromEntity<triggerComponent>(),
    53.         };
    54.  
    55.         return job.Schedule(stepPhysicsWorld.Simulation, ref buildPhysicsWorld.PhysicsWorld, inputDeps);
    56.     }
    57. }
    58.  
    any reason why?