Example #1
0
        private int addPoint(SearchPoint point)
        {
            point.CalcVisibility(VerifyDistance, false);
            var index = _points.Add(point);

            if (!_block.Empty)
            {
                if (_block.IsClose(point, Advanced.BlockThreshold, Advanced.BlockCenterThreshold))
                {
                    _block.Add(index);
                    return(index);
                }
            }

            for (int i = 0; i < _blocks.Count; i++)
            {
                if (_blocks[i].IsClose(point, Advanced.BlockThreshold, Advanced.BlockCenterThreshold))
                {
                    _blocks[i].Add(index);
                    return(index);
                }
            }

            var new_ = _blockCache.Take();

            new_.Add(index);
            _blocks.Add(new_);

            return(index);
        }