using System; using System.Collections.Generic; using UnityEngine; namespace UniGLTF.SpringBoneJobs { /// /// FastSpringBoneに関連して、特定のGameObjectと紐付いたIDisposableの破棄を担当するクラス /// public sealed class FastSpringBoneDisposer : MonoBehaviour { private readonly List _disposables = new List(); 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() { foreach (var disposable in _disposables) { disposable.Dispose(); } } } }