- na = (x*a->dx + y*a->dy); // sqrt(a->dx*a->dx + a->dy*a->dy);
- nb = (x*b->dx + y*b->dy); // sqrt(b->dx*b->dx + b->dy*b->dy);
+ // velocities along (x, y), or 0 if already moving away.
+ da = max(x*a->dx + y*a->dy, 0);
+ db = min(x*b->dx + y*b->dy, 0);
+
+ // mass ratio
+ ma = sprite_mass(a); mb = sprite_mass(b);
+ if(ma && mb) mr = mb/ma; else mr = 1;