public bool ImGuiOnEvent(OpenTKWindow window, TKEvent e) => ImGuiOpenTKHelper.HandleEvent(e);
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); }