From 66716a84b01e241fae9cdddc3f164eef7e089d91 Mon Sep 17 00:00:00 2001 From: T-Kuhn Date: Mon, 21 Nov 2022 16:59:20 +0900 Subject: [PATCH] added frame dispersion to animationImporterUtil --- .../Runtime/UniGLTF/IO/AnimationIO/AnimationImporterUtil.cs | 5 ++++- Assets/UniGLTF/Runtime/UniGLTF/IO/ImporterContext.cs | 5 +---- 2 files changed, 5 insertions(+), 5 deletions(-) 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();