Example #1
0
        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;
                }
            }
        }
Example #2
0
        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;
            }
        }
Example #3
0
        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;
        }
Example #4
0
        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();
        }