public void UpdateParts() { EngineWrapper.ThrustPI.setMaster(CFG.Engines); Engines.Clear(); Torque.Wheels.Clear(); OnPlanetParams.Parachutes.Clear(); Physics.AngularDrag = 0; var drag_parts = 0; var parts_count = vessel.Parts.Count; for (int i = 0; i < parts_count; i++) { Part p = vessel.Parts[i]; if (p.angularDragByFI) { Physics.AngularDrag += p.angularDrag; drag_parts += 1; } for (int j = 0, pModulesCount = p.Modules.Count; j < pModulesCount; j++) { var module = p.Modules[j]; if (Engines.Add(module as ModuleEngines)) { continue; } if (Engines.Add(module as ModuleRCS)) { continue; } if (AddModule(module, Torque.Wheels)) { continue; } if (AddModule(module, OnPlanetParams.Parachutes)) { continue; } } } Physics.AngularDrag /= drag_parts; if (CFG.EnginesProfiles.Empty) { CFG.EnginesProfiles.AddProfile(Engines.All); } else if (CFG.Enabled && TCA.ProfileSyncAllowed) { CFG.ActiveProfile.Update(Engines.All); } }
public void UpdateParts() { EngineWrapper.ThrustPI.setMaster(CFG.Engines); Engines.Clear(); Torque.Clear(); Physics.Clear(); OnPlanetParams.Clear(); var drag_parts = 0; var parts_count = vessel.Parts.Count; var max_active_stage = -1; for(int i = 0; i < parts_count; i++) { Part p = vessel.Parts[i]; if(p.State == PartStates.ACTIVE && p.inverseStage > max_active_stage) max_active_stage = p.inverseStage; Physics.UpdateMaxTemp(p); if(p.angularDragByFI) { Physics.AngularDrag += p.angularDrag; drag_parts += 1; } for(int j = 0, pModulesCount = p.Modules.Count; j < pModulesCount; j++) { var module = p.Modules[j]; if(Engines.AddEngine(module)) continue; if(Engines.AddRCS(module)) continue; if(OnPlanetParams.AddLaunchClamp(module)) continue; if(OnPlanetParams.AddParachute(module)) continue; if(OnPlanetParams.AddGear(module)) continue; if(Torque.AddTorqueProvider(module)) continue; } } Physics.AngularDrag /= drag_parts; Engines.Clusters.Update(); if(max_active_stage >= 0 && (vessel.currentStage < 0 || vessel.currentStage > max_active_stage)) vessel.currentStage = StageManager.RecalculateVesselStaging(vessel); if(CFG.EnginesProfiles.Empty) CFG.EnginesProfiles.AddProfile(Engines.All); else if(CFG.Enabled && TCA.ProfileSyncAllowed) CFG.ActiveProfile.Update(Engines.All); }
public void UpdateParts() { EngineWrapper.ThrustPI.setMaster(CFG.Engines); Engines.Clear(); Torque.Wheels.Clear(); Physics.Clear(); OnPlanetParams.Clear(); var drag_parts = 0; var parts_count = vessel.Parts.Count; var max_active_stage = -1; for (int i = 0; i < parts_count; i++) { Part p = vessel.Parts[i]; if (p.State == PartStates.ACTIVE && p.inverseStage > max_active_stage) { max_active_stage = p.inverseStage; } Physics.UpdateMaxTemp(p); if (p.angularDragByFI) { Physics.AngularDrag += p.angularDrag; drag_parts += 1; } for (int j = 0, pModulesCount = p.Modules.Count; j < pModulesCount; j++) { var module = p.Modules[j]; if (Engines.AddEngine(module)) { continue; } if (Engines.AddRCS(module)) { continue; } if (OnPlanetParams.AddLaunchClamp(module)) { continue; } if (OnPlanetParams.AddParachute(module)) { continue; } if (OnPlanetParams.AddGear(module)) { continue; } if (AddModule(module, Torque.Wheels)) { continue; } } } Physics.AngularDrag /= drag_parts; Engines.Clusters.Update(); //test: adjusting vessel stage seems to be not that strightforward Log("max active stage {}, vessel stage {}", max_active_stage, vessel.currentStage); //debug if (max_active_stage >= 0 && (vessel.currentStage < 0 || vessel.currentStage > max_active_stage)) { vessel.currentStage = StageManager.RecalculateVesselStaging(vessel); } if (CFG.EnginesProfiles.Empty) { CFG.EnginesProfiles.AddProfile(Engines.All); } else if (CFG.Enabled && TCA.ProfileSyncAllowed) { CFG.ActiveProfile.Update(Engines.All); } }