/// <summary> /// Perform calculations and update data. /// </summary> /// <param name="updateTime">Time since last update.</param> /// <remarks>include base.Update(renderTime); in overloads to preserve updating UpdateTime field.</remarks> public override void Update(RenderTime updateTime) { // if we don't have a data provider, don't update if (MM_Repository.OverallDisplay.Contour == MM_Display.MM_Contour_Enum.None) { return; } if (!MM_Repository.ContourDataProviders.TryGetValue(MM_Repository.OverallDisplay.ContourData, out DataProvider)) { return; } base.Update(updateTime); bool contourChanged = _lastProvider != MM_Repository.OverallDisplay.ContourData; if (Surface.Coordinates.ZoomLevel != _zoomLevel || _kdProxy == null || contourChanged || (updateTime.TotalTime - _lastUpdate).TotalSeconds > MM_Repository.OverallDisplay.ContourRefreshTime) { _lastUpdate = updateTime.TotalTime; _lastProvider = MM_Repository.OverallDisplay.ContourData; _kdProxy = new KDTree.KDTree <ContourData>(2); _zoomLevel = Surface.Coordinates.ZoomLevel; foreach (var item in DataProvider.GetData()) { var coord = MM_Coordinates.LngLatToScreenVector2(item.LngLat, _zoomLevel); item.XY = coord; _kdProxy.AddPoint(new double[] { coord.X, coord.Y }, item); } if (_bmp != null) { _bmp.Dispose(); } if (contourChanged) { Surface.AddOnscreenMessage("Contour layer changed: " + _lastProvider.ToString(), SharpDX.Color.Aqua); } } }
/// <summary> /// Perform calculations and update data. /// </summary> /// <param name="updateTime">Time since last update.</param> /// <remarks>include base.Update(renderTime); in overloads to preserve updating UpdateTime field.</remarks> public override void Update(RenderTime updateTime) { base.Update(updateTime); bool zoomChanged = zoomLevel != Surface.Coordinates.ZoomLevel; bool baseMapChanged = _baseMapTile != MM_Repository.OverallDisplay.MapTiles; zoomLevel = Surface.Coordinates.ZoomLevel; _baseMapTile = MM_Repository.OverallDisplay.MapTiles; if (baseMapChanged || zoomChanged) { CleanupTiles(); } if (baseMapChanged) { Surface.AddOnscreenMessage("Base map layer changed: " + _baseMapTile.ToString(), _baseMapTile == MM_MapTile.enumMapType.None ? SharpDX.Color.Red : SharpDX.Color.Aqua); } //ProcessLoadingQueue(); }