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
});
}
}
}
+VG_STATIC void rb_correct_contact_constraints( rb_ct *buf, int len, float amt )
+{
+ for( int i=0; i<len; i++ )
+ {
+ rb_ct *ct = &buf[i];
+ rigidbody *rba = ct->rba,
+ *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