X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=rigidbody.h;fp=rigidbody.h;h=60fc88ce59a18275f59c6b36aba67ed88f9fbb89;hb=610907ae753bdda202236d52a6fcf77d14d63193;hp=f2f36cb2ba063f2aa0ee061b2a0686117ebd1cd6;hpb=e5dfbef890431a69291a9f0a9ca4a88ea8d0705a;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/rigidbody.h b/rigidbody.h index f2f36cb..60fc88c 100644 --- a/rigidbody.h +++ b/rigidbody.h @@ -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 */