public void FixedUpdate() { if (VSL == null) { return; } //initialize systems VSL.UpdateState(); State = TCAState.Disabled; if (!CFG.Enabled) { return; } State = TCAState.Enabled; if (!VSL.Info.ElectricChargeAvailible) { return; } SetState(TCAState.HaveEC); ClearFrameState(); //update VSL VSL.UpdatePhysics(); if (VSL.Engines.Check()) { SetState(TCAState.HaveActiveEngines); } Actions["onActionUpdate"].actionGroup = VSL.Engines.ActionGroups; VSL.UpdateCommons(); VSL.UpdateOnPlanetStats(); //update modules ModulePipeline.ForEach(m => m.OnFixedUpdate()); //handle engines VSL.Engines.Tune(); if (VSL.Engines.NumActive > 0) { //:preset manual limits for translation if needed if (VSL.Controls.ManualTranslationSwitch.On) { ENG.PresetLimitsForTranslation(VSL.Engines.Manual, VSL.Controls.ManualTranslation); if (CFG.VSCIsActive) { ENG.LimitInDirection(VSL.Engines.Manual, VSL.Physics.UpL); } } //:balance-only engines if (VSL.Engines.Balanced.Count > 0) { VSL.Torque.UpdateImbalance(VSL.Engines.Manual, VSL.Engines.UnBalanced); ENG.OptimizeLimitsForTorque(VSL.Engines.Balanced, Vector3.zero); } VSL.Torque.UpdateImbalance(VSL.Engines.Manual, VSL.Engines.UnBalanced, VSL.Engines.Balanced); //:optimize limits for steering ENG.PresetLimitsForTranslation(VSL.Engines.Maneuver, VSL.Controls.Translation); ENG.Steer(); } RCS.Steer(); VSL.Engines.SetControls(); }
public void OnPreAutopilotUpdate(FlightCtrlState s) { if (!Valid) { return; } //initialize systems VSL.PreUpdateState(s); State = TCAState.Disabled; if (CFG.Enabled) { State = TCAState.Enabled; localControlState = VesselControlState.None; if (!VSL.Info.ElectricChargeAvailible) { if (VSL.Controls.WarpToTime > 0) { VSL.Controls.AbortWarp(); } return; } localControlState = VesselControlState.ProbePartial; SetState(TCAState.HaveEC); ClearFrameState(); //update VSL VSL.UpdatePhysics(); if (VSL.Engines.Check()) { SetState(TCAState.HaveActiveEngines); } Actions["onActionUpdate"].actionGroup = VSL.Engines.ActionGroups; VSL.UpdateCommons(); VSL.UpdateOnPlanetStats(); //update modules ModulePipeline.ForEach(m => m.OnFixedUpdate()); VSL.OnModulesUpdated(); } }
public void FixedUpdate() { if (VSL == null) { return; } //initialize systems VSL.UpdateState(); State = TCAState.Disabled; if (!CFG.Enabled) { return; } State = TCAState.Enabled; localControlState = VesselControlState.None; if (!VSL.Info.ElectricChargeAvailible) { if (VSL.Controls.WarpToTime > 0) { VSL.Controls.AbortWarp(); } return; } localControlState = VesselControlState.ProbePartial; SetState(TCAState.HaveEC); ClearFrameState(); //update VSL VSL.UpdatePhysics(); if (VSL.Engines.Check()) { SetState(TCAState.HaveActiveEngines); } Actions["onActionUpdate"].actionGroup = VSL.Engines.ActionGroups; VSL.UpdateCommons(); VSL.UpdateOnPlanetStats(); //update modules ModulePipeline.ForEach(m => m.OnFixedUpdate()); VSL.OnModulesUpdated(); //handle engines VSL.Engines.Tune(); if (VSL.Engines.NumActive > 0) { //:preset manual limits for translation if needed if (VSL.Controls.ManualTranslationSwitch.On) { ENG.PresetLimitsForTranslation(VSL.Engines.Active.Manual, VSL.Controls.ManualTranslation); if (CFG.VSCIsActive) { ENG.LimitInDirection(VSL.Engines.Active.Manual, VSL.Physics.UpL); } } //:optimize limits for steering ENG.PresetLimitsForTranslation(VSL.Engines.Active.Maneuver, VSL.Controls.Translation); ENG.Steer(); } RCS.Steer(); VSL.Engines.SetControls(); VSL.FinalUpdate(); #if DEBUG TEST.OnFixedUpdate(); #endif }