Beispiel #1
0
        public void TestMethod1()
        {
            MovingAverage avg = new MovingAverage(2);

            Assert.AreEqual(0, avg.GetAverage());

            avg.AddValue(100);
            Assert.AreEqual(100, avg.GetAverage());

            avg.AddValue(50);
            Assert.AreEqual(75, avg.GetAverage());

            avg.AddValue(0);
            Assert.AreEqual(25, avg.GetAverage());

            avg.AddValue(1000);
            Assert.AreEqual(500, avg.GetAverage());
        }
            protected override void Inspect(Vessel vessel)
            {
                double previousIspPerRunningEngine = engineIspPerRunningEngine;

                engineTotalThrust         = 0.0;
                engineIspPerRunningEngine = 0.0;
                propReqPerRunningEngine   = 0.0f;
                enginesRunningCount       = 0;
                enginesTotalCount         = 0;
                deltaIspPerSecond.Clear();;
                foreach (ModuleEngines engine in engines)
                {
                    enginesTotalCount++;
                    double thrust = engine.finalThrust;
                    engineTotalThrust += thrust;
                    if (engine.isEnabled && thrust > 0.0)
                    {
                        engineIspPerRunningEngine += engine.realIsp;
                        propReqPerRunningEngine   += engine.propellantReqMet;
                        enginesRunningCount++;
                    }
                }
                this.afterburnerEnabled = false;
                if (enginesRunningCount > 0)
                {
                    // ISP per engine
                    engineIspPerRunningEngine = engineIspPerRunningEngine / enginesRunningCount;
                    // propellant requirements per running engine
                    propReqPerRunningEngine = propReqPerRunningEngine / enginesRunningCount;
                    // Delta ISP
                    double interval = Planetarium.GetUniversalTime() - GetLastInspectTime();
                    if (interval > 0.0)
                    {
                        deltaIspPerSecond.AddValue((engineIspPerRunningEngine - previousIspPerRunningEngine) * (1 / interval));
                    }
                    // afterbruner
                    foreach (MultiModeEngine afterburner in this.afterburner)
                    {
                        if (afterburner.isEnabled && !afterburner.runningPrimary)
                        {
                            this.afterburnerEnabled = true;
                            break;
                        }
                    }
                }
                else
                {
                    engineIspPerRunningEngine = 0;
                    propReqPerRunningEngine   = 0;
                }
            }