示例#1
0
 public bool ImGuiOnEvent(OpenTKWindow window, TKEvent e)
 => ImGuiOpenTKHelper.HandleEvent(e);
示例#2
0
        public static bool HandleEvent(TKEvent tKEvent)
        {
            IO io = ImGui.GetIO();

            switch (tKEvent.EventType)
            {
            case TKEventType.Keyboard:
                var KeyboardEvent = tKEvent as KeyboardEvent;
                switch (KeyboardEvent.Key)
                {
                case Key.ControlLeft:
                case Key.ControlRight:
                    io.CtrlPressed = KeyboardEvent.IsKeyDown;
                    break;

                case Key.ShiftLeft:
                case Key.ShiftRight:
                    io.ShiftPressed = KeyboardEvent.IsKeyDown;
                    break;

                case Key.AltLeft:
                case Key.AltRight:
                    io.AltPressed = KeyboardEvent.IsKeyDown;
                    break;

                default:
                    io.KeysDown[(int)KeyboardEvent.Key] = KeyboardEvent.IsKeyDown;
                    break;
                }
                break;

            case TKEventType.MouseButton:
                var MouseButton = tKEvent as MouseButtonEvent;
                switch (MouseButton.Button)
                {
                case OpenTK.Input.MouseButton.Left:
                    io.MouseDown[0] = MouseButton.IsButtonDown;
                    break;

                case OpenTK.Input.MouseButton.Right:
                    io.MouseDown[1] = MouseButton.IsButtonDown;
                    break;

                case OpenTK.Input.MouseButton.Middle:
                    io.MouseDown[2] = MouseButton.IsButtonDown;
                    break;
                }
                break;

            case TKEventType.MouseWheel:
                var MouseWheel = tKEvent as MouseWheelEvent;
                io.MouseWheel = MouseWheel.Value;
                break;

            case TKEventType.MouseMotion:
                var MouseMotion = tKEvent as MouseMotionEvent;
                io.MousePosition = new System.Numerics.Vector2(MouseMotion.Position.X / io.DisplayFramebufferScale.X, MouseMotion.Position.Y / io.DisplayFramebufferScale.Y);
                break;

            case TKEventType.TextInput:
                var TextEvent = tKEvent as TextInputEvent;
                unsafe
                {
                    ImGuiNative.ImGuiIO_AddInputCharacter(TextEvent.Char);
                }
                break;
            }


            /*switch (mouse.GetState) {
             *   case SDL.SDL_EventType.SDL_MOUSEWHEEL:
             *       if (e.wheel.y > 0)
             *           mouseWheel = 1;
             *       if (e.wheel.y < 0)
             *           mouseWheel = -1;
             *       return true;
             *   case SDL.SDL_EventType.SDL_MOUSEBUTTONDOWN:
             *       if (mousePressed == null)
             *           return true;
             *       if (e.button.button == SDL.SDL_BUTTON_LEFT && mousePressed.Length > 0)
             *           mousePressed[0] = true;
             *       if (e.button.button == SDL.SDL_BUTTON_RIGHT && mousePressed.Length > 1)
             *           mousePressed[1] = true;
             *       if (e.button.button == SDL.SDL_BUTTON_MIDDLE && mousePressed.Length > 2)
             *           mousePressed[2] = true;
             *       return true;
             *   case SDL.SDL_EventType.SDL_TEXTINPUT:
             *       unsafe
             *       {
             *           // THIS IS THE ONLY UNSAFE THING LEFT!
             *           ImGui.AddInputCharactersUTF8(e.text.text);
             *       }
             *       return true;
             *   case SDL.SDL_EventType.SDL_KEYDOWN:
             *   case SDL.SDL_EventType.SDL_KEYUP:
             *       int key = (int) e.key.keysym.sym & ~SDL.SDLK_SCANCODE_MASK;
             *       io.KeysDown[key] = e.type == SDL.SDL_EventType.SDL_KEYDOWN;
             *       SDL.SDL_Keymod keyModState = SDL.SDL_GetModState();
             *       io.ShiftPressed = (keyModState & SDL.SDL_Keymod.KMOD_SHIFT) != 0;
             *       io.CtrlPressed = (keyModState & SDL.SDL_Keymod.KMOD_CTRL) != 0;
             *       io.AltPressed = (keyModState & SDL.SDL_Keymod.KMOD_ALT) != 0;
             *       io.SuperPressed = (keyModState & SDL.SDL_Keymod.KMOD_GUI) != 0;
             *       return true;
             * }
             */
            return(true);
        }