//public FovShapeType FovShape //{ // get { return fovProfile.FovShape; } // set { fovProfile.FovShape = value; } //} #endregion #region IFovAlgorithm Members public FovResultset CalculateFov(TerrainMap terrain, Point origin, IFovProfile fovProfile) { visibleLocations = new FovResultset(); // fovProfile.FovShape = shapeType; if (terrain != null) { visibleLocations.Add(new FovObject() { Location = { Coordinate = origin }, DistanceFromOrigin = 0 }); if (fovProfile.FovRadius > 0) { ScanNorthwestToNorth(terrain, origin, fovProfile); ScanNorthToNortheast(terrain, origin, fovProfile); ScanNortheastToEast(terrain, origin, fovProfile); ScanEastToSoutheast(terrain, origin, fovProfile); ScanSoutheastToSouth(terrain, origin, fovProfile); ScanSouthToSouthwest(terrain, origin, fovProfile); ScanSouthwestToWest(terrain, origin, fovProfile); ScanWestToNorthwest(terrain, origin, fovProfile); } } return(visibleLocations); }
private void SetAsVisible(TerrainMap terrain, Point location, int distance) { if ((terrain.Bounds.Contains(location)) && (!visibleLocations.ContainsLocation(location))) { visibleLocations.Add(new FovObject() { Location = new Location() { Coordinate = location }, DistanceFromOrigin = distance }); } }