Example #1
0
        public override void OnFixedUpdate()
        {
            if (IsEnabled)
            {
                double power_requirements = powerConsumption;
                double extraction_time    = extractionRatePerTon;
                if (vessel.altitude > ORSX_Helper.getMaxAtmosphericAltitude(vessel.mainBody))
                {
                    IsEnabled = false;
                    return;
                }

                double electrical_power_provided = 0;
                if (resourceManaged)
                {
                    electrical_power_provided = consumeFNResource(power_requirements * TimeWarp.fixedDeltaTime,
                                                                  resourceToUse);
                }
                else
                {
                    electrical_power_provided = part.RequestResource(resourceToUse,
                                                                     power_requirements * TimeWarp.fixedDeltaTime);
                }

                if (power_requirements > 0)
                {
                    electrical_power_ratio = electrical_power_provided / TimeWarp.fixedDeltaTime / power_requirements;
                }
                else
                {
                    if (power_requirements < 0)
                    {
                        IsEnabled = false;
                        return;
                    }
                    electrical_power_ratio = 1;
                }
                double resource_abundance =
                    ORSX_AtmosphericResourceHandler.getAtmosphericResourceContent(vessel.mainBody.flightGlobalsIndex,
                                                                                  resourceName);
                double extraction_rate = resource_abundance * extraction_time * electrical_power_ratio *
                                         part.vessel.atmDensity;
                if (resource_abundance > 0)
                {
                    double resource_density = PartResourceLibrary.Instance.GetDefinition(resourceName).density;
                    //extraction_rate_d = -part.RequestResource(resourceName, -extraction_rate / resource_density * TimeWarp.fixedDeltaTime) / TimeWarp.fixedDeltaTime;
                    extraction_rate_d =
                        -ORSX_Helper.fixedRequestResource(part, resourceName,
                                                          -extraction_rate / resource_density * TimeWarp.fixedDeltaTime) / TimeWarp.fixedDeltaTime;
                }
                else
                {
                    IsEnabled = false;
                }
            }
        }
Example #2
0
        public override void OnUpdate()
        {
            if (vessel != null)
            {
                double airdensity = part.vessel.atmDensity;
                double airspeed   = part.vessel.srf_velocity.magnitude + 40.0;
                double air        = airspeed * airdensity * scoopair;


                if (vessel.altitude <= ORSX_Helper.getMaxAtmosphericAltitude(vessel.mainBody))
                {
                    double scoopedAtm = air;
                    resflowf =
                        (float)
                        ORSX_Helper.fixedRequestResource(part, intakeResourceStr, -scoopedAtm * TimeWarp.fixedDeltaTime);
                    resflowf = -resflowf / TimeWarp.fixedDeltaTime;
                    resflow  = resflowf.ToString("0.0000");
                }
            }
        }