Search Unity

BUG: IJobForEach_BC -> native array has been declaared as [WriteOnly]

Discussion in 'Entity Component System' started by Spy-Shifty, Jun 8, 2019.

  1. Spy-Shifty

    Spy-Shifty

    Joined:
    May 5, 2011
    Posts:
    546
    Hi I got the following error:
    upload_2019-6-8_14-22-3.png

    InvalidOperationException: The native container has been declared as [WriteOnly] in the job, but you are reading from it.
    Unity.Collections.LowLevel.Unsafe.AtomicSafetyHandle.CheckReadAndThrowNoEarlyOut (Unity.Collections.LowLevel.Unsafe.AtomicSafetyHandle handle) <0x2294d6ea0d0 + 0x00052> in <3bd64dd808f046b38ba2fb6667d0adc4>:0
    Unity.Collections.LowLevel.Unsafe.AtomicSafetyHandle.CheckReadAndThrow (Unity.Collections.LowLevel.Unsafe.AtomicSafetyHandle handle) (at C:/buildslave/unity/build/Runtime/Export/Jobs/AtomicSafetyHandle.bindings.cs:148)
    Unity.Entities.DynamicBuffer`1[T].CheckReadAccess () (at Library/PackageCache/com.unity.entities@0.0.12-preview.33/Unity.Entities/Iterators/DynamicBuffer.cs:93)
    Unity.Entities.DynamicBuffer`1[T].get_Item (System.Int32 index) (at Library/PackageCache/com.unity.entities@0.0.12-preview.33/Unity.Entities/Iterators/DynamicBuffer.cs:119)
    NextWaypointJob.Execute (Unity.Entities.DynamicBuffer`1[T] path, NavAgent& agent) (at Assets/05 - Scripts/00 - Gameplay/Navigation/NavAgentSystem.cs:160)
    Unity.Entities.JobForEachExtensions+JobStruct_Process_BC`3[T,T0,T1].ExecuteChunk (Unity.Entities.JobForEachExtensions+JobStruct_Process_BC`3[T,T0,T1]& jobData, System.IntPtr bufferRangePatchData, System.Int32 begin, System.Int32 end, Unity.Entities.ArchetypeChunk* chunks, System.Int32* entityIndices) (at Library/PackageCache/com.unity.entities@0.0.12-preview.33/Unity.Entities/IJobForEach.gen.cs:2194)
    Unity.Entities.JobForEachExtensions+JobStruct_Process_BC`3[T,T0,T1].Execute (Unity.Entities.JobForEachExtensions+JobStruct_Process_BC`3[T,T0,T1]& jobData, System.IntPtr additionalPtr, System.IntPtr bufferRangePatchData, Unity.Jobs.LowLevel.Unsafe.JobRanges& ranges, System.Int32 jobIndex) (at Library/PackageCache/com.unity.entities@0.0.12-preview.33/Unity.Entities/IJobForEach.gen.cs:2161)

    Here is my code
    Code (CSharp):
    1. struct NextWaypointJob : IJobForEach_BC<NavAgentPath, NavAgent> {
    2.     public void Execute([ReadOnly] DynamicBuffer<NavAgentPath> path, ref NavAgent agent) {
    3.         if (agent.remainingDistance - agent.stoppingDistance > 0 || agent.status != AgentStatus.Moving) {
    4.             return;
    5.         }
    6.  
    7.         if (agent.nextWaypointIndex != agent.totalWaypoints) {
    8.             agent.currentWaypoint = path[agent.nextWaypointIndex].Value; // exception here (line 160)
    9.             agent.remainingDistance = math.length(agent.position - agent.currentWaypoint);
    10.             agent.nextWaypointIndex++;
    11.         } else {
    12.             agent.totalWaypoints = 0;
    13.             agent.currentWaypoint = 0;
    14.             agent.status = AgentStatus.Idle;
    15.         }
    16.     }
    17. }
    18.  
     
  2. sngdan

    sngdan

    Joined:
    Feb 7, 2014
    Posts:
    1,154