clean up overlay init code
authorhgn <hgodden00@gmail.com>
Fri, 5 Apr 2024 04:15:47 +0000 (05:15 +0100)
committerhgn <hgodden00@gmail.com>
Fri, 5 Apr 2024 04:15:47 +0000 (05:15 +0100)
.gitignore
build.c
c0_stopgap.c [new file with mode: 0644]
control_overlay.c
control_overlay.h
model.c
model.h
models_src/rs_overlay.mdl
render.h
shader_props.h [new file with mode: 0644]

index 16634e91ea4be039f978feb7277a86f5fa6826bf..5955d4ec74199147e17f2e1e4d99dbacd3510d7e 100755 (executable)
@@ -5,6 +5,7 @@
 *.old
 *.bin
 *.swp
+*.c0
 
 # soft links
 steamworks_sdk
diff --git a/build.c b/build.c
index eb3de6285879b9f7f6c3196dd3b32349447da76f..5a078218b92914fd18cc3ff7bb10b04a8892f526 100644 (file)
--- 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 (file)
index 0000000..b33378c
--- /dev/null
@@ -0,0 +1,21 @@
+#include <stdio.h>
+#include <stdarg.h>
+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 );
+}
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 );
       }
    }
 }
index dd5edeff8c54dc28df8c9ff2aec564336ae4cea0..0ce6561e72156b697041940bcea4968e7c26657c 100644 (file)
@@ -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; i<mdl_arrcount( &ctx.meshs ); i ++ )
+{
+   mdl_mesh *mesh = mdl_arritm( &ctx.meshs, i );
+   c0_echof( "   %s = %u,\n", 
+               mdl_pstr( &ctx, mesh->pstr_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 9b704cd0df2196b4ccc556237dbd25cf1b5fa2a3..19f45f2d0466c8d3c55e1aca8160595b6e242431 100644 (file)
--- 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 <string.h>
 #include <stdlib.h>
 #include <errno.h>
 #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; i<mdl_arrcount(&mdl->materials); 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 918c1f08ec8f38eb38bf871f35d64cf42983c93b..aade46aa21ddd00c341c552d71669bc20f1fbd00 100644 (file)
--- 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;
 
index 3f7ac75360c612733cba859869a7dd8b58498ac0..7c89d41b080927081823776df0a51cc1958e859a 100644 (file)
Binary files a/models_src/rs_overlay.mdl and b/models_src/rs_overlay.mdl differ
index 64556ffbcfac1390a7c4789976c524e990d2608a..a0bde7e024bf3c46e92ebe91d82641c5ccc49833 100644 (file)
--- 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 (file)
index 0000000..29e79f5
--- /dev/null
@@ -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;
+};