コード例 #1
0
        public static unsafe JobHandle Schedule <T>(this T jobData, JobHandle dependsOn = default(JobHandle))
            where T : struct, IJob
        {
            var jobProducer = new JobProducer <T>()
            {
                JobData = jobData
            };

            var scheduleParams = new JobsUtility.JobScheduleParameters(
                UnsafeUtility.AddressOf(ref jobProducer),
                JobProducer <T> .Initialize(),
                dependsOn,
                ScheduleMode.Batched);

            return(JobsUtility.Schedule(ref scheduleParams));
        }
コード例 #2
0
 public static void Execute(ref JobProducer <T> jobProducer, IntPtr additionalData,
                            IntPtr bufferRangePatchData, ref JobRanges ranges, int jobIndex)
 {
     jobProducer.JobData.Execute();
 }
コード例 #3
0
        unsafe public static void Run <T>(this T jobData, int arrayLength) where T : struct, IJobFor
        {
            var scheduleParams = new JobsUtility.JobScheduleParameters(UnsafeUtility.AddressOf(ref jobData), JobProducer <T> .Initialize(), new JobHandle(), ScheduleMode.Run);

            JobsUtility.ScheduleParallelFor(ref scheduleParams, arrayLength, arrayLength);
        }
コード例 #4
0
        unsafe public static JobHandle ScheduleParallel <T>(this T jobData, int arrayLength, int innerloopBatchCount, JobHandle dependency) where T : struct, IJobFor
        {
            var scheduleParams = new JobsUtility.JobScheduleParameters(UnsafeUtility.AddressOf(ref jobData), JobProducer <T> .Initialize(), dependency, ScheduleMode.Parallel);

            return(JobsUtility.ScheduleParallelFor(ref scheduleParams, arrayLength, innerloopBatchCount));
        }
コード例 #5
0
        unsafe public static JobHandle Schedule <T>(this T jobData, int arrayLength, JobHandle dependency) where T : struct, IJobFor
        {
            // https://unity3d.atlassian.net/browse/DOTSR-1888
            // var scheduleParams = new JobsUtility.JobScheduleParameters(UnsafeUtility.AddressOf(ref jobData), JobProducer<T>.Initialize(), dependency, ScheduleMode.Single);
            // IJobChunk uses both JobsUtility.ScheduleParallelFor and JobsUtility.Schedule, so that could be implemented.
            // However, it brings this class (which is rarely used) even more out of sync with the Unity.Runtime version, where
            // the better fix is to implement ScheduleMode.Single
            var scheduleParams = new JobsUtility.JobScheduleParameters(UnsafeUtility.AddressOf(ref jobData), JobProducer <T> .Initialize(), dependency, ScheduleMode.Parallel);

            return(JobsUtility.ScheduleParallelFor(ref scheduleParams, arrayLength, arrayLength));
        }
コード例 #6
0
 public PoolHub(JobProducer jobProducer)
 {
     this.jobProducer = jobProducer;
 }