bouncy balls
[carveJwlIkooP6JGAAIwe30JlM.git] / rigidbody.h
index f2f36cb2ba063f2aa0ee061b2a0686117ebd1cd6..60fc88ce59a18275f59c6b36aba67ed88f9fbb89 100644 (file)
@@ -1659,6 +1659,20 @@ VG_STATIC void rb_rcv( rigidbody *rba, rigidbody *rbb, v3f ra, v3f rb, v3f rv )
    v3_sub( rva, rvb, rv );
 }
 
+VG_STATIC void rb_contact_restitution( rb_ct *ct, float cr )
+{
+   v3f rv, ra, rb;
+   v3_sub( ct->co, ct->rba->co, ra );
+   v3_sub( ct->co, ct->rbb->co, rb );
+   rb_rcv( ct->rba, ct->rbb, ra, rb, rv );
+
+   float v = v3_dot( rv, ct->n );
+
+   if( v < -1.0f ){
+      ct->bias += -cr * v;
+   }
+}
+
 /*
  * Apply impulse to object
  */