An implementation of Adam Millazo's FOV algorithm
To use it you must implement the VisibilityMap
trait on your map type, or use the built in VisibilityMap2d
. Then you can call fov::compute
with your map which will populate visible tiles based on the map's opaque tiles.
use adam_fov_rs::*;
// Create a 50x50 visibility map
let mut map = VisibilityMap2d::default([50,50]);
// Set the tile at (15,15) to opaque
map[[15,15]].opaque = true;
// Compute our visible tiles and add them to the map
fov::compute([15,14], 5, &mut map);
// The space directly above our opaque tile is not visible
assert!(map[[15,16]].visible == false);
Taken from the "terminal" example