Пример #1
0
        // Schedule the job to apply gravity to all dynamic bodies and copy input velocities
        internal static JobHandle ScheduleApplyGravityAndCopyInputVelocitiesJob(
            ref DynamicsWorld world,
            NativeArray <PhysicsVelocity> inputVelocities,
            float2 gravityAcceleration,
            JobHandle inputDeps, int threadCountHint = 0)
        {
            if (threadCountHint <= 0)
            {
                var job = new ApplyGravityAndCopyInputVelocitiesJob
                {
                    BodyMotionData      = world.BodyMotionData,
                    BodyMotionVelocity  = world.BodyMotionVelocity,
                    InputVelocities     = inputVelocities,
                    GravityAcceleration = gravityAcceleration
                };

                return(job.Schedule(inputDeps));
            }
            else
            {
                var job = new ParallelApplyGravityAndCopyInputVelocitiesJob
                {
                    BodyMotionData      = world.BodyMotionData,
                    BodyMotionVelocity  = world.BodyMotionVelocity,
                    InputVelocities     = inputVelocities,
                    GravityAcceleration = gravityAcceleration
                };

                return(job.Schedule(world.BodyMotionCount, 64, inputDeps));
            }
        }
Пример #2
0
 // Apply gravity to all dynamic bodies and copy input velocities
 public static void ApplyGravityAndCopyInputVelocities(NativeSlice <MotionData> motionDatas, NativeSlice <MotionVelocity> motionVelocities,
                                                       NativeSlice <Velocity> inputVelocities, float3 gravityAcceleration)
 {
     for (int i = 0; i < motionDatas.Length; i++)
     {
         ApplyGravityAndCopyInputVelocitiesJob.ExecuteImpl(i, gravityAcceleration, motionDatas, motionVelocities, inputVelocities);
     }
 }
Пример #3
0
        // Schedule the job to apply gravity to all dynamic bodies and copy input velocities
        internal static JobHandle ScheduleApplyGravityAndCopyInputVelocitiesJob(ref DynamicsWorld world, NativeSlice <Velocity> inputVelocities,
                                                                                float3 gravityAcceleration, JobHandle inputDeps, int threadCountHint = 0)
        {
            var job = new ApplyGravityAndCopyInputVelocitiesJob
            {
                MotionDatas         = world.MotionDatas,
                MotionVelocities    = world.MotionVelocities,
                InputVelocities     = inputVelocities,
                GravityAcceleration = gravityAcceleration
            };

            if (threadCountHint <= 0)
            {
                return(job.Schedule(inputDeps));
            }
            else
            {
                return(job.Schedule(world.NumMotions, 64, inputDeps));
            }
        }