X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=world_render.h;h=10e416325b306529daa4ec9d0f6f2faa369098b2;hb=0310bab3c018e23f5516c3e3c3653b844a8106ed;hp=a01c056c32aebe5e332979461cfdbb1d74bc4e2c;hpb=926a64f679a23d8b0f3594d73405d2486c398a59;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/world_render.h b/world_render.h index a01c056..10e4163 100644 --- a/world_render.h +++ b/world_render.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2021-2022 Mt.ZERO Software, Harry Godden - All Rights Reserved + * Copyright (C) 2021-2023 Mt.ZERO Software, Harry Godden - All Rights Reserved */ #ifndef WORLD_RENDER_H @@ -405,8 +405,11 @@ VG_STATIC void render_world_gates( world_instance *world, camera *cam, render_gate( world, gate, cam, layer_depth ); } else if( gate->type == k_gate_type_nonlocel ){ - world_instance *dest_world = &world_global.worlds[ gate->target ]; - render_gate( dest_world, gate, cam, layer_depth ); + if( skaterift.async_op != k_async_op_world_loading && + skaterift.async_op != k_async_op_world_preloading ){ + world_instance *dest_world = &world_global.worlds[ gate->target ]; + render_gate( dest_world, gate, cam, layer_depth ); + } } else world->rendering_gate = NULL; @@ -415,17 +418,16 @@ VG_STATIC void render_world_gates( world_instance *world, camera *cam, VG_STATIC void world_prerender( world_instance *world ) { - static double g_time = 0.0; - g_time += vg.time_delta * (1.0/(k_day_length*60.0)); + world->time += vg.time_delta * (1.0/(k_day_length*60.0)); struct ub_world_lighting *state = &world->ub_lighting; - state->g_time = g_time; + state->g_time = world->time; state->g_realtime = vg.time; state->g_debug_indices = k_debug_light_indices; state->g_light_preview = k_light_preview; state->g_debug_complexity = k_debug_light_complexity; -state->g_time_of_day = vg_fractf( g_time ); + state->g_time_of_day = vg_fractf( world->time ); state->g_day_phase = cosf( state->g_time_of_day * VG_PIf * 2.0f ); state->g_sunset_phase= cosf( state->g_time_of_day * VG_PIf * 4.0f + VG_PIf ); @@ -438,9 +440,7 @@ state->g_time_of_day = vg_fractf( g_time ); state->g_sun_dir[2] = 0.2f; v3_normalize( state->g_sun_dir ); - world->probabilities[ k_probability_curve_constant ] = 1.0f; - float dp = state->g_day_phase; world->probabilities[ k_probability_curve_wildlife_day ] = @@ -448,12 +448,12 @@ state->g_time_of_day = vg_fractf( g_time ); world->probabilities[ k_probability_curve_wildlife_night ] = 1.0f-powf(fabsf((state->g_time_of_day-0.5f)*5.0f),5.0f); - glBindBuffer( GL_UNIFORM_BUFFER, world->ubo_lighting ); glBufferSubData( GL_UNIFORM_BUFFER, 0, sizeof(struct ub_world_lighting), &world->ub_lighting ); } +VG_STATIC void skateshop_render(void); VG_STATIC void render_world( world_instance *world, camera *cam, int layer_depth ) { @@ -465,25 +465,29 @@ VG_STATIC void render_world( world_instance *world, camera *cam, render_world_alphatest( world, cam ); render_terrain( world, cam ); - /* Render SFD's */ - u32 closest = 0; - float min_dist = INFINITY; + if( layer_depth == 0 ){ + skateshop_render(); - if( !mdl_arrcount( &world->ent_route ) ) - return; + /* Render SFD's */ + u32 closest = 0; + float min_dist = INFINITY; - for( u32 i=0; ient_route ); i++ ){ - ent_route *route = mdl_arritm( &world->ent_route, i ); - float dist = v3_dist2( route->board_transform[3], cam->pos ); + if( !mdl_arrcount( &world->ent_route ) ) + return; - if( dist < min_dist ){ - min_dist = dist; - closest = i; + for( u32 i=0; ient_route ); i++ ){ + ent_route *route = mdl_arritm( &world->ent_route, i ); + float dist = v3_dist2( route->board_transform[3], cam->pos ); + + if( dist < min_dist ){ + min_dist = dist; + closest = i; + } } - } - ent_route *route = mdl_arritm( &world->ent_route, closest ); - sfd_render( world, cam, route->board_transform ); + ent_route *route = mdl_arritm( &world->ent_route, closest ); + sfd_render( world, cam, route->board_transform ); + } } VG_STATIC void render_world_depth( world_instance *world, camera *cam )