//////// OPTIONAL //////// // Processs any SDL2 events manually if required. // Return false to not allow the default event handler to process it. public bool MyEventHandler(SDL2Window _self, SDL.SDL_Event e) { // We're replacing OnEvent and thus call ImGuiSDL2CSHelper.OnEvent manually. if (!ImGuiSDL2CSHelper.HandleEvent(e, ref g_MouseWheel, g_MousePressed)) { return(false); } // Any custom event handling can happen here. return(true); }
private bool MyEventHandler(SDL2Window window, SDL.SDL_Event e) { int mouseX; int mouseY; SDL.SDL_GetMouseState(out mouseX, out mouseY); if (!ImGuiSDL2CSHelper.HandleEvent(e, ref g_MouseWheel, g_MousePressed)) { return(false); } if (e.type == SDL.SDL_EventType.SDL_MOUSEBUTTONDOWN && e.button.button == 1 & !ImGui.GetIO().WantCaptureMouse) { _state.Camera.IsGrabbingMap = true; _state.Camera.MouseFrameIncrementX = e.motion.x; _state.Camera.MouseFrameIncrementY = e.motion.y; mouseDownX = mouseX; mouseDownY = mouseY; } if (e.type == SDL.SDL_EventType.SDL_MOUSEBUTTONUP && e.button.button == 1) { _state.Camera.IsGrabbingMap = false; if (mouseDownX == mouseX && mouseDownY == mouseY) //click on map. { _state.MapClicked(_state.Camera.WorldCoordinate(mouseX, mouseY), MouseButtons.Primary); //sdl and imgu use different numbers for buttons. } } if (e.type == SDL.SDL_EventType.SDL_MOUSEBUTTONDOWN && e.button.button == 3 & !ImGui.GetIO().WantCaptureMouse) { mouseDownAltX = mouseX; mouseDownAltY = mouseY; } if (e.type == SDL.SDL_EventType.SDL_MOUSEBUTTONUP && e.button.button == 3) { _state.Camera.IsGrabbingMap = false; if (mouseDownAltX == mouseX && mouseDownAltY == mouseY) //click on map. { _state.MapClicked(_state.Camera.WorldCoordinate(mouseX, mouseY), MouseButtons.Alt); //sdl and imgu use different numbers for buttons. } } if (_state.Camera.IsGrabbingMap) { int deltaX = _state.Camera.MouseFrameIncrementX - e.motion.x; int deltaY = _state.Camera.MouseFrameIncrementY - e.motion.y; _state.Camera.WorldOffset(deltaX, deltaY); _state.Camera.MouseFrameIncrementX = e.motion.x; _state.Camera.MouseFrameIncrementY = e.motion.y; } if (e.type == SDL.SDL_EventType.SDL_KEYUP) { if (e.key.keysym.sym == SDL.SDL_Keycode.SDLK_ESCAPE) { MainMenuItems mainMenu = MainMenuItems.GetInstance(); mainMenu.IsActive = true; } } if (e.type == SDL.SDL_EventType.SDL_MOUSEWHEEL) { if (e.wheel.y > 0) { _state.Camera.ZoomIn(mouseX, mouseY); } else if (e.wheel.y < 0) { _state.Camera.ZoomOut(mouseX, mouseY); } } return(true); }