Files

72 lines
2.1 KiB
C#

using Engine.Core;
namespace Engine.Integration.SDL3;
public interface IWindow : IBehaviour
{
Event<IWindow, StateChangedArguments> OnStateChanged { get; }
Event<IWindow, FocusStateChangedArguments> OnFocusStateChanged { get; }
Event<IWindow, ModeChangedArguments> OnModeChanged { get; }
Event<IWindow, ShowStateChangedArguments> OnShowStateChanged { get; }
Event<IWindow, ResizeModeChangedArguments> OnResizeModeChanged { get; }
Event<IWindow, TitleChangedArguments> OnTitleChanged { get; }
Event<IWindow, TargetFpsChangedArguments> OnTargetFpsChanged { get; }
Event<IWindow, SizeChangedArguments> OnSizeChanged { get; }
Event<IWindow, BackgroundColorChangedArguments> OnBackgroundColorChanged { get; }
WindowState State { get; set; }
WindowFocusState FocusState { get; }
WindowMode Mode { get; set; }
WindowShowState ShowState { get; set; }
WindowResizeMode ResizeMode { get; set; }
string Title { get; set; }
Vector2DInt Size { get; set; }
ColorRGB BackgroundColor { get; set; }
readonly record struct StateChangedArguments(WindowState PreviousState);
readonly record struct FocusStateChangedArguments(WindowFocusState PreviousFocusState);
readonly record struct ModeChangedArguments(WindowMode PreviousMode);
readonly record struct ShowStateChangedArguments(WindowShowState PreviousShowState);
readonly record struct ResizeModeChangedArguments(WindowResizeMode PreviousResizeMode);
readonly record struct TitleChangedArguments(string PreviousTitle);
readonly record struct TargetFpsChangedArguments(uint PreviousTargetFps);
readonly record struct SizeChangedArguments(Vector2DInt PreviousSize);
readonly record struct BackgroundColorChangedArguments(ColorRGB PreviousColor);
}
public enum WindowFocusState
{
Focused,
Unfocused
}
public enum WindowState
{
Open,
Closed
}
public enum WindowMode
{
Windowed,
Fullscreen,
BorderlessFullscreen,
BorderlessWindowed
}
public enum WindowShowState
{
Normal,
Minimized,
Maximized
}
public enum WindowResizeMode
{
Fixed,
Resizable,
AspectLocked
}