X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;ds=sidebyside;f=world_gen.h;h=4605adf662a6107c0a02b0b12c037a39f48f205d;hb=bdac014448b6ec968fe645f1581f321144f07dba;hp=ccd3eda875feb36294f81108447610e2ecf730b2;hpb=47941822dae18a018c985847b052e70214a3ccc6;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/world_gen.h b/world_gen.h index ccd3eda..4605adf 100644 --- a/world_gen.h +++ b/world_gen.h @@ -8,8 +8,7 @@ #include "world.h" /* load world TODO: Put back vg back in loading state while this happens */ -VG_STATIC void world_load( const char *mdl_file ); - +VG_STATIC void world_load(void); VG_STATIC void world_add_all_if_material( m4x3f transform, scene *pscene, @@ -31,24 +30,6 @@ VG_STATIC void world_add_all_if_material( m4x3f transform, scene *pscene, scene_add_submesh( pscene, mdl, sm, transform2 ); } } - -#if 0 - if( pnode->classtype == k_classtype_instance ) - { - if( pnode->sub_uid ) - { - u32 instance_id = pnode->sub_uid -1; - struct instance_cache *cache = &world.instance_cache[instance_id]; - mdl_context *mdl2 = cache->mdl; - - m4x3f transform2; - mdl_node_transform( pnode, transform2 ); - m4x3_mul( transform, transform2, transform2 ); - - world_add_all_if_material( transform2, pscene, mdl2, id ); - } - } -#endif } } @@ -199,51 +180,6 @@ VG_STATIC void world_pct_water( mdl_node *pnode ) } } -VG_STATIC void world_pct_instance( mdl_node *pnode ) -{ - struct classtype_instance *inst = mdl_get_entdata( world.meta, pnode ); - pnode->sub_uid = 0; - - int cache_entry = 0; - for( int i=0; ipstr_file == cache->pstr_file ) - { - cache_entry = 1; - pnode->sub_uid = i+1; - break; - } - } - - if( !cache_entry ) - { - if( world.instance_cache_count == vg_list_size(world.instance_cache) ) - vg_fatal_exit_loop( "Instance cache is full!" ); - - struct instance_cache *cache = - &world.instance_cache[world.instance_cache_count ++ ]; - - cache->pstr_file = inst->pstr_file; - -#if 0 - cache->mdl = mdl_load( filename ); - - if( cache->mdl ) - { - world.instance_cache_count ++; - pnode->sub_uid = world.instance_cache_count; - mdl_link_materials( mworld, cache->mdl ); - vg_success( "Cached %s\n", filename ); - } - else - { - vg_warn( "Failed to cache %s\n", filename ); - } -#endif - } -} - VG_STATIC void world_pct_audio( mdl_node *pnode ) { struct world_audio_thing *thing = &world.audio_things[ @@ -261,6 +197,8 @@ VG_STATIC void world_pct_audio( mdl_node *pnode ) thing->flags = aud->flags; thing->temp_embedded_clip.path = mdl_pstr( world.meta, aud->pstr_file ); + thing->temp_embedded_clip.source_mode = k_audio_source_mono; + audio_clip_load( &thing->temp_embedded_clip ); thing->player.name = mdl_pstr( world.meta, pnode->pstr_name ); thing->player.enqued = 0; @@ -280,7 +218,6 @@ VG_STATIC void world_entities_process(void) { { k_classtype_spawn, world_pct_spawn }, { k_classtype_water, world_pct_water }, - { k_classtype_instance, world_pct_instance }, { k_classtype_audio, world_pct_audio }, }; @@ -344,25 +281,12 @@ VG_STATIC void world_entities_process(void) #endif } -VG_STATIC void world_load_instance_cache(void) -{ - vg_linear_clear( vg_mem.scratch ); - - for( int i=0; ipstr_file ); - inst->mdl = mdl_load_full( vg_mem.scratch, filename ); - } -} - VG_STATIC void world_generate(void) { /* * Compile meshes into the world scenes */ - world.scene_geo = scene_init( world.dynamic_vgl, 500000, 1200000 ); + world.scene_geo = scene_init( world.dynamic_vgl, 350000, 1200000 ); /* * TODO: System to dynamically allocate these @@ -397,8 +321,6 @@ VG_STATIC void world_generate(void) m4x3f midentity; m4x3_identity( midentity ); - world_load_instance_cache(); - /* * Generate scene: collidable geometry * ---------------------------------------------------------------- @@ -465,6 +387,7 @@ VG_STATIC void world_generate(void) world.scene_no_collide = scene_init( world.dynamic_vgl, 200000, 500000 ); vg_info( "Applying foliage\n" ); + srand(0); world_apply_procedural_foliage(); scene_copy_slice( world.scene_no_collide, &world.sm_foliage_main ); @@ -537,13 +460,16 @@ VG_STATIC void world_post_process(void) ortho[3][3] = 1.0f; m4x3_identity( camera ); - glViewport( 0, 0, 1024, 1024 ); glDisable(GL_DEPTH_TEST); + glDisable(GL_BLEND); + glDisable(GL_CULL_FACE); glBindFramebuffer( GL_FRAMEBUFFER, gpipeline.fb_depthmap ); + glViewport( 0, 0, 1024, 1024 ); shader_fscolour_use(); shader_fscolour_uColour( (v4f){-9999.0f,-9999.0f,-9999.0f,-9999.0f} ); render_fsquad(); + /* todo: hmm?? */ glEnable(GL_BLEND); glBlendFunc(GL_ONE, GL_ONE); glBlendEquation(GL_MAX); @@ -590,6 +516,26 @@ VG_STATIC void world_unload(void) mesh_free( &world.mesh_route_lines ); mesh_free( &world.mesh_water ); + world.time = 0.0; + world.rewind_from = 0.0; + world.rewind_to = 0.0; + world.last_use = 0.0; + world.active_gate = 0; + world.current_run_version = 2; + world.active_route_board = 0; + v3_zero( world.render_gate_pos ); + + for( int i=0; isegment_start = 0; + uib->segment_count = 0; + uib->fade_start = 0; + uib->fade_count = 0; + uib->fade_timer_start = 0.0; + uib->xpos = 0.0f; + } + /* delete the entire block of memory */ vg_linear_clear( world.dynamic_vgl ); @@ -631,16 +577,15 @@ VG_STATIC void world_unload(void) world.collectors = NULL; world.collector_count = 0; - world.instance_cache_count = 0; world.water.enabled = 0; } -VG_STATIC void world_load( const char *mdl_file ) +VG_STATIC void world_load(void) { world_unload(); - world.meta = mdl_load_full( world.dynamic_vgl, mdl_file ); - vg_info( "Loading world: %s\n", mdl_file ); + world.meta = mdl_load_full( world.dynamic_vgl, world.world_name ); + vg_info( "Loading world: %s\n", world.world_name ); /* dynamic allocations */ world_ents_allocate();