|
|
|
using System.Drawing;
|
|
|
|
using gaemstone.ECS;
|
|
|
|
using gaemstone.Flecs;
|
|
|
|
using Silk.NET.OpenGL;
|
|
|
|
using Silk.NET.Windowing;
|
|
|
|
|
|
|
|
namespace gaemstone.Client.Systems;
|
|
|
|
|
|
|
|
[Module]
|
|
|
|
public class Windowing
|
|
|
|
{
|
|
|
|
[Component]
|
|
|
|
public class Canvas
|
|
|
|
{
|
|
|
|
public GL GL { get; }
|
|
|
|
public Canvas(GL gl) => GL = gl;
|
|
|
|
|
|
|
|
public Size Size { get; set; }
|
|
|
|
public Color BackgroundColor { get; set; }
|
|
|
|
}
|
|
|
|
|
|
|
|
[Component]
|
|
|
|
public class GameWindow
|
|
|
|
{
|
|
|
|
public IWindow Handle { get; }
|
|
|
|
public GameWindow(IWindow handle) => Handle = handle;
|
|
|
|
}
|
|
|
|
|
|
|
|
[System<SystemPhase.PreFrame>]
|
|
|
|
public static void ProcessWindow(GameWindow window, Canvas canvas)
|
|
|
|
{
|
|
|
|
canvas.Size = new(window.Handle.Size.X, window.Handle.Size.Y);
|
|
|
|
window.Handle.DoEvents();
|
|
|
|
}
|
|
|
|
}
|