X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=world.h;h=d3072785671a37955b62bcd75e10c1f13e0a5022;hb=75703291fbf045008a3b1ebb20fc46a2617b6b3b;hp=5f297d0c68e8d6a5bd0908bcc85e05f201875145;hpb=23a1be081ab9e378cba49a23b8ed4d4082b580c1;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/world.h b/world.h index 5f297d0..d307278 100644 --- a/world.h +++ b/world.h @@ -306,10 +306,18 @@ VG_STATIC struct gworld *scene_no_collide, *scene_lines; + struct grind_edge + { + v3f p0, p1; + } + *grind_edges; + u32 grind_edge_count; + /* spacial mappings */ bh_tree *audio_bh, *trigger_bh, - *geo_bh; + *geo_bh, + *grind_bh; /* graphics */ glmesh mesh_route_lines; @@ -443,11 +451,11 @@ VG_STATIC void world_init(void) /* Other systems */ vg_info( "Loading other world systems\n" ); - vg_loader_highwater( world_render_init, NULL, NULL ); - vg_loader_highwater( world_sfd_init, NULL, NULL ); - vg_loader_highwater( world_water_init, NULL, NULL ); - vg_loader_highwater( world_gates_init, NULL, NULL ); - vg_loader_highwater( world_routes_init, NULL, NULL ); + vg_loader_step( world_render_init, NULL ); + vg_loader_step( world_sfd_init, NULL ); + vg_loader_step( world_water_init, NULL ); + vg_loader_step( world_gates_init, NULL ); + vg_loader_step( world_routes_init, NULL ); /* Allocate dynamic world memory arena */ u32 max_size = 76*1024*1024; @@ -549,11 +557,11 @@ VG_STATIC void world_update( v3f pos ) { world.switching_to_new_world = 0; world_unload(); - world_load(); + vg_loader_start( world_load ); + return; } } - world.sky_time += world.sky_rate * vg.time_delta; world.sky_rate = vg_lerp( world.sky_rate, world.sky_target_rate, vg.time_delta * 5.0 ); @@ -563,36 +571,40 @@ VG_STATIC void world_update( v3f pos ) world_routes_debug(); #endif - int closest = 0; - float min_dist = INFINITY; - - for( int i=0; i 0 ) { - float d = v3_dist2( world.routes[i].scoreboard_transform[3], pos ); + int closest = 0; + float min_dist = INFINITY; - if( d < min_dist ) + for( int i=0; itrack_id; + struct route *route = &world.routes[closest]; - if( id != 0xffffffff ) - { - struct netmsg_board *local_board = &scoreboard_client_data.boards[id]; + u32 id = route->track_id; - for( int i=0; i<13; i++ ) + if( id != 0xffffffff ) { - sfd_encode( i, &local_board->data[27*i] ); + struct netmsg_board *local_board = + &scoreboard_client_data.boards[id]; + + for( int i=0; i<13; i++ ) + { + sfd_encode( i, &local_board->data[27*i] ); + } } } }