ecspresso
    Preparing search index...

    Function createCollisionPlugin

    • Create a collision plugin for ECSpresso.

      This plugin provides:

      • Collision detection between entities with colliders
      • AABB-AABB, circle-circle, and AABB-circle collision
      • Layer-based filtering for collision pairs
      • Deduplication of A-B / B-A collisions
      • Automatic broadphase acceleration when spatialIndex resource is present

      Uses worldTransform for position (world-space collision detection). The layers parameter is required for type inference — at runtime the plugin does not consume it.

      Type Parameters

      • L extends string
      • G extends string = "physics"

      Parameters

      Returns Plugin<
          WorldConfigFrom<CollisionComponentTypes<L>, CollisionEventTypes<L>>,
          TransformWorldConfig,
          "collision-detection",
          G,
      >

      const layers = defineCollisionLayers({ player: ['enemy'], enemy: ['player'] });
      const ecs = ECSpresso
      .create()
      .withPlugin(createTransformPlugin())
      .withPlugin(createCollisionPlugin({ layers }))
      .build();

      // Entity with collision
      ecs.spawn({
      ...createTransform(100, 200),
      ...createAABBCollider(50, 30),
      ...layers.player(),
      });