//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
         });
     }
 }