From: hgn Date: Sun, 6 Nov 2022 18:50:53 +0000 (+0000) Subject: keyboard X-Git-Url: https://harrygodden.com/git/?a=commitdiff_plain;h=045332768cda11d98bcd74a1d803f823d095b94b;p=carveJwlIkooP6JGAAIwe30JlM.git keyboard --- diff --git a/player.h b/player.h index 9266782..972807b 100644 --- a/player.h +++ b/player.h @@ -87,6 +87,20 @@ VG_STATIC struct gplayer v3f handl_target, handr_target, handl, handr; + + /* Input */ + struct input_binding *input_js1h, + *input_js1v, + *input_js2h, + *input_js2v, + *input_emjs2h, + *input_emjs2v, + *input_jump, + *input_push, + *input_walk, + *input_switch_mode, + *input_reset, + *input_grab; /* Camera */ float air_blend; @@ -203,6 +217,59 @@ VG_STATIC void player_save_rewind_frame(void); VG_STATIC void player_init(void) /* 1 */ { + player.input_js1h = vg_create_named_input( "steer-h", k_input_type_axis ); + player.input_js1v = vg_create_named_input( "steer-v", k_input_type_axis ); + player.input_grab = vg_create_named_input( "grab", k_input_type_axis_norm ); + player.input_js2h = vg_create_named_input( "grab-h", k_input_type_axis ); + player.input_js2v = vg_create_named_input( "grab-v", k_input_type_axis ); + player.input_emjs2h = vg_create_named_input( "kbgrab-h", k_input_type_axis ); + player.input_emjs2v = vg_create_named_input( "kbgrab-v", k_input_type_axis ); + player.input_jump = vg_create_named_input( "jump", k_input_type_button ); + player.input_push = vg_create_named_input( "push", k_input_type_axis_norm ); + player.input_walk = vg_create_named_input( "walk", k_input_type_axis_norm ); + player.input_switch_mode = vg_create_named_input( "switch-mode", + k_input_type_button ); + player.input_reset = vg_create_named_input( "reset", k_input_type_button ); + + const char *default_cfg[] = + { + "bind steer-h gp-ls-h", + "bind steer-h gp-ls-h", + "bind -steer-h a", + "bind +steer-h d", + + "bind steer-v gp-ls-v", + "bind -steer-v s", + "bind +steer-v w", + + "bind grab gp-rt", + "bind grab-h gp-rs-h", + "bind grab-v gp-rs-v", + + "bind -kbgrab-h left", + "bind +kbgrab-h right", + "bind -kbgrab-v down", + "bind +kbgrab-v up", + + "bind jump space", + "bind jump gp-a", + + "bind push gp-lt", + "bind +push shift", + + "bind walk gp-lt", + "bind +walk w", + + "bind reset gp-lb", + "bind reset r", + + "bind switch-mode gp-y", + "bind switch-mode e", + }; + + for( int i=0; ion_board ^= 0x1; diff --git a/player_physics.h b/player_physics.h index bb79b85..0213fc7 100644 --- a/player_physics.h +++ b/player_physics.h @@ -150,7 +150,7 @@ VG_STATIC void player_physics_control(void) vel[0] = stable_force( vel[0],vg_signf(vel[0]) * -k_friction_lat*substep); } - if( vg_get_button( "jump" ) ) + if( player.input_jump->button.value ) { phys->jump += VG_TIMESTEP_FIXED * k_jump_charge_speed; @@ -161,15 +161,15 @@ VG_STATIC void player_physics_control(void) } static int push_thresh_last = 0; - float push_amt = vg_get_axis( "walk/push" ) * 0.5f + 0.5f; - int push_thresh = push_amt>0.15f? 1: 0; + float push = player.input_push->axis.value; + int push_thresh = push>0.15f? 1: 0; if( push_thresh && !push_thresh_last ) player.phys.start_push = vg.time; push_thresh_last = push_thresh; - if( !vg_get_button("jump") && push_thresh ) + if( !player.input_jump->button.value && push_thresh ) { player.phys.pushing = 1.0f; player.phys.push_time = vg.time - player.phys.start_push; @@ -198,7 +198,7 @@ VG_STATIC void player_physics_control(void) m3x3_mulv( phys->rb.to_world, vel, phys->rb.v ); - float steer = vg_get_axis( "lookh" ), + float steer = player.input_js1h->axis.value, steer_scaled = vg_signf(steer) * powf(steer,2.0f) * k_steer_ground; phys->iY -= steer_scaled * VG_TIMESTEP_FIXED; @@ -269,10 +269,14 @@ VG_STATIC void player_physics_control_air(void) time_to_impact += pstep; } - phys->iY -= vg_get_axis( "lookh" ) * k_steer_air * VG_TIMESTEP_FIXED; + float steerh = player.input_js1h->axis.value, + steerv = player.input_js1v->axis.value; + + phys->iY -= steerh * k_steer_air * VG_TIMESTEP_FIXED; + { - float iX = vg_get_axis( "lookv" ) * - phys->reverse * k_steer_air * limiter * VG_TIMESTEP_FIXED; + float iX = steerv * + phys->reverse * k_steer_air * limiter * VG_TIMESTEP_FIXED; static float siX = 0.0f; siX = vg_lerpf( siX, iX, k_steer_air_lerp ); @@ -282,9 +286,11 @@ VG_STATIC void player_physics_control_air(void) q_mul( rotate, phys->rb.q, phys->rb.q ); } +#if 0 v2f target = {0.0f,0.0f}; v2_muladds( target, (v2f){ vg_get_axis("grabh"), vg_get_axis("grabv") }, phys->grab, target ); +#endif } /* @@ -374,7 +380,7 @@ VG_STATIC void player_walk_physics(void) float const DOWNFORCE = -k_walk_downforce*VG_TIMESTEP_FIXED; v3_muladds( phys->rb.v, (v3f){0.0f,-1.0f,0.0f}, DOWNFORCE, phys->rb.v ); - if( vg_get_button("jump") ) + if( player.input_jump->button.value ) { phys->rb.v[1] = 5.0f; } @@ -389,7 +395,8 @@ VG_STATIC void player_walk_physics(void) v3_muladds( phys->rb.co, forward_dir, 2.0f, p1 ); vg_line( phys->rb.co, p1, 0xff0000ff ); - player.walk = powf( vg_get_axis("walk/push")*0.5f + 0.5f, 4.0f ); + float walk = player.input_walk->axis.value; + player.walk = powf( walk, 4.0f ); if( player.walk > 0.025f ) { @@ -525,7 +532,11 @@ VG_STATIC void player_physics(void) } } - float grabt = vg_get_axis( "grab" )*0.5f+0.5f; + float grabt = vg_maxf( player.input_grab->axis.value, + vg_maxf( fabsf( player.input_emjs2h->axis.value ), + fabsf( player.input_emjs2v->axis.value ) ) + ); + phys->grab = vg_lerpf( phys->grab, grabt, 0.14f ); player.phys.pushing = 0.0f; @@ -638,9 +649,6 @@ VG_STATIC void player_do_motion(void) { struct player_phys *phys = &player.phys; - float horizontal = vg_get_axis("horizontal"), - vertical = vg_get_axis("vertical"); - if( world.water.enabled ) { if( (phys->rb.co[1] < 0.0f) && !player.is_dead ) @@ -751,6 +759,7 @@ VG_STATIC void player_mouseview(void) static v2f mouse_last, view_vel = { 0.0f, 0.0f }; +#if 0 if( vg_get_button_down( "primary" ) ) v2_copy( vg.mouse, mouse_last ); @@ -762,6 +771,7 @@ VG_STATIC void player_mouseview(void) v2_muladds( view_vel, delta, 0.06f*vg.time_delta, view_vel ); } +#endif v2_muls( view_vel, 1.0f-4.2f*vg.time_delta, view_vel ); v2_add( view_vel, player.angles, player.angles ); diff --git a/skaterift.c b/skaterift.c index 91e7e01..7c094b0 100644 --- a/skaterift.c +++ b/skaterift.c @@ -260,39 +260,6 @@ VG_STATIC void vg_render(void) VG_STATIC void vg_ui(void) { #if 0 - if( cl_menu ) - { - ui_rect menu = - { - vg.window_x / 2 - 150, - vg.window_y / 2 - 50, - 300, - 130 - }; - - ui_fill_rect( &ui_global_ctx, menu, 0xa0000000 ); - - ui_text( &ui_global_ctx, (ui_rect){ menu[0]+menu[2]/2,menu[1]+6, 0, 0 }, - steam_username_at_startup, - 1, k_text_align_center ); - menu[1] += 24; - menu[3] -= 30; - - ui_rect_pad( menu, 8 ); - ui_fill_rect( &ui_global_ctx, menu, 0x90ffffff ); - ui_rect_pad( menu, 2 ); - ui_fill_rect( &ui_global_ctx, menu, 0xa0000000 ); - - menu[1] += 32; - ui_text( &ui_global_ctx, (ui_rect){ menu[0]+menu[2]/2,menu[1], 0, 0 }, - "Exit", 2, k_text_align_center ); - - if( vg_get_button_down( "jump" ) ) - { - glfwSetWindowShouldClose( vg.window, 1 ); - } - } - if( lightedit ) { ui_global_ctx.cursor[0] = 10;