//
 public static VesselObserver Instance()
 {
    if (instance == null)
    {
       instance = new VesselObserver();
       Log.Info("new vessel observer instance created");
    }
    return instance;
 }
Пример #2
0
 //
 public static VesselObserver Instance()
 {
     if (instance == null)
     {
         instance = new VesselObserver();
         Log.Info("new vessel observer instance created");
     }
     return(instance);
 }
Пример #3
0
            // TODO: move to EventObserver
            private void FireCustomEvents()
            {
                // detect events only in flight
                if (HighLogic.LoadedScene != GameScenes.FLIGHT)
                {
                    return;
                }
                //
                Vessel vessel = FlightGlobals.ActiveVessel;

                if (vessel != null)
                {
                    // undetected SOI change (caused by hyperedit or other mods)
                    if (currentSphereOfInfluence == null || !currentSphereOfInfluence.Equals(vessel.mainBody))
                    {
                        OnVesselSOIChanged(new GameEvents.HostedFromToAction <Vessel, CelestialBody>(vessel, currentSphereOfInfluence, vessel.mainBody));
                    }
                    // Orbit closed
                    bool inOrbit = vessel.isInStableOrbit();
                    if (inOrbit && !orbitClosed)
                    {
                        Log.Info("orbit closed detected for vessel " + vessel.name);
                        OnVesselOrbitClosed(vessel);
                    }
                    orbitClosed = inOrbit;
                    //
                    // deep atmosphere
                    double atmDensity = vessel.atmDensity;
                    if (!deepAthmosphere && atmDensity >= 10.0)
                    {
                        Log.Trace("vessel entering deep athmosphere");
                        deepAthmosphere = true;
                        OnEnteringDeepAthmosphere(vessel);
                    }
                    else if (deepAthmosphere && atmDensity < 10.0)
                    {
                        deepAthmosphere = false;
                    }
                }
                else
                {
                    orbitClosed     = false;
                    deepAthmosphere = false;
                }
                //
                // G-force increased
                bool geeForceStateChanged = geeForceObserver.StateHasChanged();

                if (geeForceStateChanged)
                {
                    VesselObserver.Instance().SetGeeForceSustained(vessel, geeForceObserver.GetGeeNumber());
                }
                // Mach increased
                // AtmosphereChanged
                // Orbit changed
                // gee force changed
                if (machObserver.StateHasChanged() || atmosphereObserver.StateHasChanged() || orbitObserver.StateHasChanged() || geeForceStateChanged)
                {
                    CheckAchievementsForVessel(vessel);
                }
            }