diff --git a/Assets/VRM10/Runtime/FastSpringBone/System/FastSpringBoneScheduler.cs b/Assets/VRM10/Runtime/FastSpringBone/System/FastSpringBoneScheduler.cs index c5079cfc0..014de66b6 100644 --- a/Assets/VRM10/Runtime/FastSpringBone/System/FastSpringBoneScheduler.cs +++ b/Assets/VRM10/Runtime/FastSpringBone/System/FastSpringBoneScheduler.cs @@ -13,21 +13,29 @@ namespace UniVRM10.FastSpringBones.System _bufferCombiner = bufferCombiner; } + /// + /// SpringBone の依存関係のある Job を直列にスケジュールする + /// + /// 1. ReconstructIfDirty + /// 2. PullTransformJob + /// 3. UpdateFastSpringBoneJob + /// 4. PushTransformJob + /// + /// public JobHandle Schedule() { - var handle = default(JobHandle); - handle = _bufferCombiner.ReconstructIfDirty(handle); + var handle0 = _bufferCombiner.ReconstructIfDirty(default); if (!_bufferCombiner.HasBuffer) { - return handle; + return handle0; } - - handle = new PullTransformJob - { - Transforms = _bufferCombiner.Transforms - }.Schedule(_bufferCombiner.TransformAccessArray, handle); - - handle = new UpdateFastSpringBoneJob + + var handle1 = new PullTransformJob + { + Transforms = _bufferCombiner.Transforms + }.Schedule(_bufferCombiner.TransformAccessArray, handle0); + + var handle2 = new UpdateFastSpringBoneJob { Colliders = _bufferCombiner.Colliders, Joints = _bufferCombiner.Joints, @@ -35,14 +43,14 @@ namespace UniVRM10.FastSpringBones.System Springs = _bufferCombiner.Springs, Transforms = _bufferCombiner.Transforms, DeltaTime = Time.deltaTime, - }.Schedule(_bufferCombiner.Springs.Length, 1, handle); + }.Schedule(_bufferCombiner.Springs.Length, 1, handle1); - handle = new PushTransformJob - { - Transforms = _bufferCombiner.Transforms - }.Schedule(_bufferCombiner.TransformAccessArray, handle); + var handle3 = new PushTransformJob + { + Transforms = _bufferCombiner.Transforms + }.Schedule(_bufferCombiner.TransformAccessArray, handle2); - return handle; + return handle3; } public void Dispose()