projects
/
carveJwlIkooP6JGAAIwe30JlM.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix dumbass animator fucking uninitialized memory
[carveJwlIkooP6JGAAIwe30JlM.git]
/
vehicle.c
diff --git
a/vehicle.c
b/vehicle.c
index 3555a971ed35c140e15a63f252d243d13e7a6620..35004d6a81c08cbd323622a5bcce7c9ccf32e442 100644
(file)
--- a/
vehicle.c
+++ b/
vehicle.c
@@
-1,9
+1,14
@@
-#ifndef VEHICLE_C
-#define VEHICLE_C
-
+#include "skaterift.h"
#include "vehicle.h"
#include "vehicle.h"
+#include "scene_rigidbody.h"
+
+struct drivable_vehicle gzoomer =
+{
+ .rb.co = {-2000,-2000,-2000}
+};
-static int spawn_car( int argc, const char *argv[] ){
+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 );
v3f ra, rb, rx;
v3_copy( skaterift.cam.pos, ra );
v3_muladds( ra, skaterift.cam.transform[2], -10.0f, rb );
@@
-30,7
+35,8
@@
static int spawn_car( int argc, const char *argv[] ){
return 0;
}
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 );
q_identity( gzoomer.rb.q );
v3_zero( gzoomer.rb.w );
v3_zero( gzoomer.rb.v );
@@
-57,7
+63,8
@@
static void vehicle_init(void){
v3_copy((v3f){ 1.0f, -0.25f, 1.5f }, gzoomer.wheels_local[3] );
}
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 );
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 );
@@
-95,7
+102,7
@@
static void vehicle_wheel_force( int index ){
if( t < 1.0f ){
/* spring force */
if( t < 1.0f ){
/* spring force */
- float Fv = (1.0f-t) * k_car_spring*
k_rb
_delta;
+ float Fv = (1.0f-t) * k_car_spring*
vg.time_fixed
_delta;
v3f delta;
v3_sub( pa, gzoomer.rb.co, delta );
v3f delta;
v3_sub( pa, gzoomer.rb.co, delta );
@@
-104,7
+111,8
@@
static void vehicle_wheel_force( int index ){
v3_cross( gzoomer.rb.w, delta, rv );
v3_add( gzoomer.rb.v, rv, rv );
v3_cross( gzoomer.rb.w, delta, rv );
v3_add( gzoomer.rb.v, rv, rv );
- Fv += v3_dot(rv, gzoomer.rb.to_world[1]) * -k_car_spring_damp*k_rb_delta;
+ Fv += v3_dot(rv, gzoomer.rb.to_world[1])
+ * -k_car_spring_damp*vg.time_fixed_delta;
/* scale by normal incident */
Fv *= v3_dot( n, gzoomer.rb.to_world[1] );
/* scale by normal incident */
Fv *= v3_dot( n, gzoomer.rb.to_world[1] );
@@
-150,7
+158,8
@@
static void vehicle_wheel_force( int index ){
/* apply drive force */
if( index >= 2 ){
/* apply drive force */
if( index >= 2 ){
- v3_muls( ty, -gzoomer.drive * k_car_drive_force * k_rb_delta, F );
+ v3_muls( ty, -gzoomer.drive * k_car_drive_force
+ * vg.time_fixed_delta, F );
rb_linear_impulse( &gzoomer.rb, raW, F );
}
}
rb_linear_impulse( &gzoomer.rb, raW, F );
}
}
@@
-161,7
+170,8
@@
static void vehicle_wheel_force( int index ){
}
}
}
}
-static void vehicle_solve_friction(void){
+void vehicle_solve_friction(void)
+{
rigidbody *rb = &gzoomer.rb;
for( int i=0; i<4; i++ ){
v3f raW;
rigidbody *rb = &gzoomer.rb;
for( int i=0; i<4; i++ ){
v3f raW;
@@
-193,7
+203,7
@@
static void vehicle_solve_friction(void){
}
}
}
}
-
static
void vehicle_update_fixed(void)
+void vehicle_update_fixed(void)
{
if( !gzoomer.alive )
return;
{
if( !gzoomer.alive )
return;
@@
-211,8
+221,8
@@
static void vehicle_update_fixed(void)
v3_muls( rb->to_world[1], -fabsf(v3_dot( rb->v, rb->to_world[2] )) *
k_car_downforce, Fdown );
v3_muls( rb->to_world[1], -fabsf(v3_dot( rb->v, rb->to_world[2] )) *
k_car_downforce, Fdown );
- v3_muladds( rb->v, Fair,
k_rb
_delta, rb->v );
- v3_muladds( rb->v, Fdown,
k_rb
_delta, rb->v );
+ v3_muladds( rb->v, Fair,
vg.time_fixed
_delta, rb->v );
+ v3_muladds( rb->v, Fdown,
vg.time_fixed
_delta, rb->v );
for( int i=0; i<4; i++ )
vehicle_wheel_force( i );
for( int i=0; i<4; i++ )
vehicle_wheel_force( i );
@@
-238,7
+248,7
@@
static void vehicle_update_fixed(void)
}
len = rb_manifold_apply_filtered( manifold, len );
}
len = rb_manifold_apply_filtered( manifold, len );
- rb_presolve_contacts( manifold, len );
+ rb_presolve_contacts( manifold,
vg.time_fixed_delta,
len );
for( int i=0; i<8; i++ ){
rb_solve_contacts( manifold, len );
vehicle_solve_friction();
for( int i=0; i<8; i++ ){
rb_solve_contacts( manifold, len );
vehicle_solve_friction();
@@
-248,7
+258,8
@@
static void vehicle_update_fixed(void)
rb_update_matrices( rb );
}
rb_update_matrices( rb );
}
-static void vehicle_update_post(void){
+void vehicle_update_post(void)
+{
if( !gzoomer.alive )
return;
if( !gzoomer.alive )
return;
@@
-266,5
+277,3
@@
static void vehicle_update_post(void){
vg_line( p0, py, VG__GREEN );
}
}
vg_line( p0, py, VG__GREEN );
}
}
-
-#endif /* VEHICLE_H */