diff --git a/Assets/UniGLTF/Runtime/UniGLTF/IO/AnimationIO/AnimationImporterUtil.cs b/Assets/UniGLTF/Runtime/UniGLTF/IO/AnimationIO/AnimationImporterUtil.cs index 8c38c23a3..8a0cd3d23 100644 --- a/Assets/UniGLTF/Runtime/UniGLTF/IO/AnimationIO/AnimationImporterUtil.cs +++ b/Assets/UniGLTF/Runtime/UniGLTF/IO/AnimationIO/AnimationImporterUtil.cs @@ -1,7 +1,9 @@ using System; using System.Linq; using System.Collections.Generic; +using System.Threading.Tasks; using UnityEngine; +using VRMShaders; namespace UniGLTF { @@ -185,7 +187,7 @@ namespace UniGLTF return string.Join("/", path); } - public static AnimationClip ConvertAnimationClip(GltfData data, glTFAnimation animation, IAxisInverter inverter, glTFNode root = null) + public static async Task ConvertAnimationClip(GltfData data, glTFAnimation animation, IAxisInverter inverter, IAwaitCaller awaitCaller, glTFNode root = null) { var clip = new AnimationClip(); clip.ClearCurves(); @@ -309,6 +311,7 @@ namespace UniGLTF Debug.LogWarningFormat("unknown path: {0}", channel.target.path); break; } + await awaitCaller.NextFrameIfTimedOut(); } return clip; } diff --git a/Assets/UniGLTF/Runtime/UniGLTF/IO/ImporterContext.cs b/Assets/UniGLTF/Runtime/UniGLTF/IO/ImporterContext.cs index 23aba44ba..9061838fd 100644 --- a/Assets/UniGLTF/Runtime/UniGLTF/IO/ImporterContext.cs +++ b/Assets/UniGLTF/Runtime/UniGLTF/IO/ImporterContext.cs @@ -136,10 +136,7 @@ namespace UniGLTF foreach (var (key, gltfAnimation) in Enumerable.Zip(AnimationImporterUtil.EnumerateSubAssetKeys(GLTF), GLTF.animations, (x, y) => (x, y))) { await AnimationClipFactory.LoadAnimationClipAsync(key, () => - { - var clip = AnimationImporterUtil.ConvertAnimationClip(Data, gltfAnimation, InvertAxis.Create()); - return Task.FromResult(clip); - }); + AnimationImporterUtil.ConvertAnimationClip(Data, gltfAnimation, InvertAxis.Create(), awaitCaller)); } await awaitCaller.NextFrame();