Nullable fixes, use Texture2d resource for rendering directly.
This commit is contained in:
@@ -5,10 +5,10 @@ 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 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();
|
||||
|
||||
@@ -8,19 +8,28 @@ namespace DaggerFramework.SceneGraph
|
||||
public class Particles2d : Drawable2d
|
||||
{
|
||||
public int MaxParticles => _maxParticles;
|
||||
public ParticleSettings Settings => _settings;
|
||||
|
||||
public void BeginEmit(ParticleSettings settings)
|
||||
public Particles2d(ParticleSettings settings)
|
||||
{
|
||||
_settings = settings;
|
||||
_maxParticles = _settings.MaxParticles;
|
||||
_particleIndex = _maxParticles - 1;
|
||||
InitializeParticles();
|
||||
|
||||
_particles = new Particle[_maxParticles];
|
||||
}
|
||||
|
||||
public void Restart()
|
||||
{
|
||||
CleanupParticles();
|
||||
InitializeParticles();
|
||||
|
||||
// Allocate a new particle array if max particles property got changed.
|
||||
if (_maxParticles != _settings.MaxParticles)
|
||||
{
|
||||
_particles = new Particle[_maxParticles];
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnDraw(Renderer renderer)
|
||||
{
|
||||
foreach (var particle in _particles)
|
||||
@@ -72,11 +81,6 @@ namespace DaggerFramework.SceneGraph
|
||||
}
|
||||
}
|
||||
|
||||
private void InitializeParticles()
|
||||
{
|
||||
_particles = new Particle[_maxParticles];
|
||||
}
|
||||
|
||||
private void Emit()
|
||||
{
|
||||
Particle particle = _particles[_particleIndex];
|
||||
|
||||
@@ -6,20 +6,18 @@ namespace DaggerFramework.SceneGraph
|
||||
{
|
||||
public class Sprite2d : Drawable2d
|
||||
{
|
||||
public Texture2d Texture { get => _texture; set => _texture = value; }
|
||||
public Texture2d Texture { get => _texture ?? Texture2d.Empty; set => _texture = value; }
|
||||
|
||||
protected override void OnStart()
|
||||
{
|
||||
var renderer = Layer.Scene.Renderer;
|
||||
_texId = renderer.LoadTexture(_texture);
|
||||
}
|
||||
|
||||
public override void OnDraw(Renderer renderer)
|
||||
{
|
||||
renderer.DrawTexture(_texId, Color.White);
|
||||
renderer.DrawTexture(_texture!, Color.White);
|
||||
}
|
||||
|
||||
private Texture2d _texture;
|
||||
private int _texId;
|
||||
private Texture2d? _texture;
|
||||
}
|
||||
}
|
||||
@@ -5,9 +5,9 @@ namespace DaggerFramework.SceneGraph
|
||||
{
|
||||
public abstract class Layer : IDrawable
|
||||
{
|
||||
public Scene Scene { get; set; }
|
||||
public InputHandler Input { get; set; }
|
||||
public ResourceManager ResourceManager => Scene.ResourceManager;
|
||||
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);
|
||||
|
||||
@@ -9,8 +9,8 @@ namespace DaggerFramework.SceneGraph
|
||||
public class Scene : IMainLoop
|
||||
{
|
||||
public Renderer Renderer { get => _renderer; set => _renderer = value; }
|
||||
public InputHandler Input { get => _input; set => _input = value; }
|
||||
public AudioBackend Audio => _audioBackend;
|
||||
public InputHandler? Input { get => _input; set => _input = value; }
|
||||
public AudioBackend? Audio => _audioBackend;
|
||||
public ResourceManager ResourceManager => _resourceManager;
|
||||
|
||||
public double DeltaTime => _renderer.FrameTime;
|
||||
@@ -26,9 +26,10 @@ namespace DaggerFramework.SceneGraph
|
||||
_layers = new Dictionary<string, Layer>();
|
||||
}
|
||||
|
||||
public Scene(Renderer renderer)
|
||||
public Scene(Renderer renderer, ResourceManager resourceManager)
|
||||
{
|
||||
_renderer = renderer;
|
||||
_resourceManager = resourceManager;
|
||||
}
|
||||
|
||||
public void Init() => SetupRenderer();
|
||||
@@ -36,7 +37,11 @@ namespace DaggerFramework.SceneGraph
|
||||
{
|
||||
foreach (var layer in _layers.Values)
|
||||
{
|
||||
layer.Input = _input;
|
||||
if (_input is not null)
|
||||
{
|
||||
layer.Input = _input;
|
||||
}
|
||||
|
||||
layer.Start();
|
||||
}
|
||||
}
|
||||
@@ -48,7 +53,7 @@ namespace DaggerFramework.SceneGraph
|
||||
layer.Value.Update(DeltaTime);
|
||||
}
|
||||
|
||||
Audio.Update();
|
||||
Audio?.Update();
|
||||
}
|
||||
|
||||
public void AddLayer(string name, Layer layer)
|
||||
@@ -84,10 +89,10 @@ namespace DaggerFramework.SceneGraph
|
||||
Renderer.Initialize(new RendererSettings { Msaa = Msaa.Msaa4x, UseVSync = true });
|
||||
}
|
||||
|
||||
private Dictionary<string, Layer> _layers;
|
||||
private Dictionary<string, Layer> _layers = new();
|
||||
private Renderer _renderer;
|
||||
private AudioBackend _audioBackend;
|
||||
private InputHandler _input;
|
||||
private AudioBackend? _audioBackend;
|
||||
private InputHandler? _input;
|
||||
private ResourceManager _resourceManager;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user