Replace string element render types with RenderCommandType enum, decompose UI elements (Button, CheckBox, chrome) into drawing primitives via ToPrimitives(), emit per-element commands on flush, and move composite into IRenderSource.

This commit is contained in:
Stone_Red
2026-06-16 01:11:01 +02:00
parent 1355fa06b8
commit e90e9ab163
16 changed files with 850 additions and 187 deletions
+17 -3
View File
@@ -71,7 +71,7 @@ public static class WindowManager
wasRightButtonDown = rightButtonDown;
wasMiddleButtonDown = middleButtonDown;
CanvasRenderSource.CompositeAndDisplay(canvas, pointerPosition);
renderSource.Composite();
lastPointerPosition = pointerPosition;
}
@@ -244,7 +244,7 @@ public static class WindowManager
activeInteractWindow = null;
}
renderSource.Render([new RenderCommand { WindowId = window.Id, ElementId = window.Id, ElementType = "WindowClose", Position = window.Position, Properties = new Dictionary<string, object?>() }]);
renderSource.Render([new RenderCommand { WindowId = window.Id, ElementId = window.Id, Type = RenderCommandType.DestroyWindow, Position = window.Position }]);
}
/// <summary>
@@ -300,7 +300,7 @@ public static class WindowManager
List<RenderCommand> closeCommands = [];
foreach (Window window in windowsToClose)
{
closeCommands.Add(new RenderCommand { WindowId = window.Id, ElementId = window.Id, ElementType = "WindowClose", Position = window.Position, Properties = new Dictionary<string, object?>() });
closeCommands.Add(new RenderCommand { WindowId = window.Id, ElementId = window.Id, Type = RenderCommandType.DestroyWindow, Position = window.Position });
}
renderSource.Render(closeCommands);
}
@@ -448,5 +448,19 @@ public static class WindowManager
source.Render(commands);
}
}
public void Composite()
{
List<IRenderSource> sourcesCopy;
lock (sourcesLock)
{
sourcesCopy = sources.ToList();
}
foreach (IRenderSource source in sourcesCopy)
{
source.Composite();
}
}
}
}