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);
            }
Beispiel #2
0
            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);
            }