1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
//! Algorithm trait for procedural generation
use crate::;
/// Trait for procedural generation algorithms.
///
/// All implementations must be `Send + Sync` so algorithms can be shared
/// across threads (e.g. in a `Pipeline` or thread pool).
///
/// # Examples
///
/// ```
/// use terrain_forge::{Grid, Algorithm};
/// use terrain_forge::algorithms::Bsp;
///
/// let mut grid = Grid::new(40, 30);
/// let algo = Bsp::default();
/// algo.generate(&mut grid, 42);
/// assert!(grid.count(|t| t.is_floor()) > 0);
/// ```