diff --git a/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneScheduler.cs b/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneScheduler.cs index 9a27260d9..637f8b1e5 100644 --- a/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneScheduler.cs +++ b/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneScheduler.cs @@ -18,9 +18,13 @@ namespace UniGLTF.SpringBoneJobs _bufferCombiner.Dispose(); } - public JobHandle Schedule(float deltaTime) + public JobHandle Schedule(float deltaTime, JobHandle? dependency = null) { var handle = _bufferCombiner.ReconstructIfDirty(default); + if(dependency.HasValue) + { + handle = JobHandle.CombineDependencies(handle, dependency.Value); + } if (!_bufferCombiner.HasBuffer) { return handle; diff --git a/Assets/VRM10/Runtime/FastSpringBone/FastSpringBoneService.cs b/Assets/VRM10/Runtime/FastSpringBone/FastSpringBoneService.cs index 51a76d887..45be4e92d 100644 --- a/Assets/VRM10/Runtime/FastSpringBone/FastSpringBoneService.cs +++ b/Assets/VRM10/Runtime/FastSpringBone/FastSpringBoneService.cs @@ -1,4 +1,5 @@ using UniGLTF.SpringBoneJobs; +using Unity.Jobs; using UnityEngine; namespace UniVRM10.FastSpringBones @@ -95,12 +96,17 @@ namespace UniVRM10.FastSpringBones } public void ManualUpdate(float deltaTime) + { + ManualUpdate(deltaTime, null).Complete(); + } + + public JobHandle ManualUpdate(in float deltaTime, in JobHandle? dependency = null) { if (UpdateType != UpdateTypes.Manual) { throw new global::System.ArgumentException("require UpdateTypes.Manual"); } - _fastSpringBoneScheduler.Schedule(deltaTime).Complete(); + return _fastSpringBoneScheduler.Schedule(deltaTime, dependency); } public void OnDrawGizmosSelected()