/// <summary> /// Process events for the current window /// </summary> public virtual void ProcessEvent(SDL.SDL_Event e) { switch (e.type) { case SDL.SDL_EventType.SDL_QUIT: // When SDL sends a SDL_QUIT message, we have actually clicked on the close button. CloseActions?.Invoke(); break; case SDL.SDL_EventType.SDL_MOUSEBUTTONDOWN: PointerButtonPressActions?.Invoke(e.button); break; case SDL.SDL_EventType.SDL_MOUSEBUTTONUP: PointerButtonReleaseActions?.Invoke(e.button); break; case SDL.SDL_EventType.SDL_MOUSEMOTION: MouseMoveActions?.Invoke(e.motion); break; case SDL.SDL_EventType.SDL_MOUSEWHEEL: MouseWheelActions?.Invoke(e.wheel); break; case SDL.SDL_EventType.SDL_KEYDOWN: KeyDownActions?.Invoke(e.key); break; case SDL.SDL_EventType.SDL_KEYUP: KeyUpActions?.Invoke(e.key); break; case SDL.SDL_EventType.SDL_TEXTEDITING: TextEditingActions?.Invoke(e.edit); break; case SDL.SDL_EventType.SDL_TEXTINPUT: TextInputActions?.Invoke(e.text); break; case SDL.SDL_EventType.SDL_JOYDEVICEADDED: JoystickDeviceAdded?.Invoke(e.jdevice.which); break; case SDL.SDL_EventType.SDL_JOYDEVICEREMOVED: JoystickDeviceRemoved?.Invoke(e.jdevice.which); break; case SDL.SDL_EventType.SDL_WINDOWEVENT: { switch (e.window.windowEvent) { case SDL.SDL_WindowEventID.SDL_WINDOWEVENT_SIZE_CHANGED: ResizeBeginActions?.Invoke(e.window); break; case SDL.SDL_WindowEventID.SDL_WINDOWEVENT_RESIZED: ResizeEndActions?.Invoke(e.window); break; case SDL.SDL_WindowEventID.SDL_WINDOWEVENT_CLOSE: CloseActions?.Invoke(); break; case SDL.SDL_WindowEventID.SDL_WINDOWEVENT_SHOWN: ActivateActions?.Invoke(e.window); break; case SDL.SDL_WindowEventID.SDL_WINDOWEVENT_HIDDEN: DeActivateActions?.Invoke(e.window); break; case SDL.SDL_WindowEventID.SDL_WINDOWEVENT_MINIMIZED: MinimizedActions?.Invoke(e.window); break; case SDL.SDL_WindowEventID.SDL_WINDOWEVENT_MAXIMIZED: MaximizedActions?.Invoke(e.window); break; case SDL.SDL_WindowEventID.SDL_WINDOWEVENT_RESTORED: RestoredActions?.Invoke(e.window); break; case SDL.SDL_WindowEventID.SDL_WINDOWEVENT_ENTER: MouseEnterActions?.Invoke(e.window); break; case SDL.SDL_WindowEventID.SDL_WINDOWEVENT_LEAVE: MouseLeaveActions?.Invoke(e.window); break; case SDL.SDL_WindowEventID.SDL_WINDOWEVENT_FOCUS_GAINED: FocusGainedActions?.Invoke(e.window); break; case SDL.SDL_WindowEventID.SDL_WINDOWEVENT_FOCUS_LOST: FocusLostActions?.Invoke(e.window); break; } break; } } }