summaryrefslogtreecommitdiff
path: root/Drawable.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Drawable.cs')
-rw-r--r--Drawable.cs8
1 files changed, 6 insertions, 2 deletions
diff --git a/Drawable.cs b/Drawable.cs
index 0f74a1c..f01c478 100644
--- a/Drawable.cs
+++ b/Drawable.cs
@@ -6,6 +6,7 @@ namespace OnekoOnline;
abstract class Drawable : IDisposable
{
protected int DrawOrder = 0;
+ public bool Visible = true;
public Vector2 Position {
get => _position;
@@ -16,13 +17,16 @@ abstract class Drawable : IDisposable
public Vector2 Size;
public float Rotation = 0f;
- public static readonly List<Drawable> Drawables = [];
+ public static readonly HashSet<Drawable> Drawables = [];
+
+ public Drawable() => Drawables.Add(this);
public static void DrawAll()
{
float delta = Raylib.GetFrameTime();
foreach (Drawable drawable in Drawables.OrderBy(d => d.Position.Y + d.DrawOrder*1000)) {
drawable?.Update(delta);
+ if (drawable == null || !drawable.Visible) continue;
drawable?.Draw();
}
}
@@ -36,5 +40,5 @@ abstract class Drawable : IDisposable
public abstract void Update(float delta);
- public abstract void Dispose();
+ public virtual void Dispose() => Drawables.Remove(this);
} \ No newline at end of file