Example #1
0
 public void Jettison()
 {
     if (!Jettisoned)
     {
         fairing.DeployFairing();
     }
 }
 public static void DeployFairing(this Part p)
 {
     for (int i = 0; i < p.Modules.Count; i++)
     {
         PartModule m = p.Modules[i];
         ModuleProceduralFairing fairing = m as ModuleProceduralFairing;
         if (fairing != null)
         {
             fairing.DeployFairing();
         }
     }
 }
Example #3
0
 public void Jettison()
 {
     if (!Jettisoned)
     {
         if (fairing != null)
         {
             fairing.DeployFairing();
         }
         else
         {
             proceduralFairing.TriggerEvent("Jettison");
         }
     }
 }
Example #4
0
        private void ApplyAeroStressFailure()
        {
            bool failureOccured = false;

            if (part.Modules.Contains <ModuleProceduralFairing>())
            {
                ModuleProceduralFairing fairing = part.Modules.GetModule <ModuleProceduralFairing>();
                fairing.ejectionForce = 0.5f;

                fairing.DeployFairing();
                failureOccured = true;
            }

            List <Part> children = part.children;

            // ReSharper disable once ForCanBeConvertedToForeach -> decouple modifies collection
            for (int i = 0; i < children.Count; i++)
            {
                Part child = children[i];
                child.decouple(25);

                failureOccured = true;
            }

            if (part.parent)
            {
                part.decouple(25);
                failureOccured = true;
            }

            if (!failureOccured || !vessel)
            {
                return;
            }
            vessel.SendMessage("AerodynamicFailureStatus");
            string msg = Localizer.Format("FARFlightLogAeroFailure",
                                          KSPUtil.PrintTimeStamp(FlightLogger.met),
                                          part.partInfo.title);

            FlightLogger.eventLog.Add(msg);
            if (FARDebugValues.aeroFailureExplosions)
            {
                FXMonger.Explode(part, partTransform.position, (float)projectedArea.totalArea * 0.0005f);
            }
        }
        private void ApplyAeroStressFailure()
        {
            bool failureOccured = false;

            if (part.Modules.Contains("ModuleProceduralFairing"))
            {
                ModuleProceduralFairing fairing = (ModuleProceduralFairing)part.Modules["ModuleProceduralFairing"];
                fairing.ejectionForce = 0.5f;

                fairing.DeployFairing();
                failureOccured = true;
            }

            List <Part> children = part.children;

            for (int i = 0; i < children.Count; i++)
            {
                Part child = children[i];
                child.decouple(25);


                failureOccured = true;
            }
            if (part.parent)
            {
                part.decouple(25);
                failureOccured = true;
            }

            if (failureOccured)
            {
                if (vessel)
                {
                    vessel.SendMessage("AerodynamicFailureStatus");
                    string msg = String.Format("[{0:D2}:{1:D2}:{2:D2}] {3} failed due to aerodynamic stresses.", FlightLogger.met_hours, FlightLogger.met_mins, FlightLogger.met_secs, part.partInfo.title);
                    FlightLogger.eventLog.Add(msg);
                    if (FARDebugValues.aeroFailureExplosions)
                    {
                        FXMonger.Explode(part, partTransform.position, (float)projectedArea.totalArea * 0.0005f);
                    }
                }
            }
        }