Refactor input handling in Controller: Remove unused key events, streamline window size handling, and improve event processing for better performance and clarity
This commit is contained in:
@@ -59,19 +59,6 @@ void HandleKeyDown(SDL_Event &event, editor::EditorManager &editor) {
|
|||||||
io.KeySuper = ((SDL_GetModState() & KMOD_GUI) != 0);
|
io.KeySuper = ((SDL_GetModState() & KMOD_GUI) != 0);
|
||||||
|
|
||||||
switch (event.key.keysym.sym) {
|
switch (event.key.keysym.sym) {
|
||||||
case SDLK_BACKSPACE:
|
|
||||||
io.AddKeyEvent(ImGuiKey_Backspace, true);
|
|
||||||
break;
|
|
||||||
case SDLK_LSHIFT:
|
|
||||||
io.AddKeyEvent(ImGuiKey_LeftShift, true);
|
|
||||||
break;
|
|
||||||
case SDLK_LCTRL:
|
|
||||||
case SDLK_RCTRL:
|
|
||||||
io.AddKeyEvent(ImGuiKey_LeftCtrl, true);
|
|
||||||
break;
|
|
||||||
case SDLK_TAB:
|
|
||||||
io.AddKeyEvent(ImGuiKey_Tab, true);
|
|
||||||
break;
|
|
||||||
case SDLK_z:
|
case SDLK_z:
|
||||||
editor.emulator().snes().SetButtonState(1, 0, true);
|
editor.emulator().snes().SetButtonState(1, 0, true);
|
||||||
break;
|
break;
|
||||||
@@ -122,19 +109,6 @@ void HandleKeyUp(SDL_Event &event, editor::EditorManager &editor) {
|
|||||||
io.KeySuper = ((SDL_GetModState() & KMOD_GUI) != 0);
|
io.KeySuper = ((SDL_GetModState() & KMOD_GUI) != 0);
|
||||||
|
|
||||||
switch (event.key.keysym.sym) {
|
switch (event.key.keysym.sym) {
|
||||||
case SDLK_BACKSPACE:
|
|
||||||
io.AddKeyEvent(ImGuiKey_Backspace, false);
|
|
||||||
break;
|
|
||||||
case SDLK_LSHIFT:
|
|
||||||
io.AddKeyEvent(ImGuiKey_LeftShift, false);
|
|
||||||
break;
|
|
||||||
case SDLK_LCTRL:
|
|
||||||
case SDLK_RCTRL:
|
|
||||||
io.AddKeyEvent(ImGuiKey_LeftCtrl, false);
|
|
||||||
break;
|
|
||||||
case SDLK_TAB:
|
|
||||||
io.AddKeyEvent(ImGuiKey_Tab, false);
|
|
||||||
break;
|
|
||||||
case SDLK_z:
|
case SDLK_z:
|
||||||
editor.emulator().snes().SetButtonState(1, 0, false);
|
editor.emulator().snes().SetButtonState(1, 0, false);
|
||||||
break;
|
break;
|
||||||
@@ -176,12 +150,6 @@ void HandleKeyUp(SDL_Event &event, editor::EditorManager &editor) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ChangeWindowSizeEvent(SDL_Event &event) {
|
|
||||||
ImGuiIO &io = ImGui::GetIO();
|
|
||||||
io.DisplaySize.x = static_cast<float>(event.window.data1);
|
|
||||||
io.DisplaySize.y = static_cast<float>(event.window.data2);
|
|
||||||
}
|
|
||||||
|
|
||||||
void HandleMouseMovement(int &wheel) {
|
void HandleMouseMovement(int &wheel) {
|
||||||
ImGuiIO &io = ImGui::GetIO();
|
ImGuiIO &io = ImGui::GetIO();
|
||||||
int mouseX;
|
int mouseX;
|
||||||
@@ -227,6 +195,7 @@ void Controller::OnInput() {
|
|||||||
ImGuiIO &io = ImGui::GetIO();
|
ImGuiIO &io = ImGui::GetIO();
|
||||||
|
|
||||||
while (SDL_PollEvent(&event)) {
|
while (SDL_PollEvent(&event)) {
|
||||||
|
ImGui_ImplSDL2_ProcessEvent(&event);
|
||||||
switch (event.type) {
|
switch (event.type) {
|
||||||
case SDL_KEYDOWN:
|
case SDL_KEYDOWN:
|
||||||
HandleKeyDown(event, editor_manager_);
|
HandleKeyDown(event, editor_manager_);
|
||||||
@@ -234,19 +203,14 @@ void Controller::OnInput() {
|
|||||||
case SDL_KEYUP:
|
case SDL_KEYUP:
|
||||||
HandleKeyUp(event, editor_manager_);
|
HandleKeyUp(event, editor_manager_);
|
||||||
break;
|
break;
|
||||||
case SDL_TEXTINPUT:
|
|
||||||
io.AddInputCharactersUTF8(event.text.text);
|
|
||||||
break;
|
|
||||||
case SDL_MOUSEWHEEL:
|
|
||||||
wheel = event.wheel.y;
|
|
||||||
break;
|
|
||||||
case SDL_WINDOWEVENT:
|
case SDL_WINDOWEVENT:
|
||||||
switch (event.window.event) {
|
switch (event.window.event) {
|
||||||
case SDL_WINDOWEVENT_CLOSE:
|
case SDL_WINDOWEVENT_CLOSE:
|
||||||
active_ = false;
|
active_ = false;
|
||||||
break;
|
break;
|
||||||
case SDL_WINDOWEVENT_SIZE_CHANGED:
|
case SDL_WINDOWEVENT_SIZE_CHANGED:
|
||||||
ChangeWindowSizeEvent(event);
|
io.DisplaySize.x = static_cast<float>(event.window.data1);
|
||||||
|
io.DisplaySize.y = static_cast<float>(event.window.data2);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user