using System;
namespace SharpGLTF.Runtime
{
///
/// A wrapper that contains an object with disposable resources.
///
///
public class MonoGameDeviceContent : IDisposable
where T:class
{
#region lifecycle
internal MonoGameDeviceContent(T instance, IDisposable[] disposables)
{
_Instance = instance;
_Disposables = disposables;
}
public void Dispose()
{
_Instance = null;
if (_Disposables == null) return;
foreach (var d in _Disposables) d.Dispose();
_Disposables = null;
}
~MonoGameDeviceContent()
{
System.Diagnostics.Debug.Assert(_Disposables == null, "Not disposed correctly");
}
#endregion
#region data
///
/// The actual object.
///
private T _Instance;
///
/// The disposable resources associated with .
///
private IDisposable[] _Disposables;
#endregion
#region properties
public static implicit operator T(MonoGameDeviceContent value) { return value?.Instance; }
public T Instance => _Instance;
#endregion
}
}