public void SetOverlayProvider(IOverlayProvider overlayProvider) { if (OverlayProvider != null) { OverlayProvider.Deactivate(); } _overlayProvider = overlayProvider; overlayProvider.Activate(_targetBody); overlayProvider.RedrawRequired += OverlayProviderOnRedrawRequired; _changed = true; overlayProviderName = overlayProvider.GetType().Name; }
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); } } }
private Color32 CalculateColor32At(CelestialBody body, double latitude, double longitude) { return(OverlayProvider.CalculateColor32(latitude, longitude, body, useScansat, bright)); }
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); } } }