// 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)); } }
// 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)); } }