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); } } }