static unsafe void Execute(ref JobStruct <T, U0> jobData, IntPtr additionalPtr, IntPtr bufferRangePatchData, ref JobRanges ranges, int jobIndex)
            {
                int begin;
                int end;
                var entity = default(U0);

                while (JobsUtility.GetWorkStealingRange(ref ranges, jobIndex, out begin, out end))
                {
                    while (begin != end)
                    {
                        if (begin < jobData.Array.CacheBeginIndex || begin >= jobData.Array.CacheEndIndex)
                        {
                            jobData.Array.UpdateCache(begin);
                        }

                        var endLoop = Math.Min(end, jobData.Array.CacheEndIndex);

                        for (var i = begin; i != endLoop; i++)
                        {
                            jobData.Array.PatchPtrs(i, (byte *)UnsafeUtility.AddressOf(ref entity));
                            jobData.Data.Execute(entity);
                        }

                        begin = endLoop;
                    }
                }
            }
Example #2
0
        static IntPtr GetReflectionData <T>()
            where T : struct, IJob
        {
            JobStruct <T> .Initialize();

            var reflectionData = JobStruct <T> .jobReflectionData.Data;

            CheckReflectionDataCorrect(reflectionData);
            return(reflectionData);
        }
        public static unsafe void Run <T, U0>(this T jobData, ComponentGroupArray <U0> array)
            where T : struct, IJobProcessEntities <U0>
            where U0 : struct
        {
            JobStruct <T, U0> fullData;

            fullData.Data  = jobData;
            fullData.Array = array.m_Data;

            var scheduleParams = new JobsUtility.JobScheduleParameters(UnsafeUtility.AddressOf(ref fullData), JobStruct <T, U0> .Initialize(), new JobHandle(), ScheduleMode.Run);
            var entityCount    = array.Length;

            JobsUtility.ScheduleParallelFor(ref scheduleParams, entityCount, entityCount);
        }
        public static unsafe JobHandle Schedule <T, U0>(this T jobData, ComponentGroupArray <U0> array, int innerloopBatchCount, JobHandle dependsOn = new JobHandle())
            where T : struct, IJobProcessEntities <U0>
            where U0 : struct
        {
            JobStruct <T, U0> fullData;

            fullData.Data  = jobData;
            fullData.Array = array.m_Data;

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

            return(JobsUtility.ScheduleParallelFor(ref scheduleParams, array.Length, innerloopBatchCount));
        }
Example #5
0
        unsafe public static void Run <T>(this T jobData) where T : struct, IJob
        {
            var scheduleParams = new JobsUtility.JobScheduleParameters(UnsafeUtility.AddressOf(ref jobData), JobStruct <T> .Initialize(), new JobHandle(), ScheduleMode.Run);

            JobsUtility.Schedule(ref scheduleParams);
        }
Example #6
0
        unsafe public static JobHandle Schedule <T>(this T jobData, JobHandle dependsOn = new JobHandle()) where T : struct, IJob
        {
            var scheduleParams = new JobsUtility.JobScheduleParameters(UnsafeUtility.AddressOf(ref jobData), JobStruct <T> .Initialize(), dependsOn, ScheduleMode.Batched);

            return(JobsUtility.Schedule(ref scheduleParams));
        }
Example #7
0
 public static void EarlyJobInit <T>()
     where T : struct, IJob
 {
     JobStruct <T> .Initialize();
 }