From 2ac45c21d5405ca266f3584e04d560e6495985b2 Mon Sep 17 00:00:00 2001 From: hgn Date: Fri, 5 Apr 2024 05:15:47 +0100 Subject: [PATCH] clean up overlay init code --- .gitignore | 1 + build.c | 11 +- c0_stopgap.c | 21 +++ control_overlay.c | 317 +++++++++++++------------------------- control_overlay.h | 79 +++------- model.c | 15 +- model.h | 5 +- models_src/rs_overlay.mdl | Bin 456528 -> 456288 bytes render.h | 37 +---- shader_props.h | 37 +++++ 10 files changed, 214 insertions(+), 309 deletions(-) create mode 100644 c0_stopgap.c create mode 100644 shader_props.h diff --git a/.gitignore b/.gitignore index 16634e9..5955d4e 100755 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ *.old *.bin *.swp +*.c0 # soft links steamworks_sdk diff --git a/build.c b/build.c index eb3de62..5a07821 100644 --- a/build.c +++ b/build.c @@ -7,6 +7,12 @@ #include "vg/vg_msg.h" #include "addon_types.h" +#define C0_STOPGAP +#include "vg/vg_m.h" +#include "model.h" +#include "model.c" +#include "c0_stopgap.c" + /* * Addon metadata utilities * -------------------------------------------------------------------------- */ @@ -150,12 +156,15 @@ void build_game_content( struct vg_project *proj ) void build_game_bin( struct vg_project *proj ) { static int meta = 0; - if( !meta ){ + if( !meta ) + { meta = 1; build_shaders(); build_game_metadata(); vg_low( "\n\n" ); } + +#include "control_overlay.h" vg_project_new_target( proj, "skaterift", k_obj_type_exe ); vg_add_engine( proj, &(struct vg_engine_config ) diff --git a/c0_stopgap.c b/c0_stopgap.c new file mode 100644 index 0000000..b33378c --- /dev/null +++ b/c0_stopgap.c @@ -0,0 +1,21 @@ +#include +#include +FILE *c0_file = NULL; +static void c0_start( const char *fn ) +{ + c0_file = fopen( fn, "w" ); +} + +static void c0_end(void) +{ + fclose( c0_file ); + c0_file = NULL; +} + +static void c0_echof( const char *fmt, ... ) +{ + va_list args; + va_start( args, fmt ); + vfprintf( c0_file, fmt, args ); + va_end( args ); +} diff --git a/control_overlay.c b/control_overlay.c index 083a411..f0b7a9a 100644 --- a/control_overlay.c +++ b/control_overlay.c @@ -11,6 +11,11 @@ struct control_overlay control_overlay = { .enabled = 1 }; +static void render_overlay_mesh( enum control_overlay_mesh index ) +{ + mdl_draw_submesh( mdl_arritm( &control_overlay.mdl.submeshs, index ) ); +} + void control_overlay_init(void) { void *alloc = vg_mem.rtmemory; @@ -34,127 +39,14 @@ void control_overlay_init(void) vg_error( "No texture in control overlay\n" ); } - control_overlay.m_key = mdl_find_submesh( mdl, "ov_key" ); - control_overlay.m_key_down = mdl_find_submesh( mdl, "ov_key_down" ); - control_overlay.m_shift = mdl_find_submesh( mdl, "ov_shift" ); - control_overlay.m_shift_down = mdl_find_submesh( mdl, "ov_shift_down" ); - control_overlay.m_space = mdl_find_submesh( mdl, "ov_space" ); - control_overlay.m_space_down = mdl_find_submesh( mdl, "ov_space_down" ); - control_overlay.m_jump_ind = mdl_find_submesh( mdl, "ov_jump_ind" ); - control_overlay.m_text_jump = mdl_find_submesh( mdl, "ov_text_jump" ); - control_overlay.m_text_crouch = mdl_find_submesh( mdl, "ov_text_crouch" ); - control_overlay.m_text_shift = mdl_find_submesh( mdl, "ov_text_shift" ); - control_overlay.m_text_grab = mdl_find_submesh( mdl, "ov_text_grab" ); - control_overlay.m_text_carve = mdl_find_submesh( mdl, "ov_text_carve" ); - control_overlay.m_stored_ind = mdl_find_submesh( mdl, "ov_stored_ind" ); - control_overlay.m_text_stored = mdl_find_submesh( mdl, "ov_text_stored" ); - control_overlay.m_text_left = mdl_find_submesh( mdl, "ov_text_left" ); - control_overlay.m_text_right = mdl_find_submesh( mdl, "ov_text_right" ); - control_overlay.m_text_push = mdl_find_submesh( mdl, "ov_text_push" ); - control_overlay.m_text_manual = mdl_find_submesh( mdl, "ov_text_manual" ); - control_overlay.m_text_front_flip = mdl_find_submesh( mdl, "ov_text_front_flip" ); - control_overlay.m_text_back_flip = mdl_find_submesh( mdl, "ov_text_back_flip" ); - control_overlay.m_text_s = mdl_find_submesh( mdl, "ov_text_s" ); - control_overlay.m_text_w = mdl_find_submesh( mdl, "ov_text_w" ); - - control_overlay.m_text_walk = mdl_find_submesh( mdl, "ov_text_walk" ); - control_overlay.m_text_back = mdl_find_submesh( mdl, "ov_text_back" ); - control_overlay.m_text_forward = mdl_find_submesh( mdl, "ov_text_forward" ); - control_overlay.m_text_skate = mdl_find_submesh( mdl, "ov_text_skate" ); - control_overlay.m_text_walk_lwr = mdl_find_submesh( mdl, "ov_text_walk_lwr" ); - control_overlay.m_text_e = mdl_find_submesh( mdl, "ov_text_e" ); - control_overlay.m_text_glide = mdl_find_submesh( mdl, "ov_text_glide" ); - control_overlay.m_text_camera = mdl_find_submesh( mdl, "ov_text_camera" ); - control_overlay.m_text_run = mdl_find_submesh( mdl, "ov_text_run" ); - control_overlay.m_text_look = mdl_find_submesh( mdl, "ov_text_look" ); - control_overlay.m_text_rewind = mdl_find_submesh( mdl, "ov_text_rewind" ); - - control_overlay.m_lmb = mdl_find_submesh( mdl, "ov_lmb" ); - control_overlay.m_lmb_down = mdl_find_submesh( mdl, "ov_lmb_down" ); - control_overlay.m_rmb = mdl_find_submesh( mdl, "ov_rmb" ); - control_overlay.m_rmb_down = mdl_find_submesh( mdl, "ov_rmb_down" ); - control_overlay.m_mouse = mdl_find_submesh( mdl, "ov_mouse" ); - control_overlay.m_mouse_grabs = mdl_find_submesh( mdl, "ov_mouse_grabs" ); - control_overlay.m_text_kickflip = mdl_find_submesh( mdl, "ov_text_kickflip" ); - control_overlay.m_text_treflip = mdl_find_submesh( mdl, "ov_text_treflip" ); - control_overlay.m_text_shuvit = mdl_find_submesh( mdl, "ov_text_shuvit" ); - control_overlay.m_text_respawn = mdl_find_submesh( mdl, "ov_text_respawn" ); - - control_overlay.m_ls = mdl_find_submesh( mdl, "ov_ls" ); - control_overlay.m_ls_circ_backflip = mdl_find_submesh( mdl, "ov_ls_circ_backflip" ); - control_overlay.m_ls_circ_frontflip = mdl_find_submesh( mdl, "ov_ls_circ_frontflip" ); - control_overlay.m_ls_circ_manual = mdl_find_submesh( mdl, "ov_ls_circ_manual" ); - control_overlay.m_ls_circ_skate = mdl_find_submesh( mdl, "ov_ls_circ_skate" ); - control_overlay.m_ls_circ_walk = mdl_find_submesh( mdl, "ov_ls_circ_walk" ); - control_overlay.m_rs = mdl_find_submesh( mdl, "ov_rs" ); - control_overlay.m_rs_circ_look = mdl_find_submesh( mdl, "ov_rs_circ_look" ); - control_overlay.m_rs_circ_grab = mdl_find_submesh( mdl, "ov_rs_circ_grab" ); - - control_overlay.m_lb = mdl_find_submesh( mdl, "ov_lb" ); - control_overlay.m_lb_down = mdl_find_submesh( mdl, "ov_lb_down" ); - control_overlay.m_carve_l = mdl_find_submesh( mdl, "ov_carve_l" ); - control_overlay.m_rb = mdl_find_submesh( mdl, "ov_rb" ); - control_overlay.m_rb_down = mdl_find_submesh( mdl, "ov_rb_down" ); - control_overlay.m_carve_r = mdl_find_submesh( mdl, "ov_carve_r" ); - control_overlay.m_lt = mdl_find_submesh( mdl, "ov_lt" ); - control_overlay.m_lt_act = mdl_find_submesh( mdl, "ov_lt_act" ); - control_overlay.m_lt_run = mdl_find_submesh( mdl, "ov_lt_run" ); - control_overlay.m_rt = mdl_find_submesh( mdl, "ov_rt" ); - control_overlay.m_rt_act = mdl_find_submesh( mdl, "ov_rt_act" ); - control_overlay.m_rt_grab = mdl_find_submesh( mdl, "ov_rt_grab" ); - control_overlay.m_rt_crouch = mdl_find_submesh( mdl, "ov_rt_crouch" ); - - control_overlay.m_y = mdl_find_submesh( mdl, "ov_y" ); - control_overlay.m_y_down = mdl_find_submesh( mdl, "ov_y_down" ); - control_overlay.m_text_y_walk = mdl_find_submesh( mdl, "ov_text_y_walk" ); - control_overlay.m_text_y_walk_lwr = mdl_find_submesh( mdl, "ov_text_y_walk_lwr" ); - control_overlay.m_text_y_glide = mdl_find_submesh( mdl, "ov_text_y_glide" ); - control_overlay.m_text_y_skate = mdl_find_submesh( mdl, "ov_text_y_skate" ); - control_overlay.m_b = mdl_find_submesh( mdl, "ov_b" ); - control_overlay.m_b_down = mdl_find_submesh( mdl, "ov_b_down" ); - control_overlay.m_text_b_kickflip = mdl_find_submesh( mdl, "ov_text_b_kickflip" ); - control_overlay.m_text_b_push = mdl_find_submesh( mdl, "ov_text_b_push" ); - control_overlay.m_x = mdl_find_submesh( mdl, "ov_x" ); - control_overlay.m_x_down = mdl_find_submesh( mdl, "ov_x_down" ); - control_overlay.m_text_x_treflip = mdl_find_submesh( mdl, "ov_text_x_treflip" ); - control_overlay.m_a = mdl_find_submesh( mdl, "ov_a" ); - control_overlay.m_a_down = mdl_find_submesh( mdl, "ov_a_down" ); - control_overlay.m_text_a_shuvit = mdl_find_submesh( mdl, "ov_text_a_shuvit" ); - control_overlay.m_text_a_jump = mdl_find_submesh( mdl, "ov_text_a_jump" ); - control_overlay.m_text_a_jump_mid = mdl_find_submesh( mdl, "ov_text_a_jump_mid" ); - - control_overlay.m_dpad = mdl_find_submesh( mdl, "ov_dpad" ); - control_overlay.m_dpad_w = mdl_find_submesh( mdl, "ov_dpad_w" ); - control_overlay.m_dpad_n = mdl_find_submesh( mdl, "ov_dpad_n" ); - control_overlay.m_dpad_e = mdl_find_submesh( mdl, "ov_dpad_e" ); - control_overlay.m_dpad_s = mdl_find_submesh( mdl, "ov_dpad_s" ); - control_overlay.m_text_dw_rewind = mdl_find_submesh( mdl, "ov_text_dw_rewind" ); - control_overlay.m_text_de_camera = mdl_find_submesh( mdl, "ov_text_de_camera" ); - control_overlay.m_text_dn_respawn = mdl_find_submesh( mdl, "ov_text_dn_respawn" ); - - control_overlay.m_met = mdl_find_submesh( mdl, "ov_met" ); - control_overlay.m_met_r = mdl_find_submesh( mdl, "ov_met_r" ); - control_overlay.m_met_l = mdl_find_submesh( mdl, "ov_met_l" ); - control_overlay.m_met_r_down = mdl_find_submesh( mdl, "ov_met_r_down" ); - control_overlay.m_met_l_down = mdl_find_submesh( mdl, "ov_met_l_down" ); - control_overlay.m_text_met_menu = mdl_find_submesh( mdl, "ov_text_met_menu" ); - - control_overlay.m_key_menu = mdl_find_submesh( mdl, "ov_key_menu" ); - control_overlay.m_key_menu_down = mdl_find_submesh( mdl, "ov_key_menu_down" ); - control_overlay.m_text_menu = mdl_find_submesh( mdl, "ov_text_menu" ); - vg_console_reg_var( "control_overlay", &control_overlay.enabled, k_var_dtype_i32, VG_VAR_PERSISTENT ); } static void draw_key( bool press, bool wide ) { - if( wide ) - mdl_draw_submesh( press? - control_overlay.m_shift_down: control_overlay.m_shift ); - else - mdl_draw_submesh( press? - control_overlay.m_key_down: control_overlay.m_key ); + if( wide ) render_overlay_mesh( press? ov_shift_down: ov_shift ); + else render_overlay_mesh( press? ov_key_down: ov_key ); } static void colorize( bool press, bool condition ) @@ -258,20 +150,20 @@ void control_overlay_render(void) if( subsytem == k_player_subsystem_skate ) { colorize( 0, 1 ); - mdl_draw_submesh( control_overlay.m_ls_circ_skate ); + render_overlay_mesh( ov_ls_circ_skate ); colorize( steer[1]>=0.5f, press_jump ); - mdl_draw_submesh( control_overlay.m_ls_circ_backflip ); + render_overlay_mesh( ov_ls_circ_backflip ); colorize( steer[1]<=-0.5f, press_jump ); - mdl_draw_submesh( control_overlay.m_ls_circ_frontflip ); + render_overlay_mesh( ov_ls_circ_frontflip ); colorize( steer[1] > 0.7f, !press_jump && !in_air ); - mdl_draw_submesh( control_overlay.m_ls_circ_manual ); + render_overlay_mesh( ov_ls_circ_manual ); } else if( subsytem == k_player_subsystem_walk ) { colorize( 0, 1 ); - mdl_draw_submesh( control_overlay.m_ls_circ_walk ); + render_overlay_mesh( ov_ls_circ_walk ); } mmdl[3][0] += steer[0]*0.125f*0.75f; @@ -279,7 +171,7 @@ void control_overlay_render(void) colorize( 0, 1 ); shader_model_menu_uMdl( mmdl ); - mdl_draw_submesh( control_overlay.m_ls ); + render_overlay_mesh( ov_ls ); /* joystick R */ mmdl[3][0] = r - 0.375f; @@ -289,13 +181,13 @@ void control_overlay_render(void) if( subsytem == k_player_subsystem_skate ) { colorize( rt_amt > 0.5f, in_air ); - mdl_draw_submesh( control_overlay.m_rs_circ_grab ); + render_overlay_mesh( ov_rs_circ_grab ); colorize( 0, in_air ); } else if( subsytem == k_player_subsystem_walk ) { colorize( 0, 1 ); - mdl_draw_submesh( control_overlay.m_rs_circ_look ); + render_overlay_mesh( ov_rs_circ_look ); } v2f jlook; @@ -304,7 +196,7 @@ void control_overlay_render(void) mmdl[3][0] += jlook[0]*0.125f*0.75f; mmdl[3][2] += jlook[1]*0.125f*0.75f; shader_model_menu_uMdl( mmdl ); - mdl_draw_submesh( control_overlay.m_rs ); + render_overlay_mesh( ov_rs ); @@ -318,12 +210,12 @@ void control_overlay_render(void) if( subsytem == k_player_subsystem_skate ) { colorize( lb_down, !in_air ); - mdl_draw_submesh( control_overlay.m_carve_l ); + render_overlay_mesh( ov_carve_l ); } else colorize( 0, 0 ); - mdl_draw_submesh( lb_down? control_overlay.m_lb_down: control_overlay.m_lb ); + render_overlay_mesh( lb_down? ov_lb_down: ov_lb ); /* LT ---------------------------------------------------------------- */ @@ -334,14 +226,14 @@ void control_overlay_render(void) else if( subsytem == k_player_subsystem_walk ) { colorize( lt_amt>0.2f, 1 ); - mdl_draw_submesh( control_overlay.m_lt_run ); + render_overlay_mesh( ov_lt_run ); } - mdl_draw_submesh( control_overlay.m_lt ); + render_overlay_mesh( ov_lt ); mmdl[3][2] += lt_amt*0.125f*0.5f; shader_model_menu_uMdl( mmdl ); - mdl_draw_submesh( control_overlay.m_lt_act ); + render_overlay_mesh( ov_lt_act ); /* RIGHT UPPERS */ mmdl[3][0] = r; @@ -351,21 +243,21 @@ void control_overlay_render(void) if( subsytem == k_player_subsystem_skate ) { colorize( rb_down, !in_air ); - mdl_draw_submesh( control_overlay.m_carve_r ); + render_overlay_mesh( ov_carve_r ); } else colorize( 0, 0 ); - mdl_draw_submesh( rb_down? control_overlay.m_rb_down: control_overlay.m_rb ); + render_overlay_mesh( rb_down? ov_rb_down: ov_rb ); /* RT ---------------------------------------------------------------- */ if( subsytem == k_player_subsystem_skate ) { colorize( rt_amt>0.2f, in_air ); - mdl_draw_submesh( control_overlay.m_rt_grab ); + render_overlay_mesh( ov_rt_grab ); colorize( rt_amt>0.2f, !in_air ); - mdl_draw_submesh( control_overlay.m_rt_crouch ); + render_overlay_mesh( ov_rt_crouch ); colorize( rt_amt>0.2f, 1 ); } else if( subsytem == k_player_subsystem_walk ) @@ -373,11 +265,11 @@ void control_overlay_render(void) colorize( 0, 0 ); } - mdl_draw_submesh( control_overlay.m_rt ); + render_overlay_mesh( ov_rt ); mmdl[3][2] += rt_amt*0.125f*0.5f; shader_model_menu_uMdl( mmdl ); - mdl_draw_submesh( control_overlay.m_rt_act ); + render_overlay_mesh( ov_rt_act ); /* RIGHT SIDE BUTTONS */ bool press_a = 0, press_b = 0, press_x = 0, press_y = 0, @@ -423,16 +315,16 @@ void control_overlay_render(void) if( subsytem == k_player_subsystem_skate ) { colorize( press_b, !in_air ); - mdl_draw_submesh( control_overlay.m_text_b_push ); + render_overlay_mesh( ov_text_b_push ); colorize( press_b, in_air ); - mdl_draw_submesh( control_overlay.m_text_b_kickflip ); + render_overlay_mesh( ov_text_b_kickflip ); colorize( press_b, 1 ); } else { colorize( 0, 0 ); } - mdl_draw_submesh( press_b? control_overlay.m_b_down: control_overlay.m_b ); + render_overlay_mesh( press_b? ov_b_down: ov_b ); /* Y / SKATE / WALK / GLIDE */ @@ -441,55 +333,55 @@ void control_overlay_render(void) if( localplayer.have_glider ) { colorize( press_y, !in_air ); - mdl_draw_submesh( control_overlay.m_text_y_glide ); + render_overlay_mesh( ov_text_y_walk_lwr ); colorize( press_y, in_air ); - mdl_draw_submesh( control_overlay.m_text_y_walk_lwr ); + render_overlay_mesh( ov_text_y_glide ); } else { colorize( press_y, 1 ); - mdl_draw_submesh( control_overlay.m_text_y_walk ); + render_overlay_mesh( ov_text_y_walk ); } } else if( subsytem == k_player_subsystem_walk ) { colorize( press_y, player_walk.state.activity < k_walk_activity_inone ); - mdl_draw_submesh( control_overlay.m_text_y_skate ); + render_overlay_mesh( ov_text_y_skate ); } else if( subsytem == k_player_subsystem_glide ) { colorize( press_y, 1 ); - mdl_draw_submesh( control_overlay.m_text_y_skate ); + render_overlay_mesh( ov_text_y_skate ); } else colorize( 0, 0 ); - mdl_draw_submesh( press_y? control_overlay.m_y_down: control_overlay.m_y ); + render_overlay_mesh( press_y? ov_y_down: ov_y ); /* X / TREFLIP */ if( subsytem == k_player_subsystem_skate ) { colorize( press_x, in_air ); - mdl_draw_submesh( control_overlay.m_text_x_treflip ); + render_overlay_mesh( ov_text_x_treflip ); } else colorize( press_x, 0 ); - mdl_draw_submesh( press_x? control_overlay.m_x_down: control_overlay.m_x ); + render_overlay_mesh( press_x? ov_x_down: ov_x ); /* A / JUMP / SHUVIT */ if( subsytem == k_player_subsystem_skate ) { colorize( press_a, !in_air ); - mdl_draw_submesh( control_overlay.m_text_a_jump ); + render_overlay_mesh( ov_text_a_jump ); colorize( press_a, in_air ); - mdl_draw_submesh( control_overlay.m_text_a_shuvit ); + render_overlay_mesh( ov_text_a_shuvit ); colorize( press_a, 1 ); } else if( subsytem == k_player_subsystem_walk ) { colorize( press_a, !in_air ); - mdl_draw_submesh( control_overlay.m_text_a_jump_mid ); + render_overlay_mesh( ov_text_a_jump_mid ); } - mdl_draw_submesh( press_a? control_overlay.m_a_down: control_overlay.m_a ); + render_overlay_mesh( press_a? ov_a_down: ov_a ); /* JUMP CHARGE */ if( subsytem == k_player_subsystem_skate ) @@ -500,7 +392,7 @@ void control_overlay_render(void) mmdl[3][0] += -0.4375f; mmdl[3][2] += 0.09375f; shader_model_menu_uMdl( mmdl ); - mdl_draw_submesh( control_overlay.m_jump_ind ); + render_overlay_mesh( ov_jump_ind ); mmdl[0][0] = 1.0f; } } @@ -512,30 +404,30 @@ void control_overlay_render(void) mmdl[3][2] = 0.0f; shader_model_menu_uMdl( mmdl ); colorize( 0, 1 ); - mdl_draw_submesh( control_overlay.m_dpad ); + render_overlay_mesh( ov_dpad ); colorize( press_dpad_e, 1 ); - mdl_draw_submesh( control_overlay.m_text_de_camera ); + render_overlay_mesh( ov_text_de_camera ); if( press_dpad_e ) - mdl_draw_submesh( control_overlay.m_dpad_e ); + render_overlay_mesh( ov_dpad_e ); colorize( press_dpad_w, 1 ); - mdl_draw_submesh( control_overlay.m_text_dw_rewind ); + render_overlay_mesh( ov_text_dw_rewind ); if( press_dpad_w ) - mdl_draw_submesh( control_overlay.m_dpad_w ); + render_overlay_mesh( ov_dpad_w ); if( subsytem == k_player_subsystem_dead ) { colorize( press_dpad_n, 1 ); - mdl_draw_submesh( control_overlay.m_text_dn_respawn ); + render_overlay_mesh( ov_text_dn_respawn ); } else colorize( press_dpad_n, 0 ); if( press_dpad_n ) - mdl_draw_submesh( control_overlay.m_dpad_n ); + render_overlay_mesh( ov_dpad_n ); colorize( press_dpad_s, 0 ); if( press_dpad_s ) - mdl_draw_submesh( control_overlay.m_dpad_s ); + render_overlay_mesh( ov_dpad_s ); /* WEIGHT */ @@ -546,12 +438,12 @@ void control_overlay_render(void) mmdl[3][2] = -1.0f + 0.435484f; colorize( 0, !in_air ); shader_model_menu_uMdl( mmdl ); - mdl_draw_submesh( control_overlay.m_text_stored ); + render_overlay_mesh( ov_text_stored ); mmdl[0][0] = v3_length( player_skate.state.throw_v ) / k_mmthrow_scale; shader_model_menu_uMdl( mmdl ); colorize( 0, !in_air ); - mdl_draw_submesh( control_overlay.m_stored_ind ); + render_overlay_mesh( ov_stored_ind ); static f32 collect = 0.0f; collect = vg_lerpf( collect, player_skate.collect_feedback, @@ -561,7 +453,7 @@ void control_overlay_render(void) mmdl[0][0] = collect; mmdl[3][2] += 0.015625f; shader_model_menu_uMdl( mmdl ); - mdl_draw_submesh( control_overlay.m_stored_ind ); + render_overlay_mesh( ov_stored_ind ); } mmdl[0][0] = 1.0f; @@ -569,14 +461,14 @@ void control_overlay_render(void) mmdl[3][2] = -1.0f; shader_model_menu_uMdl( mmdl ); colorize( press_menu, 1 ); - mdl_draw_submesh( press_menu? control_overlay.m_met_r_down: control_overlay.m_met_r ); - mdl_draw_submesh( control_overlay.m_text_met_menu ); + render_overlay_mesh( press_menu? ov_met_r_down: ov_met_r ); + render_overlay_mesh( ov_text_met_menu ); colorize( press_back, 0 ); - mdl_draw_submesh( press_back? control_overlay.m_met_l_down: control_overlay.m_met_l ); + render_overlay_mesh( press_back? ov_met_l_down: ov_met_l ); colorize( 0, 0 ); - mdl_draw_submesh( control_overlay.m_met ); + render_overlay_mesh( ov_met ); } else { @@ -592,7 +484,7 @@ void control_overlay_render(void) shader_model_menu_uMdl( mmdl ); colorize( press_ctrl, !in_air && !grinding ); draw_key( press_ctrl, 1 ); - mdl_draw_submesh( control_overlay.m_text_carve ); + render_overlay_mesh( ov_text_carve ); } /* SHIFT || CROUCH / GRAB / RUN */ @@ -605,18 +497,18 @@ void control_overlay_render(void) shader_model_menu_uMdl( mmdl ); colorize( press_shift, !grinding ); draw_key( press_shift, 1 ); - mdl_draw_submesh( control_overlay.m_text_shift ); + render_overlay_mesh( ov_text_shift ); if( subsytem == k_player_subsystem_skate ) { colorize( press_shift, !in_air && !grinding ); - mdl_draw_submesh( control_overlay.m_text_crouch ); + render_overlay_mesh( ov_text_crouch ); colorize( press_shift, in_air && !grinding ); - mdl_draw_submesh( control_overlay.m_text_grab ); + render_overlay_mesh( ov_text_grab ); } else if( subsytem == k_player_subsystem_walk ) { - mdl_draw_submesh( control_overlay.m_text_run ); + render_overlay_mesh( ov_text_run ); } } @@ -626,12 +518,12 @@ void control_overlay_render(void) mmdl[3][0] = -r + 0.25f + 0.203125f + 0.007812f; colorize( 0, !in_air ); shader_model_menu_uMdl( mmdl ); - mdl_draw_submesh( control_overlay.m_text_stored ); + render_overlay_mesh( ov_text_stored ); mmdl[0][0] = v3_length( player_skate.state.throw_v ) / k_mmthrow_scale; shader_model_menu_uMdl( mmdl ); colorize( 0, !in_air ); - mdl_draw_submesh( control_overlay.m_stored_ind ); + render_overlay_mesh( ov_stored_ind ); static f32 collect = 0.0f; collect = vg_lerpf( collect, player_skate.collect_feedback, @@ -641,7 +533,7 @@ void control_overlay_render(void) mmdl[0][0] = collect; mmdl[3][2] += 0.015625f; shader_model_menu_uMdl( mmdl ); - mdl_draw_submesh( control_overlay.m_stored_ind ); + render_overlay_mesh( ov_stored_ind ); } /* -1 */ @@ -654,7 +546,7 @@ void control_overlay_render(void) shader_model_menu_uMdl( mmdl ); colorize( press_c, 1 ); draw_key( press_c, 0 ); - mdl_draw_submesh( control_overlay.m_text_camera ); + render_overlay_mesh( ov_text_camera ); } /* +0 */ @@ -669,7 +561,7 @@ void control_overlay_render(void) shader_model_menu_uMdl( mmdl ); colorize( press_a, 1 ); draw_key( press_a, 0 ); - mdl_draw_submesh( control_overlay.m_text_left ); + render_overlay_mesh( ov_text_left ); } bool press_jump = player_skate.state.jump_charge < 0.2f; @@ -683,19 +575,19 @@ void control_overlay_render(void) { colorize( press_s, !in_air ); draw_key( press_s, 0 ); - mdl_draw_submesh( control_overlay.m_text_s ); + render_overlay_mesh( ov_text_s ); /* backflip/manual */ colorize( press_s, !in_air && !press_jump ); - mdl_draw_submesh( control_overlay.m_text_back_flip ); + render_overlay_mesh( ov_text_back_flip ); colorize( press_s, !in_air && press_jump ); - mdl_draw_submesh( control_overlay.m_text_manual ); + render_overlay_mesh( ov_text_manual ); } else if( subsytem != k_player_subsystem_dead ) { colorize( press_s, 1 ); draw_key( press_s, 0 ); - mdl_draw_submesh( control_overlay.m_text_s ); - mdl_draw_submesh( control_overlay.m_text_back ); + render_overlay_mesh( ov_text_s ); + render_overlay_mesh( ov_text_back ); } /* D || RIGHT */ @@ -706,7 +598,7 @@ void control_overlay_render(void) shader_model_menu_uMdl( mmdl ); colorize( press_d, 1 ); draw_key( press_d, 0 ); - mdl_draw_submesh( control_overlay.m_text_right ); + render_overlay_mesh( ov_text_right ); } /* +1 */ @@ -720,7 +612,7 @@ void control_overlay_render(void) shader_model_menu_uMdl( mmdl ); colorize( press_q, 1 ); draw_key( press_q, 0 ); - mdl_draw_submesh( control_overlay.m_text_respawn ); + render_overlay_mesh( ov_text_respawn ); } /* W || PUSH / FRONTFLIP */ @@ -732,19 +624,19 @@ void control_overlay_render(void) { colorize( press_w, !in_air ); draw_key( press_w, 0 ); - mdl_draw_submesh( control_overlay.m_text_w ); + render_overlay_mesh( ov_text_w ); /* frontflip/push */ colorize( press_w, !in_air && !press_jump ); - mdl_draw_submesh( control_overlay.m_text_front_flip ); + render_overlay_mesh( ov_text_front_flip ); colorize( press_w, !in_air && press_jump ); - mdl_draw_submesh( control_overlay.m_text_push ); + render_overlay_mesh( ov_text_push ); } else if( subsytem != k_player_subsystem_dead ) { colorize( press_w, 1 ); draw_key( press_w, 0 ); - mdl_draw_submesh( control_overlay.m_text_w ); - mdl_draw_submesh( control_overlay.m_text_forward ); + render_overlay_mesh( ov_text_w ); + render_overlay_mesh( ov_text_forward ); } /* E */ @@ -758,32 +650,31 @@ void control_overlay_render(void) if( localplayer.have_glider ) { colorize( press_e, !in_air ); - mdl_draw_submesh( control_overlay.m_text_walk_lwr ); - + render_overlay_mesh( ov_text_walk_lwr ); colorize( press_e, in_air ); - mdl_draw_submesh( control_overlay.m_text_glide ); + render_overlay_mesh( ov_text_glide ); } else { colorize( press_e, 1 ); - mdl_draw_submesh( control_overlay.m_text_walk ); + render_overlay_mesh( ov_text_walk ); } } else if( subsytem == k_player_subsystem_glide ) { colorize( press_e, 1 ); - mdl_draw_submesh( control_overlay.m_text_skate ); + render_overlay_mesh( ov_text_skate ); } else if( subsytem == k_player_subsystem_walk ) { colorize( press_e, player_walk.state.activity < k_walk_activity_inone ); - mdl_draw_submesh( control_overlay.m_text_skate ); + render_overlay_mesh( ov_text_skate ); } if( subsytem != k_player_subsystem_dead ) { draw_key( press_e, 0 ); - mdl_draw_submesh( control_overlay.m_text_e ); + render_overlay_mesh( ov_text_e ); } /* R */ @@ -794,7 +685,7 @@ void control_overlay_render(void) colorize( press_r, 1 ); draw_key( press_r, 0 ); - mdl_draw_submesh( control_overlay.m_text_rewind ); + render_overlay_mesh( ov_text_rewind ); /* space */ bool press_space = vg_getkey(SDLK_SPACE); @@ -808,9 +699,9 @@ void control_overlay_render(void) shader_model_menu_uMdl( mmdl ); colorize( press_space, !in_air ); - mdl_draw_submesh( press_space? - control_overlay.m_space_down: control_overlay.m_space ); - mdl_draw_submesh( control_overlay.m_text_jump ); + render_overlay_mesh( press_space? + ov_space_down: ov_space ); + render_overlay_mesh( ov_text_jump ); } if( subsytem == k_player_subsystem_skate ) @@ -820,7 +711,7 @@ void control_overlay_render(void) mmdl[0][0] = player_skate.state.jump_charge; mmdl[3][0] = -0.4375f; shader_model_menu_uMdl( mmdl ); - mdl_draw_submesh( control_overlay.m_jump_ind ); + render_overlay_mesh( ov_jump_ind ); } } @@ -830,8 +721,8 @@ void control_overlay_render(void) mmdl[3][2] = -1.0f + 0.125f; shader_model_menu_uMdl( mmdl ); colorize( press_esc, 1 ); - mdl_draw_submesh( control_overlay.m_text_menu ); - mdl_draw_submesh( press_esc? control_overlay.m_key_menu_down: control_overlay.m_key_menu ); + render_overlay_mesh( ov_text_menu ); + render_overlay_mesh( press_esc? ov_key_menu_down: ov_key_menu ); mmdl[3][0] = r - 0.38f; mmdl[3][2] = 0.0f; shader_model_menu_uMdl( mmdl ); @@ -839,7 +730,7 @@ void control_overlay_render(void) if( subsytem == k_player_subsystem_skate ) { - mdl_draw_submesh( control_overlay.m_mouse_grabs ); + render_overlay_mesh( ov_mouse_grabs ); if( in_air && press_shift ) { @@ -856,31 +747,31 @@ void control_overlay_render(void) if( subsytem == k_player_subsystem_skate ) { colorize( 0, press_space || in_air ); - mdl_draw_submesh( control_overlay.m_mouse ); + render_overlay_mesh( ov_mouse ); colorize( lmb&&!rmb, press_space || in_air ); - mdl_draw_submesh( control_overlay.m_text_shuvit ); + render_overlay_mesh( ov_text_shuvit ); colorize( lmb, press_space || in_air ); - mdl_draw_submesh( lmb? control_overlay.m_lmb_down: control_overlay.m_lmb ); + render_overlay_mesh( lmb? ov_lmb_down: ov_lmb ); colorize( rmb&&!lmb, press_space || in_air ); - mdl_draw_submesh( control_overlay.m_text_kickflip ); + render_overlay_mesh( ov_text_kickflip ); colorize( rmb, press_space || in_air ); - mdl_draw_submesh( rmb? control_overlay.m_rmb_down: control_overlay.m_rmb ); + render_overlay_mesh( rmb? ov_rmb_down: ov_rmb ); colorize( rmb&&lmb, press_space || in_air ); - mdl_draw_submesh( control_overlay.m_text_treflip ); + render_overlay_mesh( ov_text_treflip ); } else if( subsytem == k_player_subsystem_walk ) { colorize( 0, 1 ); - mdl_draw_submesh( control_overlay.m_mouse ); - mdl_draw_submesh( control_overlay.m_text_look ); + render_overlay_mesh( ov_mouse ); + render_overlay_mesh( ov_text_look ); - mdl_draw_submesh( lmb? control_overlay.m_lmb_down: control_overlay.m_lmb ); - mdl_draw_submesh( rmb? control_overlay.m_rmb_down: control_overlay.m_rmb ); + render_overlay_mesh( lmb? ov_lmb_down: ov_lmb ); + render_overlay_mesh( rmb? ov_rmb_down: ov_rmb ); } } } diff --git a/control_overlay.h b/control_overlay.h index dd5edef..0ce6561 100644 --- a/control_overlay.h +++ b/control_overlay.h @@ -1,68 +1,37 @@ #pragma once -struct control_overlay -{ - mdl_context mdl; - GLuint tex; +#ifdef C0_STOPGAP /* -> control_overlay.h.c0 */ - mdl_submesh *m_key, - *m_key_down, - *m_shift, - *m_shift_down, - *m_space, - *m_space_down, - *m_jump_ind, - *m_jump_text, - *m_text_jump, - *m_text_carve, - *m_text_crouch, - *m_text_shift, - *m_text_grab, - *m_stored_ind, - *m_text_stored, - *m_text_left, - *m_text_right, - *m_text_push, - *m_text_manual, - *m_text_front_flip, *m_text_back_flip, - *m_text_w, *m_text_s, - *m_lmb, *m_lmb_down, - *m_rmb, *m_rmb_down, - *m_mouse, *m_mouse_grabs, - *m_text_kickflip, - *m_text_treflip, - *m_text_shuvit, - *m_text_walk, *m_text_walk_lwr, *m_text_forward, *m_text_back, - *m_text_skate, *m_text_e, *m_text_glide, *m_text_camera, - *m_text_run, *m_text_look, *m_text_rewind, *m_text_respawn, +c0_start( "control_overlay.h.c0" ); +mdl_context ctx; +mdl_open( &ctx, "models_src/rs_overlay.mdl", NULL ); +mdl_load_metadata_block( &ctx, NULL ); +mdl_close( &ctx ); - *m_ls, - *m_ls_circ_backflip, *m_ls_circ_frontflip, - *m_ls_circ_manual, *m_ls_circ_skate, *m_ls_circ_walk, - *m_rs, - *m_rs_circ_look, *m_rs_circ_grab, - - *m_lb, *m_lb_down, *m_carve_l, - *m_rb, *m_rb_down, *m_carve_r, - *m_lt, *m_lt_act, *m_lt_run, - *m_rt, *m_rt_act, *m_rt_grab, *m_rt_crouch, - - *m_y, *m_y_down, *m_text_y_walk, *m_text_y_walk_lwr, *m_text_y_glide, - *m_text_y_skate, - *m_b, *m_b_down, *m_text_b_kickflip, *m_text_b_push, - *m_x, *m_x_down, *m_text_x_treflip, - *m_a, *m_a_down, *m_text_a_shuvit, *m_text_a_jump, *m_text_a_jump_mid, +for( u32 i=0; ipstr_name ), mesh->submesh_start ); +} +c0_end(); - *m_dpad, *m_dpad_w, *m_dpad_n, *m_dpad_e, *m_dpad_s, - *m_text_dw_rewind, *m_text_de_camera, *m_text_dn_respawn, +#else - *m_met, *m_met_r, *m_met_l, *m_met_l_down, *m_met_r_down, - *m_text_met_menu, +enum control_overlay_mesh +{ + #include "control_overlay.h.c0" +}; - *m_key_menu, *m_key_menu_down, *m_text_menu; +struct control_overlay +{ + mdl_context mdl; + GLuint tex; i32 enabled; } extern control_overlay; void control_overlay_render(void); void control_overlay_init(void); + +#endif diff --git a/model.c b/model.c index 9b704cd..19f45f2 100644 --- a/model.c +++ b/model.c @@ -5,15 +5,18 @@ #pragma once #include "vg/vg_io.h" + +#ifndef C0_STOPGAP #include "vg/vg_async.h" #include "vg/vg_tex.h" +#endif #include "vg/vg_msg.h" #include "vg/vg_string.h" #include #include #include #include "model.h" -#include "render.h" +#include "shader_props.h" static void mdl_load_fatal_corrupt( mdl_context *mdl ) { @@ -81,7 +84,8 @@ static void mdl_load_array_file( mdl_context *mdl, mdl_array_ptr *ptr, if( arr->item_count ) { u32 size = stride*arr->item_count; - ptr->data = vg_linear_alloc( lin_alloc, vg_align8(size) ); + ptr->data = lin_alloc? vg_linear_alloc( lin_alloc, vg_align8(size) ): + malloc( size ); mdl_load_array_file_buffer( mdl, arr, ptr->data, stride ); } else @@ -283,6 +287,9 @@ int mdl_load_materials( mdl_context *mdl, void *lin_alloc ) mdl_array_ptr data; _mdl_load_array( mdl, &data, "shader_data", vg_mem.scratch, 1 ); + if( !lin_alloc ) + return 1; + for( u32 i=0; imaterials); i ++ ) { mdl_material *mat = mdl_arritm( &mdl->materials, i ); @@ -409,6 +416,7 @@ int mdl_pstreq( mdl_context *mdl, u32 pstr, const char *str, u32 djb2 ) * ---------------------------------------------------------------------------- */ +#ifndef C0_STOPGAP static void mesh_upload( glmesh *mesh, mdl_vert *verts, u32 vert_count, u32 *indices, u32 indice_count ) @@ -494,6 +502,7 @@ void mdl_draw_submesh( mdl_submesh *sm ) { mesh_drawn( sm->indice_start, sm->indice_count ); } +#endif mdl_mesh *mdl_find_mesh( mdl_context *mdl, const char *name ) { @@ -518,6 +527,7 @@ mdl_submesh *mdl_find_submesh( mdl_context *mdl, const char *mesh_name ) return mdl_arritm( &mdl->submeshs, mesh->submesh_start ); } +#ifndef C0_STOPGAP struct payload_glmesh_load { mdl_vert *verts; @@ -629,3 +639,4 @@ void mdl_async_full_load_std( mdl_context *mdl ) VG_TEX2D_CLAMP|VG_TEX2D_NEAREST, &tex->glname ); } } +#endif diff --git a/model.h b/model.h index 918c1f0..aade46a 100644 --- a/model.h +++ b/model.h @@ -85,7 +85,7 @@ typedef struct mdl_header mdl_header; typedef struct glmesh glmesh; struct glmesh { - GLuint vao, vbo, ebo; + u32 vao, vbo, ebo; u32 indice_count; u32 loaded; }; @@ -262,7 +262,8 @@ struct mdl_header mdl_array index; }; -struct mdl_context{ +struct mdl_context +{ FILE *file; mdl_header info; diff --git a/models_src/rs_overlay.mdl b/models_src/rs_overlay.mdl index 3f7ac75360c612733cba859869a7dd8b58498ac0..7c89d41b080927081823776df0a51cc1958e859a 100644 GIT binary patch delta 1219 zcmX|=UuaWT9LMiT+Imh+o15h3<~DzB6D*f*?Oe#wF%tiihfa%hGDi{rENFGXw3b+* zf{u&{15s)G`rw0z!X6w{ne@RbA{BhtTqk`PV-E^_*ux&AIH;ox5r60QxC1BW^Zk9l z=f~yn%feD>@nveNCv$F%VKBomPEORTW5-Sstu99x#0G8$>3oQ@1)K^=)QJAVU7}l5Ke*NvVQQrsb9~Stk?r6tO;loe-0YAd zs@*bPkcw$FjIK@zvy-zL_7V*eHPGyo!q$l^_>ELTt7+Bia+tFxetc8d#-*@_$#6Na z!th_XfLCOOu+fz0H*I`ldcxIr^Qc6m=+>&N6c$a+hI~p#INR^jaKyr`NUvC@lMSlI zu@rH!K$)w4CKTmt+NXi&9{dsYFh`X|w8kXfM0sF2fE}@d_)xdtI2)6qPpdTUQ|zZ0 zr>A*M^fG2+i{**++W!KhmJ}arRl|>##0`rF8bRDK3wUnXSReNUO_l%NKj1)IwyXJ2 zuRj~azV-s9;+)MRVoS^uEh=jNL`Rl`IByqFwr%W8cxc$1IbaEiheUa7PDoMI(LtOh zRnqDR{-M-(g0o4VrV}=bjwiNge+pGcimh7Rz(>w!SaLjEb2xjbZipS)nhkYn zsEf0|{f-xiR($Vg@*br)#=2azByBuPdf1latRIh)5@)E=p7O*_-ERnYQ&Q~G>T9Kt zPpMf_R3p0TCwA+^G^rAs^Lu5}oc)QLX^H(ruM~+rI%nVo)qhW0_$t#2Gh^d=#=~I7 z!nI7V_)@3JXl6<@J~c1aZ(WH^MCTNVeL8l9)MGs8_QXM5d5+uNQXJB1nN*3j zphADzbe1!dD2}(?E{3yZwgI2#Bo?SX;8Q542KHi3ilh2|ZRVHUuWV*+-KT55>*@Qx Vr;pJN&<@gWq1}3~r?0Jl{vELF9y9;| delta 1352 zcmYjQTWB0r7@o76Y|lwH*~wmJFWH@JG!Dxeo6CtdB&}|wFKU!+2~s4ztY+J+-K^<0 zf|Ur05B4FHO}>{PA}Iu^q7q5*0#(`vp~Q%JDB?qr2&MY4mQbrz$%Fry97_-UGv96g zb7sz&&3gOBt@c`1YI&DoFvBoT&s0m56Q>F7j6q=-rTLL)<4>Im9F7kCCU=rC3QSFu zk4_b4iq%q~?B)k{JX3o!#n)zDtrlI&9GL$!;i2nVV#uVN8vo}Cl@hfny;4z{_A-Q3 z|C7Zt$E$@Yw~09bnT@d7&)GW8H%DA`l-MTXeu=Yw z8!!895uo|h>(}k z=mo;anzrcBQVs`9iOVKuV=mezbj(GAZDEX?8S$V_&SIoZVx^6<8u<|fn{3pHU2xNx z;6WTQ9V`VoyN;=##C1Yj_%JA&vbsZq7dM0b;$cl==nP5JLh1t@CbS;1@IlCF+O7S( z7Zr;4XgYzmu*92T^?jZtbSZ4%UDFZ$+F!!AVJYZDy4!FOEFv)-;eo4OlJ1Qheh?4g zTF6En@woOEk%~(3gl5aQ5|hZqEc_gGFdO6SvQos8+TXxa1i2OlaFh7vekK4Z435caTnSmceIniSdMmf8&mLTK5{o?{O)f(d-b42??{EvuT_s zG)m~KLgG1{Si*e!F#A$z3rY9DQ*1AxO}EiO9s3(1DRD6w##}Okt)zu>NeA7jFs>#u z;(49Q;Z$mv<>^W%HpSV5i;}k5LDIwvI#)x%zJiMFh$C9LMv4?iHM@ZW9dt%J)axs> zO(=|!bOed?i>%j0*$x{kY0mZ&lc*CK!y9QSj_V$iE<2&wEdC^KQnR_$zRvHMkC?H* r++Td9*$1lCyASN!%>WZ&t@GAa+1m#TrP@r$0UuW$W7O?5!% diff --git a/render.h b/render.h index 64556ff..a0bde7e 100644 --- a/render.h +++ b/render.h @@ -5,6 +5,7 @@ #include "common.h" #include "model.h" #include "camera.h" +#include "shader_props.h" #include "shaders/blit.h" #include "shaders/blitblur.h" @@ -79,42 +80,6 @@ struct framebuffer{ } extern framebuffers[]; - -struct shader_props_standard -{ - u32 tex_diffuse; -}; - -struct shader_props_terrain -{ - u32 tex_diffuse; - v2f blend_offset; - v4f sand_colour; -}; - -struct shader_props_vertex_blend -{ - u32 tex_diffuse; - v2f blend_offset; -}; - -struct shader_props_water -{ - v4f shore_colour; - v4f deep_colour; - f32 fog_scale; - f32 fresnel; - f32 water_sale; - v4f wave_speed; -}; - -struct shader_props_cubemapped -{ - u32 tex_diffuse; - u32 cubemap_entity; - v4f tint; -}; - void render_init(void); void render_fsquad(void); void render_fsquad1(void); diff --git a/shader_props.h b/shader_props.h new file mode 100644 index 0000000..29e79f5 --- /dev/null +++ b/shader_props.h @@ -0,0 +1,37 @@ +#pragma once +#include "vg/vg_platform.h" + +struct shader_props_standard +{ + u32 tex_diffuse; +}; + +struct shader_props_terrain +{ + u32 tex_diffuse; + v2f blend_offset; + v4f sand_colour; +}; + +struct shader_props_vertex_blend +{ + u32 tex_diffuse; + v2f blend_offset; +}; + +struct shader_props_water +{ + v4f shore_colour; + v4f deep_colour; + f32 fog_scale; + f32 fresnel; + f32 water_sale; + v4f wave_speed; +}; + +struct shader_props_cubemapped +{ + u32 tex_diffuse; + u32 cubemap_entity; + v4f tint; +}; -- 2.25.1