vg_info( "valid sections: %u\n", valid_sections );
vg_info( "----------------------------\n" );
+
+ route->ui_residual = 1.0f;
+ route->ui_residual_block_w = route->ui_first_block_width;
}
/*
route->flags = 0x00;
route->best_laptime = 0.0;
+ route->ui_stopper = 0.0f;
+ route->ui_residual = 0.0f;
if( mdl_arrcount(&world->ent_region) )
route->flags |= k_ent_route_flag_out_of_zone;
u32 colour = v4_rgba( route->colour ) | 0xff000000;
ui_px x = 0,
- h = route->factive * 16.0f;
+ h = route->factive * 16.0f,
+ base = inout_cursor[0];//(f32)vg.window_x*0.5f - route->ui_stopper;
+
+ if( route->ui_residual > 0.0f ){
+ ui_px w = route->ui_residual_block_w,
+ total = w + 4;
+
+ f32 t = vg_smoothstepf(1.0f-route->ui_residual);
+
+ x -= (f32)total * t;
+
+ ui_rect rect = { base+x, inout_cursor[1], w, h };
+
+ v4f fadecolour;
+ v4_copy( route->colour, fadecolour );
+ fadecolour[3] *= route->ui_residual;
+
+ ui_fill( rect, v4_rgba(fadecolour) );
+
+ x += total;
+ }
+
+ int got_first = 0;
for( u32 i=0; i<valid_sections; i ++ ){
struct time_block *block = &blocks[ i ];
ui_px w = 20 + (block->length * 6.0f);
- ui_rect rect = { x, inout_cursor[1], w, h };
+ ui_rect rect = { base+x, inout_cursor[1], w, h };
ui_fill( rect, colour );
if( block->clean )
s = floorf( as ),
ds = floorf( vg_fractf( as ) * 10.0f );
- if( (block->best != 0.0f) && (fabsf(diff) > 0.02f) ){
+ if( (block->best != 0.0f) && (fabsf(diff) > 0.001f) ){
if( diff > 0.0f )
vg_strcatch( &str, '+' );
else
}
x += w + 4;
+
+ if( !got_first ){
+ route->ui_first_block_width = w;
+ got_first = 1;
+ }
}
for( u32 i=0; i<route->checkpoints_count-valid_sections; i++ ){
struct time_block *block = &blocks[ i ];
ui_px w = 20;
- ui_rect rect = { x, inout_cursor[1], w, h };
+ ui_rect rect = { base+x, inout_cursor[1], w, h };
ui_outline( rect, -1, colour, 0 );
x += w + 4;
+
+ if( !got_first ){
+ route->ui_first_block_width = w;
+ got_first = 1;
+ }
}
inout_cursor[1] += h + 4;
+
+ vg_slewf( &route->ui_residual, 0.0f, vg.time_frame_delta );
+ route->ui_stopper = vg_lerpf( route->ui_stopper, (f32)x*0.5f,
+ vg.time_frame_delta );
}
static void world_routes_imgui( world_instance *world ){
- ui_point cursor = { 0, 0 };
+ ui_point cursor = { 4, 4 };
for( u32 i=0; i<mdl_arrcount(&world->ent_route); i++ ){
ent_route_imgui( world, mdl_arritm( &world->ent_route, i ), cursor );
}