public override void OnUpdate()
        {
            float lat  = (float)vessel.mainBody.GetLatitude(this.vessel.GetWorldPos3D());
            float flux = VanAllen.getBeltAntiparticles(vessel.mainBody.flightGlobalsIndex, (float)vessel.altitude, lat);

            ParticleFlux   = flux.ToString("E");
            collectionRate = collection_rate_d.ToString("0.00") + " mg/day";
        }
        public override void OnFixedUpdate()
        {
            drawCount++;
            float lat  = (float)vessel.mainBody.GetLatitude(this.vessel.GetWorldPos3D());
            float flux = VanAllen.getBeltAntiparticles(vessel.mainBody.flightGlobalsIndex, (float)vessel.altitude, lat);

            //part.RequestResource("Antimatter", -flux * TimeWarp.fixedDeltaTime);
            ORSHelper.fixedRequestResource(part, "Antimatter", -flux * TimeWarp.fixedDeltaTime);
            last_active_time  = (float)Planetarium.GetUniversalTime();
            collection_rate_d = flux * 86400;
        }
示例#3
0
        public override void OnUpdate()
        {
            Events["ActivateMagnetometer"].active   = !IsEnabled;
            Events["DeactivateMagnetometer"].active = IsEnabled;
            Fields["Bmag"].guiActive         = IsEnabled;
            Fields["Brad"].guiActive         = IsEnabled;
            Fields["Bthe"].guiActive         = IsEnabled;
            Fields["ParticleFlux"].guiActive = IsEnabled;

            float lat   = (float)vessel.mainBody.GetLatitude(this.vessel.GetWorldPos3D());
            float Bmagf = VanAllen.getBeltMagneticFieldMag(vessel.mainBody.flightGlobalsIndex, (float)vessel.altitude, lat);
            float Bradf = VanAllen.getBeltMagneticFieldRadial(vessel.mainBody.flightGlobalsIndex, (float)vessel.altitude, lat);
            float Bthef = VanAllen.getBeltMagneticFieldAzimuthal(vessel.mainBody.flightGlobalsIndex, (float)vessel.altitude, lat);
            float flux  = VanAllen.getBeltAntiparticles(vessel.mainBody.flightGlobalsIndex, (float)vessel.altitude, lat);

            Bmag         = Bmagf.ToString("E") + "T";
            Brad         = Bradf.ToString("E") + "T";
            Bthe         = Bthef.ToString("E") + "T";
            ParticleFlux = flux.ToString("E");
        }
        public override void OnStart(PartModule.StartState state)
        {
            if (state == StartState.Editor)
            {
                return;
            }
            this.part.force_activate();

            double now       = Planetarium.GetUniversalTime();
            double time_diff = now - last_active_time;

            if (last_active_time != 0 && vessel.orbit.eccentricity < 1)
            {
                double lat                = vessel.mainBody.GetLatitude(vessel.transform.position);
                double vessel_avg_alt     = (vessel.orbit.ApR + vessel.orbit.PeR) / 2.0f;
                double vessel_inclination = vessel.orbit.inclination;
                float  flux               = (VanAllen.getBeltAntiparticles(vessel.mainBody.flightGlobalsIndex, (float)vessel_avg_alt, (float)vessel_inclination) + VanAllen.getBeltAntiparticles(vessel.mainBody.flightGlobalsIndex, (float)vessel_avg_alt, 0.0f)) / 2.0f;
                //vessel.orbit.
                double antimatter_to_add = time_diff * flux;
                //part.RequestResource("Antimatter", -antimatter_to_add);
                ORSHelper.fixedRequestResource(part, "Antimatter", -antimatter_to_add);
            }
        }