Expand description
Spatial partitioning and optimization structures for tile-based games.
This module provides efficient spatial data structures for managing large numbers of entities in tile-based games. It includes quadtree implementation for fast collision detection, spatial queries, and entity management.
§Spatial Partitioning
Spatial partitioning divides game space into hierarchical regions to enable:
- Fast Collision Detection: O(log n) instead of O(n²) for entity pairs
- Efficient Spatial Queries: Quick area-based entity searches
- Level-of-Detail: Different processing levels based on proximity
- Culling: Skip processing for entities outside view regions
§Quadtree Implementation
The quadtree recursively subdivides 2D space into four quadrants:
- Automatic Subdivision: Splits when node capacity exceeded
- Dynamic Updates: Handles moving entities efficiently
- Query Optimization: Fast rectangular and circular queries
- Memory Efficient: Only allocates nodes as needed
§Examples
use tiles_tools::spatial::{ Quadtree, SpatialBounds, SpatialEntity };
use tiles_tools::coordinates::square::{ Coordinate as SquareCoord, FourConnected };
// Create a quadtree for a 100x100 game world
let bounds = SpatialBounds::new(0, 0, 100, 100);
let mut quadtree = Quadtree::new(bounds, 10); // Max 10 entities per node
// Add entities to the quadtree
let entity_id = 1;
let position = SquareCoord::<FourConnected>::new(25, 25);
quadtree.insert(SpatialEntity::new(entity_id, position, 1)); // radius 1
// Query entities in a region
let query_bounds = SpatialBounds::new(20, 20, 30, 30);
let nearby_entities = quadtree.query_region(&query_bounds);
println!("Found {} entities in region", nearby_entities.len());Structs§
- Quadtree
- Quadtree for efficient spatial partitioning and queries.
- Quadtree
Stats - Statistics about quadtree structure and performance.
- Spatial
Bounds - Represents a rectangular spatial boundary for quadtree operations.
- Spatial
Entity - Represents an entity with spatial properties for quadtree storage.
Traits§
- Spatial
Coordinate - Trait for coordinate types that can be used in spatial partitioning.