fuseCollisionEffectPoints<C extends PositionComponent> function

void fuseCollisionEffectPoints<C extends PositionComponent>(
  1. FuseCollisionEffectPointsFn<C> fn
)

Calls fn when this component collides with another component of type C.

The fn may optionally return a cleanup function that is called when the collision ends.

This version also returns the points at which the collision occurred.

Implementation

void fuseCollisionEffectPoints<C extends PositionComponent>(FuseCollisionEffectPointsFn<C> fn) {
  final cleanups = <C, Function()>{};

  fuseCollisionStartPoints<C>((target, points) {
    final cleanup = fn(target, points);

    if (cleanup != null) {
      cleanups[target] = cleanup;
    }
  });

  fuseCollisionEnd<C>((target) {
    cleanups.remove(target)?.call();
  });
}