Update README.md to include project description, developer documentation links, and license information.
CI / build-test (push) Successful in 1m6s
CI / build-test (push) Successful in 1m6s
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
using Friflo.Engine.ECS.Systems;
|
||||
|
||||
namespace MrGameEng.Graphics;
|
||||
|
||||
/// <summary>
|
||||
/// First draw system: finds the active camera entity (the first one with a <see cref="Camera"/>
|
||||
/// component) and begins the renderer frame. Without a camera entity a default camera showing
|
||||
/// world origin at the top-left corner is used.
|
||||
/// </summary>
|
||||
public sealed class CameraSystem : QuerySystem<Camera>
|
||||
{
|
||||
private readonly Renderer2D _renderer;
|
||||
|
||||
/// <summary>Creates the system for <paramref name="renderer"/>.</summary>
|
||||
public CameraSystem(Renderer2D renderer) => _renderer = renderer;
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void OnUpdate()
|
||||
{
|
||||
foreach (var (cameras, _) in Query.Chunks)
|
||||
{
|
||||
if (cameras.Length > 0)
|
||||
{
|
||||
_renderer.BeginFrame(in cameras.Span[0]);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
_renderer.BeginFrameWithDefaultCamera();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Submits every entity that has both <see cref="Sprite"/> and <see cref="Transform2D"/>.</summary>
|
||||
public sealed class SpriteRenderSystem : QuerySystem<Sprite, Transform2D>
|
||||
{
|
||||
private readonly Renderer2D _renderer;
|
||||
|
||||
/// <summary>Creates the system for <paramref name="renderer"/>.</summary>
|
||||
public SpriteRenderSystem(Renderer2D renderer) => _renderer = renderer;
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void OnUpdate()
|
||||
{
|
||||
foreach (var (sprites, transforms, _) in Query.Chunks)
|
||||
{
|
||||
var s = sprites.Span;
|
||||
var t = transforms.Span;
|
||||
for (var i = 0; i < s.Length; i++)
|
||||
{
|
||||
_renderer.Submit(in t[i], in s[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Last draw system: sorts the frame and issues the draw calls.</summary>
|
||||
public sealed class RenderFlushSystem : BaseSystem
|
||||
{
|
||||
private readonly Renderer2D _renderer;
|
||||
|
||||
/// <summary>Creates the system for <paramref name="renderer"/>.</summary>
|
||||
public RenderFlushSystem(Renderer2D renderer) => _renderer = renderer;
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void OnUpdateGroup() => _renderer.EndFrame();
|
||||
}
|
||||
Reference in New Issue
Block a user