X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=rigidbody.h;h=d39cf1b6012926941f63860c8e441927f160bc4b;hb=0124cd309a7db70cdd74b5661f2df8b862ca2f2f;hp=f4d6ef9ccf0e1c5336087ba135b7fcde726118b6;hpb=2a238d32da833812e837cf38e16a7685c98db5c3;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/rigidbody.h b/rigidbody.h index f4d6ef9..d39cf1b 100644 --- a/rigidbody.h +++ b/rigidbody.h @@ -43,24 +43,24 @@ VG_STATIC float VG_STATIC void rb_register_cvar(void) { - vg_convar_push( (struct vg_convar){ + vg_var_push( (struct vg_var){ .name = "k_limit_bias", .data = &k_limit_bias, - .data_type = k_convar_dtype_f32, .opt_f32 = {.clamp = 0}, .persistent = 1 + .data_type = k_var_dtype_f32, .opt_f32 = {.clamp = 0}, .persistent = 1 }); - vg_convar_push( (struct vg_convar){ + vg_var_push( (struct vg_var){ .name = "k_joint_bias", .data = &k_joint_bias, - .data_type = k_convar_dtype_f32, .opt_f32 = {.clamp = 0}, .persistent = 1 + .data_type = k_var_dtype_f32, .opt_f32 = {.clamp = 0}, .persistent = 1 }); - vg_convar_push( (struct vg_convar){ + vg_var_push( (struct vg_var){ .name = "k_joint_correction", .data = &k_joint_correction, - .data_type = k_convar_dtype_f32, .opt_f32 = {.clamp = 0}, .persistent = 1 + .data_type = k_var_dtype_f32, .opt_f32 = {.clamp = 0}, .persistent = 1 }); - vg_convar_push( (struct vg_convar){ + vg_var_push( (struct vg_var){ .name = "k_joint_impulse", .data = &k_joint_impulse, - .data_type = k_convar_dtype_f32, .opt_f32 = {.clamp = 0}, .persistent = 1 + .data_type = k_var_dtype_f32, .opt_f32 = {.clamp = 0}, .persistent = 1 }); } @@ -2350,6 +2350,21 @@ VG_STATIC void rb_correct_swingtwist_constraints( rb_constr_swingtwist *buf, } } +VG_STATIC void rb_correct_contact_constraints( rb_ct *buf, int len, float amt ) +{ + for( int i=0; irba, + *rbb = ct->rbb; + + float mass_total = 1.0f / (rba->inv_mass + rbb->inv_mass); + + v3_muladds( rba->co, ct->n, -mass_total * rba->inv_mass, rba->co ); + v3_muladds( rbb->co, ct->n, mass_total * rbb->inv_mass, rbb->co ); + } +} + /* * Effectors