Skip to content

[Feature] 2D collision detection and callbacks #121

Description

@vmarcella

Overview

Add collision detection queries and event callbacks so games can respond to
physics interactions between bodies.

Current State

No response

Scope

Goals:

  • Collision start/end events
  • Contact point information
  • Collision filtering (layers/masks)
  • Query overlapping bodies at a point
  • Intersection tests without simulation

Non-Goals:

  • Trigger volumes (separate issue)
  • Complex filtering rules (deferred)

Proposed API

pub struct CollisionEvent {
  pub body_a: RigidBodyHandle,
  pub body_b: RigidBodyHandle,
  pub contact_point: [f32; 2],
  pub normal: [f32; 2],
  pub penetration: f32,
}

pub struct CollisionFilter {
  pub group: u32,
  pub mask: u32,
}

impl PhysicsWorld2D {
  pub fn collision_events(&self) -> impl Iterator<Item = CollisionEvent>;
  pub fn query_point(&self, point: [f32; 2]) -> Vec<RigidBodyHandle>;
  pub fn query_aabb(&self, min: [f32; 2], max: [f32; 2]) -> Vec<RigidBodyHandle>;
  pub fn raycast(&self, origin: [f32; 2], dir: [f32; 2], max_dist: f32) 
    -> Option<RaycastHit>;
}

impl Collider2DBuilder {
  pub fn with_collision_filter(self, filter: CollisionFilter) -> Self;
}

Acceptance Criteria

  • Collision events fire when bodies first touch
  • Collision events include contact information
  • Collision filters prevent specified pairs from colliding
  • Point queries find bodies containing that point
  • Raycasts return first hit with normal and distance

Affected Crates

lambda-rs, lambda-rs-platform

Notes

  • Events collected during step, consumed after
  • Filter: collide if (a.group & b.mask) && (b.group & a.mask)

Activity

  1. added
    lambda-rs-platformIssues pertaining to the dependency & platform wrappers
    physicsAll things related to physics
    on Jan 25, 2026
  2. changed the title [-][Feature] 2D collision detection and c[/-] [+][Feature] 2D collision detection and callbacks[/+] on Jan 25, 2026
  3. added a commit that references this issue on Apr 3, 2026
    e8508bb
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestlambda-rsIssues pertaining to the core frameworklambda-rs-platformIssues pertaining to the dependency & platform wrappersphysicsAll things related to physics

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions