UI WIP
This commit is contained in:
54
DaggerFramework/Source/UI/UIElement.cs
Normal file
54
DaggerFramework/Source/UI/UIElement.cs
Normal file
@@ -0,0 +1,54 @@
|
||||
using System.Numerics;
|
||||
using DaggerFramework.Rendering;
|
||||
using DaggerFramework.Utils;
|
||||
|
||||
namespace DaggerFramework.UI;
|
||||
|
||||
public abstract class UIElement
|
||||
{
|
||||
public Rect Rect { get; set; } = new Rect();
|
||||
public SizeFlags VerticalSizeFlags { get; set; } = SizeFlags.Fill;
|
||||
public SizeFlags HorizontalSizeFlags { get; set; } = SizeFlags.Fill;
|
||||
|
||||
public Vector2 ExpandRatio { get; set; } = Vector2.One;
|
||||
|
||||
public UIElement()
|
||||
{
|
||||
children = new();
|
||||
}
|
||||
|
||||
public void AddChild(UIElement child)
|
||||
{
|
||||
children.Add(child);
|
||||
child.parent = this;
|
||||
}
|
||||
|
||||
public void Render(Renderer renderer)
|
||||
{
|
||||
renderer.SetTransform(Rect.Position, Vector2.Zero, 0);
|
||||
OnRender(renderer);
|
||||
|
||||
foreach (UIElement child in children)
|
||||
{
|
||||
renderer.SetTransform(child.Rect.Position, Vector2.Zero, 0);
|
||||
child.Render(renderer);
|
||||
}
|
||||
}
|
||||
|
||||
protected abstract void OnRender(Renderer renderer);
|
||||
|
||||
protected List<UIElement> children;
|
||||
protected UIElement? parent;
|
||||
|
||||
private Logger _logger = new(nameof(UIElement));
|
||||
}
|
||||
|
||||
|
||||
[Flags]
|
||||
public enum SizeFlags
|
||||
{
|
||||
ShrinkBegin,
|
||||
ShrinkCenter,
|
||||
ShrinkEnd,
|
||||
Fill
|
||||
}
|
||||
Reference in New Issue
Block a user