using DaggerFramework.Audio; using DaggerFramework.Rendering; namespace DaggerFramework.SceneGraph { public class Entity { public EntityLayer? Layer { get; set; } public InputHandler Input => Layer!.Scene.Input; public AudioBackend Audio => Layer!.Scene.Audio; public Renderer Renderer => Layer!.Scene.Renderer; public int Id { get; set; } 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 OnDestroy() { } protected virtual void OnUpdate(double dt) { } protected virtual void OnInput(InputHandler input) { } public void Destroy() { OnDestroy(); Layer?.DestroyEntity(Id); } } }