protected void ProcessChild(IPosMappingScanNode node) { if (node.IsLeaf) { var moonItems = node.GetMoonItems(); if (moonItems.Any()) { PosMapper.OnMoonsScanned(moonItems); } return; } PosMapper.AddNodeToScan(node); }
private void InitialScan(IList <IDScanItem> obj) { CheckForOfflineTowers(obj); _currentNodeToScan = new DefaultPosMappingScanNode(this, PosMappingUtils.GetMoonGroups(obj), new IDScanItem[0], obj); if (_currentNodeToScan.IsLeaf) { var moonItems = _currentNodeToScan.GetMoonItems(); if (moonItems.Any()) { OnMoonsScanned(moonItems); } OnScanDone(); return; } OnNextScanRequest(_currentNodeToScan.PivotalScanRangeInKm); }
private void OnNewDScan(IList <IDScanItem> items) { if (!items.Any(item => item.IsMoon()) && items.Any(item => item.IsTower())) { OnNeedToDeselectOverviewSettings(); return; } if (_currentNodeToScan == null) { InitialScan(items); return; } _currentNodeToScan.SetItemsOnPivotalScan(items); if (!_nodesToScan.Any()) { OnScanDone(); return; } _currentNodeToScan = _nodesToScan.Pop(); OnNextScanRequest(_currentNodeToScan.PivotalScanRangeInKm); }
public void AddNodeToScan(IPosMappingScanNode node) { _nodesToScan.Push(node); }
public void Reset() { _nodesToScan.Clear(); _currentNodeToScan = null; }