build system revision
[carveJwlIkooP6JGAAIwe30JlM.git] / traffic.h
index 8850306b450d9aa534c3e1c024c058343190c3b3..004c62485f470f98580095b2ba5a1cebdbadd679 100644 (file)
--- a/traffic.h
+++ b/traffic.h
@@ -4,6 +4,7 @@
 #include "common.h"
 #include "model.h"
 #include "rigidbody.h"
+#include "world.h"
 
 typedef struct traffic_node traffic_node;
 typedef struct traffic_driver traffic_driver;
@@ -28,17 +29,6 @@ struct traffic_driver
    float t, speed;
 };
 
-static void eval_bezier_time( v3f p0, v3f p1, v3f h0, v3f h1, float t, v3f p )
-{
-   float tt = t*t,
-         ttt = tt*t;
-
-   v3_muls( p1, ttt, p );
-   v3_muladds( p, h1, 3.0f*tt  -3.0f*ttt, p );
-   v3_muladds( p, h0, 3.0f*ttt -6.0f*tt  +3.0f*t, p );
-   v3_muladds( p, p0, 3.0f*tt  -ttt -3.0f*t +1.0f, p );
-}
-
 static float eval_bezier_length( v3f p0, v3f p1, v3f h0, v3f h1, int res )
 {
    float length = 0.0f, m = 1.0f/(float)res;
@@ -148,9 +138,9 @@ static void traffic_drive( traffic_driver *driver )
    v3_muladds( next->co, next->h, -1.0f, h1 );
 
    eval_bezier_time( p0,p1,h0,h1, driver->t, pc );
-   eval_bezier_time( p0,p1,h0,h1, driver->t + ktimestep, pn );
+   eval_bezier_time( p0,p1,h0,h1, driver->t + vg.time_delta, pn );
 
-   float mod = ktimestep / v3_dist( pc, pn );
+   float mod = vg.time_delta / v3_dist( pc, pn );
    v3f dir,side,up;
    v3_sub( pn, pc, dir );
    v3_normalize(dir);
@@ -189,13 +179,13 @@ static void traffic_drive( traffic_driver *driver )
     * Jesus take the wheel
     */
    float steer_penalty = 1.0f-v3_dot( dir, driver->transform[0] );
-   steer_penalty /= ktimestep;
+   steer_penalty /= vg.time_delta;
    steer_penalty *= 30.0f;
    
    float target_speed = vg_maxf( 16.0f * (1.0f-steer_penalty), 0.1f ),
          accel = target_speed - driver->speed;
-   driver->speed = stable_force( driver->speed, accel*ktimestep*2.0f );
-   driver->t += driver->speed*mod*ktimestep;
+   driver->speed = stable_force( driver->speed, accel*vg.time_delta*2.0f );
+   driver->t += driver->speed*mod*vg.time_delta;
 
    /* 
     * Update transform