Skip to main content

Module spatial

Module spatial 

Source
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.
QuadtreeStats
Statistics about quadtree structure and performance.
SpatialBounds
Represents a rectangular spatial boundary for quadtree operations.
SpatialEntity
Represents an entity with spatial properties for quadtree storage.

Traits§

SpatialCoordinate
Trait for coordinate types that can be used in spatial partitioning.