[][src]Function symmetric_shadowcasting::compute_fov

pub fn compute_fov<F, G>(origin: Pos, is_blocking: &mut F, mark_visible: &mut G) where
    F: FnMut(Pos) -> bool,
    G: FnMut(Pos), 

Compute FOV information for a given position using the shadow mapping algorithm.

This uses the is_blocking closure, which checks whether a given position is blocked (such as by a wall), and is expected to capture some kind of grid or map from the user.

The mark_visible closure provides the ability to collect visible tiles. This may push them to a vector (captured in the closure's environment), or modify a cloned version of the map.

I tried to write a nicer API which would modify the map as a separate user data, but I can't work out the lifetime annotations.