public override void OnLoad(ConfigNode node) { base.OnLoad(node); if (!FARDebugValues.allowStructuralFailures || !node.HasNode("FARPartStressTemplate")) { return; } ConfigNode stressTemplate = node.GetNode("FARPartStressTemplate"); FARPartStressTemplate defaultTemplate = FARAeroStress.DetermineStressTemplate(part); if (stressTemplate.HasValue("YmaxStress")) { if (!double.TryParse(stressTemplate.GetValue("YmaxStress"), out partStressMaxY)) { partStressMaxY = defaultTemplate.YmaxStress; } } // ReSharper disable once InvertIf if (stressTemplate.HasValue("XZmaxStress")) { if (!double.TryParse(stressTemplate.GetValue("XZmaxStress"), out partStressMaxXZ)) { partStressMaxXZ = defaultTemplate.XZmaxStress; } } }
void Start() { if (waterSlowDragNew < 0) { waterSlowDragNew = PhysicsGlobals.BuoyancyWaterDragSlow; minVelVesselMultNew = (float)PhysicsGlobals.BuoyancyWaterDragPartVelGreaterVesselMult; PhysicsGlobals.BuoyancyWaterDragPartVelGreaterVesselMult = 0; } part.maximum_drag = 0; part.minimum_drag = 0; part.angularDrag = 0; if (HighLogic.LoadedSceneIsFlight) { this.enabled = true; } else if (HighLogic.LoadedSceneIsEditor) { this.enabled = false; } partLocalVel = Vector3.zero; partLocalForce = Vector3.zero; partLocalTorque = Vector3.zero; //if (!part.Modules.Contains("ModuleAeroSurface")) // part.dragModel = Part.DragModel.CYLINDRICAL; if (FARDebugValues.allowStructuralFailures) { FARPartStressTemplate template = FARAeroStress.DetermineStressTemplate(this.part); partStressMaxY = template.YmaxStress; partStressMaxXZ = template.XZmaxStress; } partTransform = part.partTransform; materialColorUpdater = new MaterialColorUpdater(partTransform, PhysicsGlobals.TemperaturePropertyID); if (part.Modules.Contains <FARWingAerodynamicModel>()) { legacyWingModel = part.Modules.GetModule <FARWingAerodynamicModel>(); } else if (part.Modules.Contains <FARControllableSurface>()) { legacyWingModel = part.Modules.GetModule <FARControllableSurface>(); } else { legacyWingModel = null; } // For handling airbrakes aero visualization if (part.Modules.Contains <ModuleAeroSurface>()) { stockAeroSurfaceModule = part.Modules.GetModule <ModuleAeroSurface>(); } else { stockAeroSurfaceModule = null; } }
private void Start() { shield = new DummyAirstreamShield { part = part }; if (waterSlowDragNew < 0) { waterSlowDragNew = PhysicsGlobals.BuoyancyWaterDragSlow; minVelVesselMultNew = (float)PhysicsGlobals.BuoyancyWaterDragPartVelGreaterVesselMult; PhysicsGlobals.BuoyancyWaterDragPartVelGreaterVesselMult = 0; } part.maximum_drag = 0; part.minimum_drag = 0; part.angularDrag = 0; if (HighLogic.LoadedSceneIsFlight) { enabled = true; } else if (HighLogic.LoadedSceneIsEditor) { enabled = false; } partLocalVel = Vector3.zero; partLocalForce = Vector3.zero; partLocalTorque = Vector3.zero; if (FARDebugValues.allowStructuralFailures && !partStressOverride) { FARPartStressTemplate template = FARAeroStress.DetermineStressTemplate(part); partStressMaxY = template.YMaxStress; partStressMaxXZ = template.XZMaxStress; } partTransform = part.partTransform; materialColorUpdater = new MaterialColorUpdater(partTransform, PhysicsGlobals.TemperaturePropertyID); if (part.Modules.Contains <FARWingAerodynamicModel>()) { LegacyWingModel = part.Modules.GetModule <FARWingAerodynamicModel>(); } else if (part.Modules.Contains <FARControllableSurface>()) { LegacyWingModel = part.Modules.GetModule <FARControllableSurface>(); } else { LegacyWingModel = null; } // For handling airbrakes aero visualization stockAeroSurfaceModule = part.Modules.Contains <ModuleAeroSurface>() ? part.Modules.GetModule <ModuleAeroSurface>() : null; }
void Start() { part.maximum_drag = 0; part.minimum_drag = 0; part.angularDrag = 0; if (HighLogic.LoadedSceneIsFlight) { this.enabled = true; } else if (HighLogic.LoadedSceneIsEditor) { this.enabled = false; } partLocalVel = Vector3.zero; partLocalForce = Vector3.zero; partLocalTorque = Vector3.zero; if (!part.Modules.Contains("ModuleAeroSurface")) { part.dragModel = Part.DragModel.CYLINDRICAL; } if (FARDebugValues.allowStructuralFailures) { FARPartStressTemplate template = FARAeroStress.DetermineStressTemplate(this.part); partStressMaxY = template.YmaxStress; partStressMaxXZ = template.XZmaxStress; } partTransform = part.partTransform; materialColorUpdater = new MaterialColorUpdater(partTransform, PhysicsGlobals.TemperaturePropertyID); if (part.Modules.Contains("FARWingAerodynamicModel")) { legacyWingModel = part.Modules["FARWingAerodynamicModel"] as FARWingAerodynamicModel; } else if (part.Modules.Contains("FARControllableSurface")) { legacyWingModel = part.Modules["FARControllableSurface"] as FARWingAerodynamicModel; } else { legacyWingModel = null; } // For handling airbrakes aero visualization if (part.Modules.Contains("ModuleAeroSurface")) { stockAeroSurfaceModule = part.Modules["ModuleAeroSurface"] as ModuleAeroSurface; } else { stockAeroSurfaceModule = null; } }
void Start() { part.maximum_drag = 0; part.minimum_drag = 0; part.angularDrag = 0; this.enabled = false; partLocalVel = Vector3.zero; partLocalForce = Vector3.zero; partLocalTorque = Vector3.zero; if (FARDebugValues.allowStructuralFailures) { FARPartStressTemplate template = FARAeroStress.DetermineStressTemplate(this.part); partStressMaxY = template.YmaxStress; partStressMaxXZ = template.XZmaxStress; } partTransform = part.partTransform; }
public override void OnLoad(ConfigNode node) { base.OnLoad(node); if (FARDebugValues.allowStructuralFailures && node.HasNode("FARPartStressTemplate")) { ConfigNode stressTemplate = node.GetNode("FARPartStressTemplate"); FARPartStressTemplate defaultTemplate = FARAeroStress.DetermineStressTemplate(this.part); if (stressTemplate.HasValue("YmaxStress")) { if (!double.TryParse(stressTemplate.GetValue("YmaxStress"), out partStressMaxY)) { partStressMaxY = defaultTemplate.YmaxStress; } } if (stressTemplate.HasValue("XZmaxStress")) { if (!double.TryParse(stressTemplate.GetValue("XZmaxStress"), out partStressMaxXZ)) { partStressMaxXZ = defaultTemplate.XZmaxStress; } } } }
private void AeroStressTab(GUIStyle buttonStyle, GUIStyle boxStyle) { int i = 0; int removeIndex = -1; GUILayout.BeginHorizontal(); GUILayout.BeginVertical(boxStyle); for (i = 0; i < FARAeroStress.StressTemplates.Count; i++) { GUILayout.BeginHorizontal(); bool active = GUILayout.Toggle(i == aeroStressIndex, FARAeroStress.StressTemplates[i].name, buttonStyle, GUILayout.Width(150)); if (GUILayout.Button("-", buttonStyle, GUILayout.Width(30), GUILayout.Height(30))) removeIndex = i; GUILayout.EndHorizontal(); if (active) aeroStressIndex = i; } if (removeIndex >= 0) { FARAeroStress.StressTemplates.RemoveAt(removeIndex); if (aeroStressIndex == removeIndex && removeIndex > 0) aeroStressIndex--; removeIndex = -1; } if (GUILayout.Button("+", buttonStyle, GUILayout.Width(30), GUILayout.Height(30))) { FARPartStressTemplate newTemplate = new FARPartStressTemplate(); newTemplate.XZmaxStress = 500; newTemplate.YmaxStress = 500; newTemplate.name = "default"; newTemplate.isSpecialTemplate = false; newTemplate.minNumResources = 0; newTemplate.resources = new List<string>(); newTemplate.excludeResources = new List<string>(); newTemplate.rejectUnlistedResources = false; newTemplate.crewed = false; newTemplate.flowModeNeeded = false; newTemplate.flowMode = ResourceFlowMode.NO_FLOW; FARAeroStress.StressTemplates.Add(newTemplate); } GUILayout.EndVertical(); GUILayout.BeginVertical(boxStyle); FARPartStressTemplate activeTemplate = FARAeroStress.StressTemplates[aeroStressIndex]; string tmp; GUIUtils.TextEntryField("Name:", 80, ref activeTemplate.name); activeTemplate.YmaxStress = GUIUtils.TextEntryForDouble("Axial (Y-axis) Max Stress:", 240, activeTemplate.YmaxStress); activeTemplate.XZmaxStress = GUIUtils.TextEntryForDouble("Lateral (X,Z-axis) Max Stress:", 240, activeTemplate.XZmaxStress); activeTemplate.crewed = GUILayout.Toggle(activeTemplate.crewed, "Requires Crew Compartment"); tmp = activeTemplate.minNumResources.ToString(); GUIUtils.TextEntryField("Min Num Resources:", 80, ref tmp); tmp = Regex.Replace(tmp, @"[^\d]", ""); activeTemplate.minNumResources = Convert.ToInt32(tmp); GUILayout.Label("Req Resources:"); StringListUpdateGUI(activeTemplate.resources, buttonStyle, boxStyle); GUILayout.Label("Exclude Resources:"); StringListUpdateGUI(activeTemplate.excludeResources, buttonStyle, boxStyle); activeTemplate.rejectUnlistedResources = GUILayout.Toggle(activeTemplate.rejectUnlistedResources, "Reject Unlisted Res"); activeTemplate.flowModeNeeded = GUILayout.Toggle(activeTemplate.flowModeNeeded, "Requires Specific Flow Mode"); if (activeTemplate.flowModeNeeded) { activeTemplate.flowMode = (ResourceFlowMode)GUILayout.SelectionGrid((int)activeTemplate.flowMode, FlowMode_str, 1); } activeTemplate.isSpecialTemplate = GUILayout.Toggle(activeTemplate.isSpecialTemplate, "Special Hardcoded Usage"); FARAeroStress.StressTemplates[aeroStressIndex] = activeTemplate; GUILayout.EndVertical(); GUILayout.EndHorizontal(); }