diff --git a/src/Game.cs b/src/Game.cs index b8d3b5e..b148d44 100644 --- a/src/Game.cs +++ b/src/Game.cs @@ -232,7 +232,7 @@ namespace MoonWorks if (evt.window.windowEvent == SDL.SDL_WindowEventID.SDL_WINDOWEVENT_SIZE_CHANGED) { var window = Window.Lookup(evt.window.windowID); - window.SizeChanged((uint) evt.window.data1, (uint) evt.window.data2); + window.HandleSizeChange((uint) evt.window.data1, (uint) evt.window.data2); } else if (evt.window.windowEvent == SDL.SDL_WindowEventID.SDL_WINDOWEVENT_CLOSE) { diff --git a/src/Window.cs b/src/Window.cs index a78eb8c..65175d0 100644 --- a/src/Window.cs +++ b/src/Window.cs @@ -18,13 +18,15 @@ namespace MoonWorks private static Dictionary idLookup = new Dictionary(); + private System.Action SizeChangeCallback = null; + public Window(WindowCreateInfo windowCreateInfo, SDL.SDL_WindowFlags flags) { if (windowCreateInfo.ScreenMode == ScreenMode.Fullscreen) { flags |= SDL.SDL_WindowFlags.SDL_WINDOW_FULLSCREEN; } - else if (windowCreateInfo.ScreenMode == ScreenMode.BorderlessWindow) + else if (windowCreateInfo.ScreenMode == ScreenMode.BorderlessFullscreen) { flags |= SDL.SDL_WindowFlags.SDL_WINDOW_FULLSCREEN_DESKTOP; } @@ -56,7 +58,7 @@ namespace MoonWorks idLookup.Add(SDL.SDL_GetWindowID(Handle), this); } - public void ChangeScreenMode(ScreenMode screenMode) + public void SetScreenMode(ScreenMode screenMode) { SDL.SDL_WindowFlags windowFlag = 0; @@ -64,7 +66,7 @@ namespace MoonWorks { windowFlag = SDL.SDL_WindowFlags.SDL_WINDOW_FULLSCREEN; } - else if (screenMode == ScreenMode.BorderlessWindow) + else if (screenMode == ScreenMode.BorderlessFullscreen) { windowFlag = SDL.SDL_WindowFlags.SDL_WINDOW_FULLSCREEN_DESKTOP; } @@ -97,10 +99,20 @@ namespace MoonWorks SDL.SDL_ShowWindow(Handle); } - internal void SizeChanged(uint width, uint height) + internal void HandleSizeChange(uint width, uint height) { Width = width; Height = height; + + if (SizeChangeCallback != null) + { + SizeChangeCallback(width, height); + } + } + + public void RegisterSizeChangeCallback(System.Action sizeChangeCallback) + { + SizeChangeCallback = sizeChangeCallback; } protected virtual void Dispose(bool disposing)