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; } } }
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"); } } }