diff --git a/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneDisposer.cs b/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneDisposer.cs index f4475e4f6..2870514b9 100644 --- a/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneDisposer.cs +++ b/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneDisposer.cs @@ -12,9 +12,33 @@ namespace UniGLTF.SpringBoneJobs { private readonly List _disposables = new List(); - public void Add(IDisposable disposable) + class Disposable : IDisposable + { + Action m_onDispose; + Disposable(Action action) + { + m_onDispose = action; + } + public static IDisposable Create(Action action) + { + return new Disposable(action); + } + public void Dispose() + { + m_onDispose(); + } + } + + public FastSpringBoneDisposer Add(IDisposable disposable) { _disposables.Add(disposable); + return this; + } + + public FastSpringBoneDisposer AddAction(Action action) + { + _disposables.Add(Disposable.Create(action)); + return this; } private void OnDestroy() diff --git a/Assets/VRM_Samples/SimpleViewer/ViewerUI.cs b/Assets/VRM_Samples/SimpleViewer/ViewerUI.cs index d1e141d7e..362589693 100644 --- a/Assets/VRM_Samples/SimpleViewer/ViewerUI.cs +++ b/Assets/VRM_Samples/SimpleViewer/ViewerUI.cs @@ -395,7 +395,9 @@ namespace VRM.SimpleViewer SpringBoneJobs.FastSpringBoneService.Instance.BufferCombiner.Register(buffer); // 削除登録 - instance.Root.AddComponent().Add(buffer); + instance.Root.AddComponent() + .AddAction(()=>{ SpringBoneJobs.FastSpringBoneService.Instance.BufferCombiner.Unregister(buffer);}) + .Add(buffer); } instance.EnableUpdateWhenOffscreen();