mirror of
https://github.com/vrm-c/UniVRM.git
synced 2026-05-14 14:29:52 -05:00
52 lines
1.3 KiB
C#
52 lines
1.3 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
|
|
namespace UniGLTF.SpringBoneJobs
|
|
{
|
|
/// <summary>
|
|
/// FastSpringBoneに関連して、特定のGameObjectと紐付いたIDisposableの破棄を担当するクラス
|
|
/// </summary>
|
|
public sealed class FastSpringBoneDisposer : MonoBehaviour
|
|
{
|
|
private readonly List<IDisposable> _disposables = new List<IDisposable>();
|
|
|
|
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();
|
|
}
|
|
}
|
|
}
|
|
} |