Crates.io | adam_fov_rs |
lib.rs | adam_fov_rs |
version | 0.2.0 |
source | src |
created_at | 2021-12-26 03:26:47.119838 |
updated_at | 2022-09-23 05:47:37.646702 |
description | A rust implementation of Adam Milazzo's FOV algorithm http://www.adammil.net/blog/v125_Roguelike_Vision_Algorithms.html#mine |
homepage | https://github.com/sarkahn/adam_fov_rs |
repository | https://github.com/sarkahn/adam_fov_rs |
max_upload_size | |
id | 503174 |
size | 210,973 |
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