Exemple #1
0
        private void updateVesselData()
        {
            var vessel = this.currentVessel;

            bool hasNextNode = false;

            var nextNodeTime = Vessel.GetNextManeuverTime(vessel, out hasNextNode);

            // some stuff doesn't need to be updated if it's not changing
            var shouldUpdate = vessel.isActiveVessel || vessel.loaded || !this.vesselData.Id.Equals(vessel.id);

            var vesselData = new VesselData
            {
                Id           = vessel.id,
                OrbitData    = OrbitData.FromOrbit(vessel.orbit),
                Resources    = shouldUpdate ? updateVesselResourceData(vessel) : this.vesselData.Resources,
                CrewData     = shouldUpdate ? this.updateVesselCrewData(vessel) : this.vesselData.CrewData,
                MET          = Converters.Duration(Math.Abs(vessel.missionTime)),
                HasNextNode  = hasNextNode,
                NextNodeIn   = "T " + KSPUtil.PrintTime(Planetarium.GetUniversalTime() - nextNodeTime, 3, true),
                NextNodeTime = KSPUtil.PrintDateCompact(nextNodeTime, true, true),
                Situation    = Vessel.GetSituationString(vessel),
            };

            this.vesselData = vesselData;
        }
Exemple #2
0
 public static OrbitData FromOrbit(Orbit orbit)
 {
     return(new OrbitData
     {
         SOI = orbit.referenceBody.bodyName,
         AP = Converters.Distance(Math.Max(0, orbit.ApA)),
         PE = Converters.Distance(Math.Max(0, orbit.PeA)),
         timeToAP = Converters.Duration(Math.Max(0, orbit.timeToAp)),
         timeToPE = Converters.Duration(Math.Max(0, orbit.timeToPe)),
         INC = orbit.inclination.ToString("F3") + "°",
         Period = Converters.Duration(Math.Max(0, orbit.period), 4),
         IsSOIChange = orbit.patchEndTransition == Orbit.PatchTransitionType.ESCAPE || orbit.patchEndTransition == Orbit.PatchTransitionType.ENCOUNTER,
         SOIChangeTime = Converters.Duration(orbit.UTsoi - Planetarium.GetUniversalTime()),
         SOIChangeDate = KSPUtil.PrintDateCompact(orbit.UTsoi, true, true)
     });
 }
Exemple #3
0
        private List <DisplayItem> getPhysicalData(CelestialBody body)
        {
            var radius  = DisplayItem.Create("Radius: ", (body.Radius / 1000d).ToString("N0") + "km");
            var mass    = DisplayItem.Create("Mass: ", body.Mass.ToString("0.###E+0") + "kg");
            var gm      = DisplayItem.Create("GM: ", body.gravParameter.ToString("0.###E+0"));
            var gravity = DisplayItem.Create("Surface Gravity: ", body.GeeASL.ToString("0.####") + "g");

            var escape = 2d * body.gravParameter / body.Radius;

            escape = Math.Sqrt(escape);

            var escapeVelocity = DisplayItem.Create("Escape Velocity: ", escape.ToString("0.0") + "m/s");

            double alt           = body.atmosphere ? body.atmosphereDepth + 20000 : 15000;
            var    orbitVelocity = Math.Sqrt(body.gravParameter / (body.Radius + alt));

            var standardOrbitVelocity = DisplayItem.Create("Std Orbit Velocity: ",
                                                           orbitVelocity.ToString("0.0") + "m/s @ " + Converters.Distance(alt));

            var rotationalPeriod = DisplayItem.Create("Rotational Period: ", Converters.Duration(body.rotationPeriod));
            var tidalLocked      = DisplayItem.Create("Tidally Locked: ", body.tidallyLocked ? "Yes" : "No");
            var soiSize          = DisplayItem.Create("SOI Size: ", (body.sphereOfInfluence / 1000d).ToString("N0") + "km");

            return(new List <DisplayItem>
            {
                radius,
                mass,
                gm,
                gravity,
                standardOrbitVelocity,
                escapeVelocity,
                rotationalPeriod,
                tidalLocked,
                soiSize
            });
        }