Files
Voile/DaggerFramework/Source/SceneGraph/Layer.cs

28 lines
1.1 KiB
C#

using DaggerFramework.Resources;
using DaggerFramework.Rendering;
using System.Text.Json.Serialization;
namespace DaggerFramework.SceneGraph
{
public abstract class Layer : IDrawable
{
[JsonIgnore] public Scene? Scene { get; set; }
[JsonIgnore] public InputHandler? Input { get; set; }
[JsonIgnore] 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);
}
}