diff options
| author | Sarah B <git@sarahduck.ca> | 2024-01-20 15:28:48 -0800 |
|---|---|---|
| committer | Sarah B <git@sarahduck.ca> | 2024-01-20 15:28:48 -0800 |
| commit | 163a2f1a1076d518b04ee37911bdd40afe8b9b2c (patch) | |
| tree | d28b56d5b0b43da21dab92e61f9967e303b7d063 /Drawable.cs | |
| parent | 31d9168080e52738829b5575c66627e43a8bdc38 (diff) | |
Added finalizers
Diffstat (limited to 'Drawable.cs')
| -rw-r--r-- | Drawable.cs | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/Drawable.cs b/Drawable.cs index f01c478..67e4344 100644 --- a/Drawable.cs +++ b/Drawable.cs @@ -34,11 +34,25 @@ abstract class Drawable : IDisposable public static void DisposeAll() { foreach (Drawable drawable in Drawables.ToArray()) drawable?.Dispose(); + Drawables.Clear(); } public abstract void Draw(); public abstract void Update(float delta); - public virtual void Dispose() => Drawables.Remove(this); + bool disposed = false; + + public void Dispose() + { + if (disposed) return; + Unload(); + Drawables.Remove(this); + GC.SuppressFinalize(this); + disposed = true; + } + + protected abstract void Unload(); + + ~Drawable() => Dispose(); }
\ No newline at end of file |
