clean up overlay init code
[carveJwlIkooP6JGAAIwe30JlM.git] / control_overlay.c
index 083a4110dd149f6b9b79b036a7b9df4b0ba63773..f0b7a9aef23f9eecd90885cb68b7ea917d1900b2 100644 (file)
 
 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 );
       }
    }
 }