public unsafe static void Execute(ref T jobData, IntPtr jobData2, IntPtr bufferRangePatchData, ref JobRanges ranges, int jobIndex) { IJobParallelForTransformExtensions.TransformParallelForLoopStruct <T> .TransformJobData transformJobData; UnsafeUtility.CopyPtrToStructure <IJobParallelForTransformExtensions.TransformParallelForLoopStruct <T> .TransformJobData>((void *)jobData2, out transformJobData); int * ptr = (int *)((void *)TransformAccessArray.GetSortedToUserIndex(transformJobData.TransformAccessArray)); TransformAccess *ptr2 = (TransformAccess *)((void *)TransformAccessArray.GetSortedTransformAccess(transformJobData.TransformAccessArray)); bool flag = transformJobData.IsReadOnly == 1; if (flag) { while (true) { int num; int num2; bool flag2 = !JobsUtility.GetWorkStealingRange(ref ranges, jobIndex, out num, out num2); if (flag2) { break; } int num3 = num2; for (int i = num; i < num3; i++) { int num4 = i; int num5 = ptr[num4]; JobsUtility.PatchBufferMinMaxRanges(bufferRangePatchData, UnsafeUtility.AddressOf <T>(ref jobData), num5, 1); TransformAccess transform = ptr2[num4]; transform.MarkReadOnly(); jobData.Execute(num5, transform); } } } else { int num6; int num7; JobsUtility.GetJobRange(ref ranges, jobIndex, out num6, out num7); for (int j = num6; j < num7; j++) { int num8 = j; int num9 = ptr[num8]; JobsUtility.PatchBufferMinMaxRanges(bufferRangePatchData, UnsafeUtility.AddressOf <T>(ref jobData), num9, 1); TransformAccess transform2 = ptr2[num8]; transform2.MarkReadWrite(); jobData.Execute(num9, transform2); } } }
public unsafe static void Execute(ref T jobData, IntPtr jobData2, IntPtr bufferRangePatchData, ref JobRanges ranges, int jobIndex) { IntPtr transformArrayIntPtr; UnsafeUtility.CopyPtrToStructure <IntPtr>(jobData2, out transformArrayIntPtr); int * ptr = (int *)((void *)TransformAccessArray.GetSortedToUserIndex(transformArrayIntPtr)); TransformAccess *ptr2 = (TransformAccess *)((void *)TransformAccessArray.GetSortedTransformAccess(transformArrayIntPtr)); int num; int num2; JobsUtility.GetJobRange(ref ranges, jobIndex, out num, out num2); for (int i = num; i < num2; i++) { int num3 = i; int num4 = ptr[num3]; JobsUtility.PatchBufferMinMaxRanges(bufferRangePatchData, UnsafeUtility.AddressOf <T>(ref jobData), num4, 1); jobData.Execute(num4, ptr2[num3]); } }
public static unsafe void Execute(ref T jobData, System.IntPtr jobData2, System.IntPtr bufferRangePatchData, ref JobRanges ranges, int jobIndex) { UnsafeUtility.CopyPtrToStructure((void *)jobData2, out TransformJobData transformJobData); int * sortedToUserIndex = (int *)TransformAccessArray.GetSortedToUserIndex(transformJobData.TransformAccessArray); TransformAccess *sortedTransformAccess = (TransformAccess *)TransformAccessArray.GetSortedTransformAccess(transformJobData.TransformAccessArray); if (transformJobData.IsReadOnly == 1) { while (true) { if (!JobsUtility.GetWorkStealingRange(ref ranges, jobIndex, out var begin, out var end)) { break; } var endThatCompilerCanSeeWillNeverChange = end; for (var i = begin; i < endThatCompilerCanSeeWillNeverChange; ++i) { int sortedIndex = i; int userIndex = sortedToUserIndex[sortedIndex]; JobsUtility.PatchBufferMinMaxRanges(bufferRangePatchData, UnsafeUtility.AddressOf(ref jobData), userIndex, 1); var transformAccess = sortedTransformAccess[sortedIndex]; transformAccess.MarkReadOnly(); jobData.Execute(userIndex, transformAccess); } } } else { JobsUtility.GetJobRange(ref ranges, jobIndex, out var begin, out var end); for (int i = begin; i < end; i++) { int sortedIndex = i; int userIndex = sortedToUserIndex[sortedIndex]; JobsUtility.PatchBufferMinMaxRanges(bufferRangePatchData, UnsafeUtility.AddressOf(ref jobData), userIndex, 1); var transformAccess = sortedTransformAccess[sortedIndex]; transformAccess.MarkReadWrite(); jobData.Execute(userIndex, transformAccess); } } }
public static unsafe void Execute(ref T jobData, System.IntPtr jobData2, System.IntPtr bufferRangePatchData, ref JobRanges ranges, int jobIndex) { IntPtr transformAccessArray; UnsafeUtility.CopyPtrToStructure((void *)jobData2, out transformAccessArray); int * sortedToUserIndex = (int *)TransformAccessArray.GetSortedToUserIndex(transformAccessArray); TransformAccess *sortedTransformAccess = (TransformAccess *)TransformAccessArray.GetSortedTransformAccess(transformAccessArray); int begin; int end; JobsUtility.GetJobRange(ref ranges, jobIndex, out begin, out end); for (int i = begin; i < end; i++) { int sortedIndex = i; int userIndex = sortedToUserIndex[sortedIndex]; jobData.Execute(userIndex, sortedTransformAccess[sortedIndex]); } }