fuckin hell
[carveJwlIkooP6JGAAIwe30JlM.git] / world_routes.h
index 5a7c07b36df0b154c921a3970fd050eaafb19d63..35f38f0f04a094394f80ab15a6d6f5563abafa42 100644 (file)
@@ -5,11 +5,15 @@
 #ifndef ROUTES_H
 #define ROUTES_H
 
+#include <time.h>
 #include "world.h"
 #include "world_gate.h"
 
+#if 0
 #include "shaders/vblend.h"
-#include "shaders/route.h"
+#endif
+
+#include "shaders/scene_route.h"
 #include "shaders/routeui.h"
 
 
@@ -530,6 +534,17 @@ VG_STATIC void world_routes_verify_run( u32 route )
    world.routes[route].latest_pass = world.time;
 }
 
+VG_STATIC void world_routes_clear(void)
+{
+   for( u32 i=0; i<world.route_count; i++ )
+   {
+      struct route *route = &world.routes[i];
+      route->active = 0;
+   }
+   world.current_run_version += 4;
+   world.last_use = 0.0;
+}
+
 /*
  * When going through a gate this is called for bookkeeping purposes
  */
@@ -734,12 +749,13 @@ VG_STATIC void world_routes_create_mesh( u32 route_id )
          if( ray_world( sa, down, &ha ) && 
              ray_world( sb, down, &hb ))
          {
-            mdl_vert va, vb;
+            scene_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 );
+
+            scene_vert_pack_norm( &va, up );
+            scene_vert_pack_norm( &vb, up );
             v2_zero( va.uv );
             v2_zero( vb.uv );
 
@@ -1066,7 +1082,7 @@ VG_STATIC void world_routes_init(void)
    world.time = RESET_MAX_TIME*2.0;
    world.last_use = 0.0;
 
-   shader_route_register();
+   shader_scene_route_register();
    shader_routeui_register();
 
    vg_acquire_thread_sync();
@@ -1120,19 +1136,22 @@ VG_STATIC void world_routes_update(void)
 }
 
 VG_STATIC void bind_terrain_noise(void);
-VG_STATIC void render_world_routes( m4x4f projection, v3f camera )
+VG_STATIC void render_world_routes( camera *cam )
 {
    m4x3f identity_matrix;
    m4x3_identity( identity_matrix );
 
-   shader_route_use();
-   shader_route_uTexGarbage(0);
-   shader_link_standard_ub( _shader_route.id, 2 );
+   shader_scene_route_use();
+   shader_scene_route_uTexGarbage(0);
+   shader_link_standard_ub( _shader_scene_route.id, 2 );
    bind_terrain_noise();
 
-   shader_route_uPv( projection );
-   shader_route_uMdl( identity_matrix );
-   shader_route_uCamera( camera );
+   shader_scene_route_uPv( cam->mtx.pv );
+   shader_scene_route_uPvmPrev( cam->mtx_prev.pv );
+   shader_scene_route_uMdl( identity_matrix );
+   shader_scene_route_uCamera( cam->transform[3] );
+   shader_scene_route_uBoard0( TEMP_BOARD_0 );
+   shader_scene_route_uBoard1( TEMP_BOARD_1 );
 
    mesh_bind( &world.mesh_route_lines );
 
@@ -1144,7 +1163,7 @@ VG_STATIC void render_world_routes( m4x4f projection, v3f camera )
       v3_lerp( (v3f){0.7f,0.7f,0.7f}, route->colour, route->factive, colour );
       colour[3] = 1.0f;
 
-      shader_route_uColour( colour );
+      shader_scene_route_uColour( colour );
       mdl_draw_submesh( &route->sm );
    }
 }