diff --git a/FerramAerospaceResearch/FARAeroComponents/FARVesselAero.cs b/FerramAerospaceResearch/FARAeroComponents/FARVesselAero.cs index 8fb1752a4..9b987dc9a 100644 --- a/FerramAerospaceResearch/FARAeroComponents/FARVesselAero.cs +++ b/FerramAerospaceResearch/FARAeroComponents/FARVesselAero.cs @@ -511,7 +511,8 @@ private int VoxelCountFromType() public override void OnLoadVessel() { if (vessel.loaded) - if (vessel.rootPart.Modules.Contains("MissileLauncher") && vessel.parts.Count == 1) + if (ModUtils.IsBDArmoryInstalled && vessel.rootPart.Modules.Contains("MissileLauncher") && + vessel.parts.Count == 1) { vessel.rootPart.dragModel = Part.DragModel.CUBE; enabled = false; diff --git a/FerramAerospaceResearch/FARAeroComponents/ModularFlightIntegratorRegisterer.cs b/FerramAerospaceResearch/FARAeroComponents/ModularFlightIntegratorRegisterer.cs index 598ca6e57..5a50e1a7d 100644 --- a/FerramAerospaceResearch/FARAeroComponents/ModularFlightIntegratorRegisterer.cs +++ b/FerramAerospaceResearch/FARAeroComponents/ModularFlightIntegratorRegisterer.cs @@ -106,8 +106,9 @@ private static void UpdateThermodynamicsPre(ModularFlightIntegrator fi) private static void UpdateAerodynamics(ModularFlightIntegrator fi, Part part) { //FIXME Proper model for airbrakes - if (part.Modules.Contains() || - part.Modules.Contains("MissileLauncher") && part.vessel.rootPart == part) + if (part.vessel.rootPart == part && + part.Modules.Contains() || + ModUtils.IsBDArmoryInstalled && part.Modules.Contains("MissileLauncher")) { fi.BaseFIUpdateAerodynamics(part); } diff --git a/FerramAerospaceResearch/FARAeroUtil.cs b/FerramAerospaceResearch/FARAeroUtil.cs index 6c88cc72a..8f873d842 100644 --- a/FerramAerospaceResearch/FARAeroUtil.cs +++ b/FerramAerospaceResearch/FARAeroUtil.cs @@ -267,10 +267,7 @@ public static void LoadAeroDataFromConfig() if (loaded) return; - foreach (AssemblyLoader.LoadedAssembly assembly in AssemblyLoader.loadedAssemblies) - if (assembly.assembly.GetName().Name == "AJE") - AJELoaded = true; - + AJELoaded = ModUtils.IsAJEInstalled; SetDefaultValuesIfNoValuesLoaded(); loaded = true; diff --git a/FerramAerospaceResearch/FerramAerospaceResearch.csproj b/FerramAerospaceResearch/FerramAerospaceResearch.csproj index 3873eb24b..f395bd4a7 100644 --- a/FerramAerospaceResearch/FerramAerospaceResearch.csproj +++ b/FerramAerospaceResearch/FerramAerospaceResearch.csproj @@ -214,6 +214,7 @@ + diff --git a/FerramAerospaceResearch/Utils/ModUtils.cs b/FerramAerospaceResearch/Utils/ModUtils.cs new file mode 100644 index 000000000..caa3187f5 --- /dev/null +++ b/FerramAerospaceResearch/Utils/ModUtils.cs @@ -0,0 +1,41 @@ +using System; +using System.Linq; + +namespace FerramAerospaceResearch +{ + public static class ModUtils + { + private static bool ajeInstalled = false; + private static bool needFindAJE = true; + private static bool bdArmoryInstalled = false; + private static bool needFindBDArmory = true; + + public static bool IsAJEInstalled + { + get + { + if (needFindAJE) + { + needFindAJE = false; + ajeInstalled = AssemblyLoader.loadedAssemblies.Any(a => a.name.Equals("AJE", StringComparison.OrdinalIgnoreCase)); + } + + return ajeInstalled; + } + } + + public static bool IsBDArmoryInstalled + { + get + { + if (needFindBDArmory) + { + needFindBDArmory = false; + bdArmoryInstalled = AssemblyLoader.loadedAssemblies.Any(a => a.name.Equals("BDArmory", StringComparison.OrdinalIgnoreCase)); + } + + return bdArmoryInstalled; + } + } + } +}