summaryrefslogtreecommitdiff
path: root/Drawable.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Drawable.cs')
-rw-r--r--Drawable.cs16
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