// public static VesselObserver Instance() { if (instance == null) { instance = new VesselObserver(); Log.Info("new vessel observer instance created"); } return instance; }
// public static VesselObserver Instance() { if (instance == null) { instance = new VesselObserver(); Log.Info("new vessel observer instance created"); } return(instance); }
// 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); } }