Esempio n. 1
0
 public void OnPostAutopilotUpdate(FlightCtrlState s)
 {
     if (!Valid || !CFG.Enabled)
     {
         return;
     }
     //handle engines
     VSL.PostUpdateState(s);
     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();
 }
Esempio n. 2
0
 public void OnPostAutopilotUpdate(FlightCtrlState s)
 {
     if (!Valid || !CFG.Enabled)
     {
         return;
     }
     //handle engines
     VSL.PostUpdateState(s);
     VSL.Engines.Tune();
     if (VSL.Engines.NumActive > 0)
     {
         //:preset manual limits for translation if needed
         var translation = VSL.Controls.EnginesTranslation;
         if (VSL.Controls.HasTranslation)
         {
             translation += VSL.Controls.Translation;
         }
         if (!translation.IsZero())
         {
             EngineOptimizer.PresetLimitsForTranslation(VSL.Engines.Active.Maneuver, translation.normalized);
             if (CFG.VSCIsActive && !VSL.Controls.HasTranslation)
             {
                 EngineOptimizer.LimitInDirection(VSL.Engines.Active.Maneuver, VSL.Physics.UpL);
             }
         }
         ENG.Steer();
     }
     RCS.Steer();
     VSL.Engines.SetControls();
     VSL.FinalUpdate();
 }
 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 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
 }