コード例 #1
0
        public override void OnUpdate()
        {
            double resource_abundance = ORSAtmosphericResourceHandler.getAtmosphericResourceContent(vessel.mainBody.flightGlobalsIndex, resourceName);
            bool   resource_available = false;

            if (resource_abundance > 0)
            {
                resource_available = true;
            }

            Events["startResourceExtraction"].active = !IsEnabled && resource_available;
            Events["stopResourceExtration"].active   = IsEnabled;

            if (IsEnabled)
            {
                Fields["powerStr"].guiActive     = true;
                Fields["resourceRate"].guiActive = true;
                statusTitle = "Active";
                double power_required = powerConsumption;
                powerStr = (power_required * electrical_power_ratio).ToString("0.000") + " MW / " + power_required.ToString("0.000") + " MW";
                double resource_density       = PartResourceLibrary.Instance.GetDefinition(resourceName).density;
                double resource_rate_per_hour = extraction_rate_d * resource_density * 3600;
                resourceRate = formatMassStr(resource_rate_per_hour);
            }
            else
            {
                Fields["powerStr"].guiActive     = false;
                Fields["resourceRate"].guiActive = false;
                statusTitle = "Offline";
            }
        }
コード例 #2
0
        public override void OnFixedUpdate()
        {
            if (!IsEnabled)
            {
                return;
            }


            double power_requirements = powerConsumption;
            double extraction_time    = extractionRatePerTon;

            if (vessel.altitude > ORSHelper.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;
                }
                else
                {
                    electrical_power_ratio = 1;
                }
            }
            double resource_abundance = ORSAtmosphericResourceHandler.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 = -ORSHelper.fixedRequestResource(part,resourceName, -extraction_rate / resource_density * TimeWarp.fixedDeltaTime) / TimeWarp.fixedDeltaTime;
                extraction_rate_d = -part.RequestResource(resourceName, -extraction_rate / resource_density * TimeWarp.fixedDeltaTime) / TimeWarp.fixedDeltaTime;
            }
            else
            {
                IsEnabled = false;
            }
        }