-#ifndef VEHICLE_C
-#define VEHICLE_C
-
+#include "skaterift.h"
#include "vehicle.h"
#include "scene_rigidbody.h"
-static int spawn_car( int argc, const char *argv[] ){
+struct drivable_vehicle gzoomer =
+{
+ .rb.co = {-2000,-2000,-2000}
+};
+
+int spawn_car( int argc, const char *argv[] )
+{
v3f ra, rb, rx;
v3_copy( skaterift.cam.pos, ra );
v3_muladds( ra, skaterift.cam.transform[2], -10.0f, rb );
return 0;
}
-static void vehicle_init(void){
+void vehicle_init(void)
+{
q_identity( gzoomer.rb.q );
v3_zero( gzoomer.rb.w );
v3_zero( gzoomer.rb.v );
v3_copy((v3f){ 1.0f, -0.25f, 1.5f }, gzoomer.wheels_local[3] );
}
-static void vehicle_wheel_force( int index ){
+void vehicle_wheel_force( int index )
+{
v3f pa, pb, n;
m4x3_mulv( gzoomer.rb.to_world, gzoomer.wheels_local[index], pa );
v3_muladds( pa, gzoomer.rb.to_world[1], -k_car_spring_length, pb );
}
}
-static void vehicle_solve_friction(void){
+void vehicle_solve_friction(void)
+{
rigidbody *rb = &gzoomer.rb;
for( int i=0; i<4; i++ ){
v3f raW;
}
}
-static void vehicle_update_fixed(void)
+void vehicle_update_fixed(void)
{
if( !gzoomer.alive )
return;
rb_update_matrices( rb );
}
-static void vehicle_update_post(void){
+void vehicle_update_post(void)
+{
if( !gzoomer.alive )
return;
vg_line( p0, py, VG__GREEN );
}
}
-
-#endif /* VEHICLE_H */