collision-detection 0.3.0

A generic collision detection library based on the `collide` crate
Documentation
# Collision Manager

[![crates.io](https://img.shields.io/crates/v/collision-manager)](https://crates.io/crates/collision-manager)
[![docs.rs](https://img.shields.io/docsrs/collision-manager)](https://docs.rs/collision-manager)

Efficient collision management system built on the [collide](https://crates.io/crates/collide) crate.

## Features

- **Stable Indices**: Safe object references even with frequent add/remove
- **Bidirectional Collisions**: Track collisions from the perspectives of both objects
- **Multiple Query Modes**: Find first/all collisions with simple API
- **Zero Allocation**: Reuses memory buffers for frequent updates

## Basic Usage

```rust
use collision_manager::CollisionManager;
use collide::Collider;

struct Sphere { ... }

impl Collider for Sphere { ... }

let mut manager = CollisionManager::<Sphere, u32>::new();

// Add colliders with associated IDs
let player_id = manager.insert_collider(Sphere::new(1.0), 1);
let enemy_id = manager.insert_collider(Sphere::new(1.0), 2);

// Check collisions
if manager.check_collision(&Sphere::new(1.0)) {
    println!("Collision detected!");
}
```

## Advanced Usage

```rust
// Compute all internal collisions
let collisions = manager.compute_inner_collisions();

// Process collision results
for (obj_id, collisions) in collisions.indexed() {
    for collision in collisions {
        println!("Object {} collided with {}", obj_id, collision.index);
        handle_collision(collision.info.vector);
    }
}
```

## Performance

- O(1) insert/remove by index
- O(n²) broad-phase collision checks (suitable for <1000 objects)
- Zero heap allocations after initial setup