72 lines
2.1 KiB
C#
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
|
|
}
|