- float cur_x = (1.0f-t)*base_x0 + t*base_x1;
-
- v3f sc, sa, sb, down;
- v3_muladds( p, right, cur_x, sc );
- v3_muladds( sc, up, 1.5f, sc );
- v3_muladds( sc, right, 0.45f, sa );
- v3_muladds( sc, right, -0.45f, sb );
- v3_muls( up, -1.0f, down );
-
- ray_hit ha, hb;
- ha.dist = 8.0f;
- hb.dist = 8.0f;
- if(ray_world( sa, down, &ha ) &&
- ray_world( sb, down, &hb ))
- {
- mdl_vert va, vb;
-
- v3_muladds( ha.pos, up, 0.06f, va.co );
- v3_muladds( hb.pos, up, 0.06f, vb.co );
- v3_copy( up, va.norm );
- v3_copy( up, vb.norm );
- v3_zero( va.colour );
- v3_zero( vb.colour );
- v2_zero( va.uv );
- v2_zero( vb.uv );
-
- scene_push_vert( &r->scene_lines, &va );
- scene_push_vert( &r->scene_lines, &vb );
-
- if( last_valid )
- {
- /* Connect them with triangles */
- scene_push_tri( &r->scene_lines, (u32[3]){
- last_valid+0-2, last_valid+1-2, last_valid+2-2} );
- scene_push_tri( &r->scene_lines, (u32[3]){
- last_valid+1-2, last_valid+3-2, last_valid+2-2} );
- }
-
- last_valid = r->scene_lines.vertex_count;
- }
- else
- last_valid = 0;
+ /* count */
+ u32 node_count = 0,
+ route_count = 0,
+ gate_count = 0,
+ collector_count = 0;
+
+ for( int i=0; i<world.meta->info.node_count; i++ )
+ {
+ mdl_node *pnode = mdl_node_from_id( world.meta, i );
+
+ if( pnode->classtype == k_classtype_route_node ||
+ pnode->classtype == k_classtype_gate )
+ {
+ pnode->sub_uid = node_count;