37 lines
1.1 KiB
C#
37 lines
1.1 KiB
C#
using System.Text.Json.Serialization;
|
|
using DaggerFramework.Audio;
|
|
using DaggerFramework.Rendering;
|
|
|
|
namespace DaggerFramework.SceneGraph
|
|
{
|
|
public class Entity
|
|
{
|
|
[JsonIgnore] public EntityLayer? Layer { get; set; }
|
|
[JsonIgnore] public InputHandler Input => Layer!.Scene.Input;
|
|
[JsonIgnore] public AudioBackend Audio => Layer!.Scene.Audio;
|
|
[JsonIgnore] 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);
|
|
}
|
|
}
|
|
|
|
[JsonSourceGenerationOptions(WriteIndented = true)]
|
|
[JsonSerializable(typeof(Entity))]
|
|
internal partial class EntitySourceGenerationContext : JsonSerializerContext
|
|
{
|
|
|
|
}
|
|
} |