void processCollision( ArcadeRigidbody other, ref Vector2 minimumTranslationVector )
{
// we compute a response for the two colliding objects. The calculations are based on the relative velocity of the objects
// which gets reflected along the collided surface normal. Then a part of the response gets added to each object based on mass.
var relativeVelocity = velocity - other.velocity;
calculateResponseVelocity( ref relativeVelocity, ref minimumTranslationVector, out relativeVelocity );
// now we use the masses to linearly scale the response on both rigidbodies
var totalInverseMass = _inverseMass + other._inverseMass;
var ourResponseFraction = _inverseMass / totalInverseMass;
var otherResponseFraction = other._inverseMass / totalInverseMass;
velocity += relativeVelocity * ourResponseFraction;
other.velocity -= relativeVelocity * otherResponseFraction;
}