public void OnRender() { bool map = MapView.MapIsEnabled; Color color = Color.Color; Vector3d up = GeoCoordinates.SurfaceNormal; double height = GeoCoordinates.Body.Radius + Math.Max(GeoCoordinates.TerrainHeight, 0); Vector3d position = GeoCoordinates.Body.Position + (FlightGlobals.ActiveVessel?.CoMD ?? Vector3d.zero); Vector3d center = position + height * up; Vector3d camPos = map ? ScaledSpace.ScaledToLocalSpace(PlanetariumCamera.Camera.transform.position) : (Vector3d)FlightCamera.fetch.mainCamera.transform.position; if (GLUtils.IsOccluded(center, position, GeoCoordinates.Body.Radius, camPos)) { return; } Vector3d north = Vector3d.Exclude(up, GeoCoordinates.Body.Up).normalized; double radius = map ? GeoCoordinates.Body.Radius / 50 : 5; if (!map) { Vector3 centerPoint = FlightCamera.fetch.mainCamera.WorldToViewportPoint(center); if (centerPoint.z < 0) { return; } } GLUtils.GLTriangle( center, center + radius * (QuaternionD.AngleAxis(Rotation - 10, up) * north), center + radius * (QuaternionD.AngleAxis(Rotation + 10, up) * north), color, GLUtils.Colored, map); GLUtils.GLTriangle( center, center + radius * (QuaternionD.AngleAxis(Rotation + 110, up) * north), center + radius * (QuaternionD.AngleAxis(Rotation + 130, up) * north), color, GLUtils.Colored, map); GLUtils.GLTriangle( center, center + radius * (QuaternionD.AngleAxis(Rotation - 110, up) * north), center + radius * (QuaternionD.AngleAxis(Rotation - 130, up) * north), color, GLUtils.Colored, map); }
public void OnRender() { if (!MapView.MapIsEnabled) { return; } Vessel vessel = FlightGlobals.ActiveVessel; if (vessel == null) { return; } GLUtils.DrawPath(Path, vessel.mainBody.position, vessel.mainBody.Radius, Color.Color, GLUtils.Colored, Dashed, true); }