diff options
Diffstat (limited to 'Drawable.cs')
| -rw-r--r-- | Drawable.cs | 8 |
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 |
