コード例 #1
0
ファイル: Window.cs プロジェクト: snaami/xenko-1
        /// <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;
            }
            }
        }