X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=main.c;h=e967bcf9bb3c8acf3cf85c714102434663111cd5;hb=1740c935bfdacc65c5c7e4bb95fba1ada1f7118a;hp=8b2f5615193d5eb146719b4993bddc2c5ca16237;hpb=84a7ae83a25966e0004a1a4b409dbb3d49fae286;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/main.c b/main.c index 8b2f561..e967bcf 100644 --- a/main.c +++ b/main.c @@ -1,5 +1,9 @@ /* - * Copyright (C) Mount0 Software, Harry Godden - All Rights Reserved + * Copyright 2021-2022 (C) Mount0 Software, Harry Godden - All Rights Reserved + * + * module.h structure definitions + * module_submodule.h implementation + * module_submodule_2.h */ #include "common.h" @@ -17,20 +21,28 @@ vg_tex2d tex_water = { .path = "textures/water.qoi" }; static int debugview = 0; static int sv_debugcam = 0; static int lightedit = 0; -static int sv_scene = 1; +static int sv_scene = 0; +static int cl_ui = 1; /* Components */ -#include "road.h" +#define SR_NETWORKED + +/* uncomment this to run the game without any graphics being drawn */ +//#define SR_NETWORK_TEST + +#include "steam.h" +#include "network.h" + +#include "model.h" +//#include "road.h" #include "scene.h" -#include "ik.h" +//#include "ik.h" #include "audio.h" -#include "terrain.h" -#include "character.h" +//#include "terrain.h" +//#include "character.h" #include "ragdoll.h" #include "rigidbody.h" #include "render.h" -#include "gate.h" -#include "water.h" #include "world.h" #include "player.h" @@ -38,9 +50,10 @@ static int sv_scene = 1; #include "shaders/standard.h" #include "shaders/unlit.h" -#ifndef VG_RELEASE #include "physics_test.h" -#endif +#include "anim_test.h" + +#include "gate.h" void vg_register(void) { @@ -49,18 +62,17 @@ void vg_register(void) shader_vblend_register(); shader_unlit_register(); + player_register(); world_register(); - character_register(); - water_register(); gate_register(); } static void init_other(void) { + player_init(); render_init(); gate_init(); world_init(); - character_init(); audio_init(); } @@ -77,7 +89,8 @@ vg_tex2d *texture_list[] = int main( int argc, char *argv[] ) { - vg_init( argc, argv, "CARBE" ); + highscores_init( 2000, 50 ); + vg_init( argc, argv, "Voyager Game Engine" ); } static int playermodel( int argc, char const *argv[] ) @@ -86,7 +99,7 @@ static int playermodel( int argc, char const *argv[] ) glmesh old_mesh = player.mdl.mesh; - if( character_load( &player.mdl, argv[0] ) ) + if( player_load_model( argv[0] ) ) mesh_free( &old_mesh ); return 1; @@ -94,13 +107,7 @@ static int playermodel( int argc, char const *argv[] ) void vg_start(void) { - vg_convar_push( (struct vg_convar){ - .name = "scene", - .data = &sv_scene, - .data_type = k_convar_dtype_i32, - .opt_i32 = { .min=0, .max=1, .clamp=1 }, - .persistent = 1 - }); + steam_init(); vg_convar_push( (struct vg_convar){ .name = "fc", @@ -118,6 +125,14 @@ void vg_start(void) .persistent = 1 }); + vg_convar_push( (struct vg_convar){ + .name = "fcs", + .data = &fc_speed, + .data_type = k_convar_dtype_f32, + .opt_f32 = { .clamp = 0 }, + .persistent = 1 + }); + vg_convar_push( (struct vg_convar){ .name = "ledit", .data = &lightedit, @@ -126,6 +141,14 @@ void vg_start(void) .persistent = 1 }); + vg_convar_push( (struct vg_convar){ + .name = "cl_ui", + .data = &cl_ui, + .data_type = k_convar_dtype_i32, + .opt_i32 = { .min=0, .max=1, .clamp=1 }, + .persistent = 1 + }); + vg_convar_push( (struct vg_convar){ .name = "walk_speed", .data = &k_walkspeed, @@ -134,6 +157,38 @@ void vg_start(void) .persistent = 1 }); + vg_convar_push( (struct vg_convar){ + .name = "run_speed", + .data = &k_runspeed, + .data_type = k_convar_dtype_f32, + .opt_f32 = { .clamp = 0 }, + .persistent = 1 + }); + + vg_convar_push( (struct vg_convar){ + .name = "walk_accel", + .data = &k_walk_accel, + .data_type = k_convar_dtype_f32, + .opt_f32 = { .clamp = 0 }, + .persistent = 1 + }); + + vg_convar_push( (struct vg_convar){ + .name = "rd_floaty", + .data = &k_ragdoll_floatyiness, + .data_type = k_convar_dtype_f32, + .opt_f32 = { .clamp = 0 }, + .persistent = 1 + }); + + vg_convar_push( (struct vg_convar){ + .name = "rd_floatd", + .data = &k_ragdoll_floatydrag, + .data_type = k_convar_dtype_f32, + .opt_f32 = { .clamp = 0 }, + .persistent = 1 + }); + vg_convar_push( (struct vg_convar){ .name = "dt", .data = &ktimestep, @@ -175,31 +230,45 @@ void vg_start(void) if( sv_scene == 0 ) { - character_load( &player.mdl, "ch_default" ); - character_init_ragdoll( &player.mdl ); + player_load_model( "ch_new" ); world_load(); reset_player( 1, (const char *[]){ "start" } ); - rb_init( &player.rb ); + rb_init( &player.phys.rb ); + + network_init(); } - else + else if( sv_scene == 1 ) { physics_test_start(); } + else if( sv_scene == 2 ) + { + anim_test_start(); + } } void vg_free(void) { + network_end(); vg_tex2d_free( texture_list, vg_list_size(texture_list) ); + /* TODO: THE REST OF THE GOD DAMN FREEING STUFF */ + steam_end(); + + highscores_serialize_all(); + highscores_free(); } void vg_update(void) { + steam_update(); + if( sv_scene == 0 ) { + network_update(); player_update(); - world_update(); + world_update( player.phys.rb.co ); //traffic_visualize( world.traffic, world.traffic_count ); // /* TEMP */ @@ -212,6 +281,10 @@ void vg_update(void) { physics_test_update(); } + else if( sv_scene == 2 ) + { + anim_test_update(); + } } static void vg_framebuffer_resize( int w, int h ) @@ -230,17 +303,17 @@ static void draw_origin_axis(void) static void render_main_game(void) { - float speed = freecam? 0.0f: v3_length( player.rb.v ); + float speed = freecam? 0.0f: v3_length( player.phys.rb.v ); v3f shake = { vg_randf()-0.5f, vg_randf()-0.5f, vg_randf()-0.5f }; v3_muls( shake, speed*0.01f, shake ); m4x4f world_4x4; m4x3_expand( player.camera_inverse, world_4x4 ); - gpipeline.fov = freecam? 60.0f: 135.0f; /* 120 */ + gpipeline.fov = freecam? 60.0f: 125.0f; /* 120 */ m4x4_projection( vg_pv, gpipeline.fov, (float)vg_window_x / (float)vg_window_y, - 0.1f, 2100.0f ); + 0.02f, 2100.0f ); m4x4_mul( vg_pv, world_4x4, vg_pv ); @@ -250,19 +323,18 @@ static void render_main_game(void) * Draw world */ + int draw_solid = player.is_dead | freecam; + render_world( vg_pv, player.camera ); + if( draw_solid ) + draw_player(); render_water_texture( player.camera ); glBindFramebuffer( GL_FRAMEBUFFER, 0 ); render_water_surface( vg_pv, player.camera ); - vg_tex2d_bind( &tex_water, 1 ); - - for( int i=0; i 1.0 ) + if( glfwGetKey(vg_window,GLFW_KEY_N) ) + { + last_b_press = vg_time; + world_routes_ui_newseg( 0 ); + } + + static double last_m_press; + if( vg_time-last_m_press > 1.0 ) + if( glfwGetKey( vg_window, GLFW_KEY_M) ) + { + last_m_press = vg_time; + + vg_info( "start: %u\n",world.routes.routes[0].ui.segment_count ); + for( int i=0; i