mirror of
				https://github.com/Zelda64Recomp/Zelda64Recomp.git
				synced 2025-10-30 08:03:03 +00:00 
			
		
		
		
	fix: use sdl userevent to set await_stick_return when scanning for input (#413)
This commit is contained in:
		
							parent
							
								
									cbb5e8e7a4
								
							
						
					
					
						commit
						208e3044fc
					
				
					 2 changed files with 21 additions and 0 deletions
				
			
		|  | @ -192,9 +192,23 @@ bool sdl_event_filter(void* userdata, SDL_Event* event) { | |||
|             SDL_ControllerAxisEvent* axis_event = &event->caxis; | ||||
|             float axis_value = axis_event->value * (1/32768.0f); | ||||
|             if (axis_value > axis_threshold) { | ||||
|                 SDL_Event set_stick_return_event; | ||||
|                 set_stick_return_event.type = SDL_USEREVENT; | ||||
|                 set_stick_return_event.user.code = axis_event->axis; | ||||
|                 set_stick_return_event.user.data1 = nullptr; | ||||
|                 set_stick_return_event.user.data2 = nullptr; | ||||
|                 recompui::queue_event(set_stick_return_event); | ||||
|                  | ||||
|                 set_scanned_input({(uint32_t)InputType::ControllerAnalog, axis_event->axis + 1}); | ||||
|             } | ||||
|             else if (axis_value < -axis_threshold) { | ||||
|                 SDL_Event set_stick_return_event; | ||||
|                 set_stick_return_event.type = SDL_USEREVENT; | ||||
|                 set_stick_return_event.user.code = axis_event->axis; | ||||
|                 set_stick_return_event.user.data1 = nullptr; | ||||
|                 set_stick_return_event.user.data2 = nullptr; | ||||
|                 recompui::queue_event(set_stick_return_event); | ||||
| 
 | ||||
|                 set_scanned_input({(uint32_t)InputType::ControllerAnalog, -axis_event->axis - 1}); | ||||
|             } | ||||
|         } else { | ||||
|  |  | |||
|  | @ -1350,6 +1350,13 @@ void draw_hook(RT64::RenderCommandList* command_list, RT64::RenderFramebuffer* s | |||
|                 non_mouse_interacted = true; | ||||
|                 kb_interacted = true; | ||||
|                 break; | ||||
|             case SDL_EventType::SDL_USEREVENT: | ||||
|                 if (cur_event.user.code == SDL_GameControllerAxis::SDL_CONTROLLER_AXIS_LEFTY) { | ||||
|                     ui_context->rml.await_stick_return_y = true; | ||||
|                 } else if (cur_event.user.code == SDL_GameControllerAxis::SDL_CONTROLLER_AXIS_LEFTX) { | ||||
|                     ui_context->rml.await_stick_return_x = true; | ||||
|                 } | ||||
|                 break; | ||||
|             case SDL_EventType::SDL_CONTROLLERAXISMOTION: | ||||
|                 SDL_ControllerAxisEvent* axis_event = &cur_event.caxis; | ||||
|                 if (axis_event->axis != SDL_GameControllerAxis::SDL_CONTROLLER_AXIS_LEFTY && axis_event->axis != SDL_GameControllerAxis::SDL_CONTROLLER_AXIS_LEFTX) { | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 briaguya
						briaguya