using DaggerFramework.Resources; using DaggerFramework.Rendering; namespace DaggerFramework.SceneGraph { public abstract class Layer : IDrawable { public Scene? Scene { get; set; } public InputHandler? Input { get; set; } public ResourceManager ResourceManager => Scene!.ResourceManager; public void BeginDraw(Renderer renderer) => OnBeginDraw(renderer); public void Draw(Renderer renderer) => OnDraw(renderer); public void EndDraw(Renderer renderer) => OnEndDraw(renderer); public void Start() => OnStart(); public void Update(double dt) => OnUpdate(dt); public void ReceiveInput(InputHandler input) => OnInput(input); protected virtual void OnStart() { } protected virtual void OnUpdate(double dt) { } protected virtual void OnInput(InputHandler input) { } protected abstract void OnBeginDraw(Renderer renderer); protected abstract void OnDraw(Renderer renderer); protected abstract void OnEndDraw(Renderer renderer); } }