X-Git-Url: https://harrygodden.com/git/?p=vg.git;a=blobdiff_plain;f=labs%2Fphysics.c;fp=labs%2Fphysics.c;h=c570a31d235c18f600c0874ee32ad90fff1daf0a;hp=7373660b9fcac4dc9bba1c116b5e693e03badb28;hb=3b14f3dcd5bf9dd3c85144f2123d667bfa4bb63f;hpb=fce86711735b15bff37de0f70716808410fcf269 diff --git a/labs/physics.c b/labs/physics.c index 7373660..c570a31 100644 --- a/labs/physics.c +++ b/labs/physics.c @@ -1,23 +1,13 @@ -#define VG_GAME -#define VG_AUDIO_FORCE_COMPRESSED -#define VG_3D -#define VG_LOG_SOURCE_INFO -#define VG_TIMESTEP_FIXED (1.0/60.0) - -#ifndef VG_RELEASE - #define VG_DEVWINDOW -#endif - -#define SDL_MAIN_HANDLED - -#define VG_MAX_CONTACTS 2048 - -#include "vg/vg.h" +#include "vg/vg_engine.h" +#include "vg/vg_opt.h" +#include "vg/vg_audio.h" #include "vg/vg_camera.h" #include "vg/vg_rigidbody.h" #include "vg/vg_rigidbody_collision.h" +#include "vg/vg_rigidbody_view.h" #include "vg/vg_profiler.h" #include "vg/vg_bvh.h" +#include "vg/vg_input.h" #define SHAPE_MAX 256 static rigidbody shapes[SHAPE_MAX]; @@ -105,15 +95,17 @@ int main( int argc, char *argv[] ){ return 0; } -static void vg_launch_opt(void){ +void vg_launch_opt(void){ const char *arg; } -static void vg_preload(void){ +void vg_preload(void) +{ vg_audio.dsp_enabled = 0; } -static void init_random(void){ +static void init_random(void) +{ for( u32 i=0; i<(u32)k_shapes; i ++ ){ f32 h = vg_randf64( &vg.rand ) * 2.0f + 1.3f, r = vg_randf64( &vg.rand ) * 0.5f + 0.125f, @@ -181,7 +173,8 @@ static void reset_racket(void){ rb_update_matrices( &racket ); } -static void vg_load(void){ +void vg_load(void) +{ vg_bake_shaders(); init_random(); shape_bvh_tree = bh_create( NULL, &shape_bvh, NULL, SHAPE_MAX, 1 ); @@ -189,7 +182,8 @@ static void vg_load(void){ reset_racket(); } -static void vg_pre_update(void){ +void vg_pre_update(void) +{ vg_console.cheats = 1; vg_lines.render = 1; } @@ -343,7 +337,8 @@ static void demo0(void){ vg_profile_increment( &prof_narrow ); vg_profile_begin( &prof_solve ); - rb_presolve_contacts( rb_contact_buffer, rb_contact_count ); + rb_presolve_contacts( rb_contact_buffer, + vg.time_fixed_delta, rb_contact_count ); for( u32 i=0; i<(u32)k_iterations; i ++ ) rb_solve_contacts( rb_contact_buffer, rb_contact_count ); @@ -377,17 +372,20 @@ static void demo1(void){ vg_profile_end( &prof_solve ); } -static void vg_fixed_update(void){ +void vg_fixed_update(void) +{ if( k_demo == 0 ) demo0(); else if( k_demo == 1 ) demo1(); } -static void vg_post_update(void){ +void vg_post_update(void) +{ if( vg_getkey( SDLK_8 ) ) init_random(); } -static void vg_framebuffer_resize( int w, int h ){ +void vg_framebuffer_resize( int w, int h ) +{ } static void draw_origin_axis(void){ @@ -444,7 +442,8 @@ static void render1(void){ vg_rb_view_capsule( mmdl, racket_cb.r, racket_cb.h, (v4f){0,1,0,1} ); } -static void vg_render(void){ +void vg_render(void) +{ glBindFramebuffer( GL_FRAMEBUFFER, 0 ); glViewport( 0,0, vg.window_x, vg.window_y ); glEnable( GL_DEPTH_TEST ); @@ -537,7 +536,8 @@ static void gui1( ui_rect panel ){ } } -static void vg_gui(void){ +void vg_gui(void) +{ vg_ui.wants_mouse = 1; ui_rect panel = { vg.window_x-300, 0, 300, vg.window_y }; ui_rect_pad( panel, (ui_px[2]){ 8, 8 } );