From: hgn Date: Sat, 3 Dec 2022 14:11:34 +0000 (+0000) Subject: freecam X-Git-Url: https://harrygodden.com/git/?a=commitdiff_plain;h=b7b269bde94a997555de7f123688bf0abf92cc44;p=carveJwlIkooP6JGAAIwe30JlM.git freecam --- diff --git a/player.h b/player.h index 9551772..0ed16b6 100644 --- a/player.h +++ b/player.h @@ -584,7 +584,6 @@ VG_STATIC void player_update_post(void) if( freecam ) player_freecam(); - /* CAMERA POSITIONING: LAYER 0 */ v2_copy( player.angles, main_camera.angles ); v3_copy( player.camera_pos, main_camera.pos ); diff --git a/player_physics.h b/player_physics.h index 997b69d..db7105d 100644 --- a/player_physics.h +++ b/player_physics.h @@ -197,6 +197,9 @@ VG_STATIC void player_physics_control_passive(void) v2_muladds( phys->grab_mouse_delta, vg.mouse_delta, 0.02f, phys->grab_mouse_delta ); v2_normalize_clamp( phys->grab_mouse_delta ); + + if( freecam ) + v2_zero( phys->grab_mouse_delta ); } else v2_zero( phys->grab_mouse_delta ); @@ -502,6 +505,9 @@ VG_STATIC void player_walk_physics(void) v2f walk = { player.input_walkh->axis.value, player.input_walkv->axis.value }; + + if( freecam ) + v2_zero( walk ); if( v2_length2(walk) > 0.001f ) v2_normalize_clamp( walk ); @@ -1158,7 +1164,7 @@ VG_STATIC void player_freecam(void) { player_mouseview(); - float movespeed = fc_speed; + float movespeed = fc_speed * VG_TIMESTEP_FIXED; v3f lookdir = { 0.0f, 0.0f, -1.0f }, sidedir = { 1.0f, 0.0f, 0.0f }; @@ -1167,17 +1173,11 @@ VG_STATIC void player_freecam(void) static v3f move_vel = { 0.0f, 0.0f, 0.0f }; - /* TODO */ -#if 0 - if( vg_get_button( "forward" ) ) - v3_muladds( move_vel, lookdir, VG_TIMESTEP_FIXED * movespeed, move_vel ); - if( vg_get_button( "back" ) ) - v3_muladds( move_vel, lookdir, VG_TIMESTEP_FIXED *-movespeed, move_vel ); - if( vg_get_button( "left" ) ) - v3_muladds( move_vel, sidedir, VG_TIMESTEP_FIXED *-movespeed, move_vel ); - if( vg_get_button( "right" ) ) - v3_muladds( move_vel, sidedir, VG_TIMESTEP_FIXED * movespeed, move_vel ); -#endif + v2f steer = { player.input_js1h->axis.value, + player.input_js1v->axis.value }; + + v3_muladds( move_vel, sidedir, movespeed*steer[0], move_vel ); + v3_muladds( move_vel, lookdir, -movespeed*steer[1], move_vel ); v3_muls( move_vel, 0.7f, move_vel ); v3_add( move_vel, player.camera_pos, player.camera_pos ); diff --git a/world_render.h b/world_render.h index 68c0ceb..af20830 100644 --- a/world_render.h +++ b/world_render.h @@ -65,8 +65,11 @@ VG_STATIC void world_render_both_stages( enum mdl_shader shader, { mesh_bind( &world.mesh_geo ); world_render_if( shader, k_geo_type_solid, bind_point ); + + glDisable( GL_CULL_FACE ); mesh_bind( &world.mesh_no_collide ); world_render_if( shader, k_geo_type_nonsolid, bind_point ); + glEnable( GL_CULL_FACE ); } VG_STATIC void bindpoint_diffuse_texture1( struct world_material *mat )