move mouse wakeup from SR to VG
authorhgn <hgodden00@gmail.com>
Thu, 18 Apr 2024 12:07:04 +0000 (13:07 +0100)
committerhgn <hgodden00@gmail.com>
Thu, 18 Apr 2024 12:07:04 +0000 (13:07 +0100)
vg_engine.c
vg_input.c
vg_input.h

index 1723c70f3c26ce22e8a6856e4e0b9a31f828b04e..fe3a7e95bee5deda6246917e9850d0592c3f8351 100644 (file)
@@ -141,9 +141,6 @@ static void _vg_process_events(void)
    v2_zero( vg.mouse_wheel );
    v2_zero( vg.mouse_delta );
 
-   /* Update input */
-   vg_process_inputs();
-
    /* SDL event loop */
    SDL_Event event;
    while( SDL_PollEvent( &event ) ){
@@ -221,6 +218,7 @@ static void _vg_process_events(void)
    }
 
    SDL_GetMouseState( &vg.mouse_pos[0], &vg.mouse_pos[1] );
+   vg_process_inputs();
 }
 
 static void _vg_gameloop_update(void)
index 74732f4d2c485ba871cbf024224bdc777809cc63..c536c1f2ab2fd23446a2ca4778ef2ebc2a3f0d98 100644 (file)
@@ -210,10 +210,13 @@ void vg_process_inputs(void)
    vg_input.sdl_keys = SDL_GetKeyboardState( &count );
    vg_input.sdl_mouse = SDL_GetMouseState(NULL,NULL);
 
-   if( vg_input.display_input_method != k_input_method_kbm ){
+   if( vg_input.display_input_method != k_input_method_kbm )
+   {
       /* check for giving keyboard priority */
-      for( int i=0; i<count; i++ ){
-         if( vg_input.sdl_keys[i] ){
+      for( int i=0; i<count; i++ )
+      {
+         if( vg_input.sdl_keys[i] )
+         {
             vg_input.display_input_method = k_input_method_kbm;
             vg_info( "display_input: k_input_method_kbm (keyboard %d)\n", i );
             break;
@@ -226,9 +229,19 @@ void vg_process_inputs(void)
              SDL_BUTTON(SDL_BUTTON_MIDDLE)) )
       {
          vg_input.display_input_method = k_input_method_kbm;
-         vg_info( "display_input: k_input_method_kbm (mouse)\n" );
+         vg_info( "display_input: k_input_method_kbm (mouse click)\n" );
+      }
+
+      vg_input.hidden_mouse_travel += v2_length( vg.mouse_delta ); 
+      if( vg_input.hidden_mouse_travel > 64.0f )
+      {
+         vg_input.display_input_method = k_input_method_kbm;
+         vg_input.hidden_mouse_travel = 0.0f;
+         vg_info( "display_input: k_input_method_kbm (mouse move)\n" );
       }
    }
+   else
+      vg_input.hidden_mouse_travel = 0.0f;
 }
 
 void async_vg_input_init( void *payload, u32 size )
index a203123e4b783b5a0e1835acfdb7b2d981e3772b..1636e07458db2da4b5d1cbe512eb7886112c4cfb 100644 (file)
@@ -47,6 +47,7 @@ struct vg_input
 {
    const u8 *sdl_keys;
    u32 sdl_mouse;
+   f32 hidden_mouse_travel;
 
    struct vg_controller{
       SDL_GameController *handle; /* handle for controller. NULL if unused */