Beispiel #1
0
 public void SetOverlayProvider(IOverlayProvider overlayProvider)
 {
     if (OverlayProvider != null)
     {
         OverlayProvider.Deactivate();
     }
     _overlayProvider = overlayProvider;
     overlayProvider.Activate(_targetBody);
     overlayProvider.RedrawRequired += OverlayProviderOnRedrawRequired;
     _changed            = true;
     overlayProviderName = overlayProvider.GetType().Name;
 }
Beispiel #2
0
        private void UpdateMapView()
        {
            if (!show || MapView.MapCamera == null)
            {
                gameObject.renderer.enabled = false;
            }
            else
            {
                gameObject.renderer.enabled = true;
                _targetBody = MapView.MapCamera.target.GetTargetBody();

                if (_targetBody != null && (_targetBody != _body || _changed))
                {
                    this.Log("Drawing at " + _targetBody.name + " because " +
                             (_targetBody != _body ? "body changed." : "something else changed."));
                    OverlayProvider.BodyChanged(_targetBody);
                    _changed = false;
                    var dir    = System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
                    var radii  = System.IO.File.ReadAllLines(dir + "/Assets/Radii.cfg");
                    var radius = float.Parse(radii.First(x => x.StartsWith(_targetBody.GetName())).Split('=')[1]);
                    _body = _targetBody;
                    CreateMesh(_targetBody);
                    gameObject.renderer.material =
                        new Material(System.IO.File.ReadAllText(dir + "/Assets/MapOverlayShader.txt"));
                    gameObject.renderer.enabled     = true;
                    gameObject.renderer.castShadows = false;
                    gameObject.transform.parent     =
                        ScaledSpace.Instance.scaledSpaceTransforms.FirstOrDefault(t => t.name == _body.bodyName);
                    gameObject.layer = 10;
                    gameObject.transform.localScale    = Vector3.one * 1000f * radius;
                    gameObject.transform.localPosition = (Vector3.zero);
                    gameObject.transform.localRotation = (Quaternion.identity);
                }
                if (_targetBody != null && useScansat && _scanSat.Active())
                {
                    RecalculateColors(_targetBody);
                }
            }
        }
Beispiel #3
0
 private Color32 CalculateColor32At(CelestialBody body, double latitude, double longitude)
 {
     return(OverlayProvider.CalculateColor32(latitude, longitude, body, useScansat, bright));
 }
Beispiel #4
0
        public void OnGUI()
        {
            bool paused = false;

            if (HighLogic.LoadedSceneIsFlight)
            {
                try
                {
                    paused = PauseMenu.isOpen || FlightResultsDialog.isDisplaying;
                }
                catch (Exception)
                {
                    // ignore the error and assume the pause menu is not open
                }
            }
            if (_targetBody != FlightGlobals.ActiveVessel.mainBody || paused || !showTooltip)
            //dont show tooltips on different bodys or ORS lags
            {
                return;
            }
            if (show && _targetBody != null)
            {
                if (Event.current.type == EventType.Layout)
                {
                    try
                    {
                        _mouseCoords = _targetBody.GetMouseCoordinates();
                        _mouse       = Event.current.mousePosition;
                        if (useScansat && _scanSat.Active() && _mouseCoords != null &&
                            !OverlayProvider.IsCoveredAt(_mouseCoords.Longitude, _mouseCoords.Latitude, _targetBody))
                        {
                            _mouseCoords = null;
                        }
                    }
                    catch (NullReferenceException e)
                    {
                        this.Log("layout nullref" + e);
                    }
                }
                if (_mouseCoords != null)
                {
                    _toolTipId = 0;
                    var overlayTooltip = OverlayProvider.TooltipContent(_mouseCoords.Latitude, _mouseCoords.Longitude,
                                                                        _targetBody);
                    if (Math.Abs(overlayTooltip.Size.x) < 0.01 && Math.Abs(overlayTooltip.Size.y) < 0.01)
                    {
                        overlayTooltip.Size = new Vector2(200f, 55f);
                    }
                    var style = new GUIStyle(GUI.skin.label)
                    {
                        wordWrap = true
                    };
                    GUI.Window(_toolTipId,
                               new Rect(_mouse.x + 10, _mouse.y + 10, overlayTooltip.Size.x, overlayTooltip.Size.y), i =>
                    {
                        GUI.Label(new Rect(5, 10, 190, 20),
                                  "Long: " + _mouseCoords.Longitude.ToString("###.##") + " Lat: " +
                                  _mouseCoords.Latitude.ToString("####.##"));
                        GUI.Label(new Rect(5, 30, overlayTooltip.Size.x - 10, overlayTooltip.Size.y - 35),
                                  overlayTooltip.Content, style);
                    },
                               overlayTooltip.Title);
                }
            }
        }