detectCollision method

  1. @override
void detectCollision(
  1. Shape shape1,
  2. Shape shape2,
  3. ContactManifold manifold
)
override

Detect collision of the shapes provided

Implementation

@override
void detectCollision(Shape shape1,Shape shape2,ContactManifold manifold ){
  final s1 = shape1 as Sphere;
  final s2 = shape2 as Sphere;
  final p1 = s1.position;
  final p2 = s2.position;
  double dx = p2.x - p1.x;
  double dy = p2.y - p1.y;
  double dz = p2.z - p1.z;
  double len = dx * dx + dy * dy + dz * dz;
  double r1 = s1.radius;
  double r2 = s2.radius;
  double rad = r1 + r2;
  if ( len > 0 && len < rad * rad ){
    len = math.sqrt( len );
    double invLen = 1 / len;
    dx *= invLen;
    dy *= invLen;
    dz *= invLen;
    manifold.addPoint( p1.x + dx * r1, p1.y + dy * r1, p1.z + dz * r1, dx, dy, dz, len - rad, false );
  }
}