fuseCollisionEffect<C extends PositionComponent> function

void fuseCollisionEffect<C extends PositionComponent>(
  1. FuseCollisionEffectFn<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.

Implementation

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

  fuseCollisionStart<C>((target) {
    final cleanup = fn(target);

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

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