Ejemplo n.º 1
0
        /// <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);
                }
            }
        }
Ejemplo n.º 2
0
        /// <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();
        }