From f83c8260ab024a2f4f6d041a5b2606339b6f56b4 Mon Sep 17 00:00:00 2001 From: ousttrue Date: Thu, 5 Sep 2024 16:55:12 +0900 Subject: [PATCH] =?UTF-8?q?Unregister=20=E5=91=BC=E3=82=93=E3=81=A7?= =?UTF-8?q?=E3=81=AA=E3=81=8B=E3=81=A3=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SpringBoneJobs/FastSpringBoneDisposer.cs | 26 ++++++++++++++++++- Assets/VRM_Samples/SimpleViewer/ViewerUI.cs | 4 ++- 2 files changed, 28 insertions(+), 2 deletions(-) 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();