addContact method
Implementation
void addContact(Particle particleA, Particle particleB) {
assert(
particleA != particleB,
"The particles in contact can't be the same",
);
final pa = particleA.position;
final pb = particleB.position;
final dx = pb.x - pa.x;
final dy = pb.y - pa.y;
final d2 = dx * dx + dy * dy;
if (d2 < squaredDiameter) {
final invD = d2 != 0 ? sqrt(1 / d2) : double.maxFinite;
final contact = ParticleContact(particleA, particleB)
..flags = particleA.flags | particleB.flags
..weight = 1 - d2 * invD * inverseDiameter
..normal.x = invD * dx
..normal.y = invD * dy;
contactBuffer.add(contact);
}
}