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();
 }
Пример #2
0
 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
 }