Inheritance: ModeHandlerBase
コード例 #1
0
        override internal void shutdown()
        {
            log.prefix = "[Landertron:" + part.flightID + "] ";
            log.debug("Shutting down engines");
            throttle            = 0.0f;
            vessel.OnFlyByWire += setThrottle;
            foreach (var engine in engines)
            {
                if (engine.throttleLocked)
                {
                    engine.Shutdown();
                }
            }
            double alt = new SoftLandingHandler(vessel).calculateDistanceToGround(vessel, this.engineThrust.normalized);

            if ((mode == Mode.SoftLanding) && (!vessel.LandedOrSplashed))
            {
                if (alt * vessel.mainBody.GeeASL * 9.81 * 2 + vessel.srf_velocity.sqrMagnitude > 9)                   // Landing speed of 3 m/s.
                {
                    status = Status.Armed;
                }
                else
                {
                    status = Status.Idle;
                }
            }
            else
            {
                status = Status.Idle;
            }
        }
コード例 #2
0
        public void FixedUpdate()
        {
            SoftLandingHandler  softLandingHandler  = new SoftLandingHandler(vessel);
            ShortLandingHandler shortLandingHandler = new ShortLandingHandler(vessel);
            StayPutHandler      stayPutHandler      = new StayPutHandler(vessel);

            foreach (var landertron in vessel.FindPartModulesImplementing <Landertron>())
            {
                switch (landertron.mode)
                {
                case Landertron.Mode.SoftLanding:
                    softLandingHandler.addLandertron(landertron);
                    break;

                case Landertron.Mode.ShortLanding:
                    shortLandingHandler.addLandertron(landertron);
                    break;

                case Landertron.Mode.StayPut:
                    stayPutHandler.addLandertron(landertron);
                    break;
                }
            }

            softLandingHandler.execute();
            shortLandingHandler.execute();
            stayPutHandler.execute();
        }
コード例 #3
0
        public void FixedUpdate()
        {
            SoftLandingHandler softLandingHandler = new SoftLandingHandler(vessel);
            ShortLandingHandler shortLandingHandler = new ShortLandingHandler(vessel);
            StayPutHandler stayPutHandler = new StayPutHandler(vessel);

            foreach (var landertron in vessel.FindPartModulesImplementing<Landertron>())
            {
                switch (landertron.mode)
                {
                    case Landertron.Mode.SoftLanding:
                        softLandingHandler.addLandertron(landertron);
                        break;
                    case Landertron.Mode.ShortLanding:
                        shortLandingHandler.addLandertron(landertron);
                        break;
                    case Landertron.Mode.StayPut:
                        stayPutHandler.addLandertron(landertron);
                        break;
                }
            }

            softLandingHandler.execute();
            shortLandingHandler.execute();
            stayPutHandler.execute();
        }
コード例 #4
0
 internal override void shutdown()
 {
     log.prefix = "[Landertron:" + part.flightID + "] ";
     log.debug("Shutting down engines");
     throttle = 0.0f;
     vessel.OnFlyByWire += setThrottle;
     foreach (var engine in engines) {
         if (engine.throttleLocked) {
             engine.Shutdown ();
         }
     }
     double alt = new SoftLandingHandler (vessel).calculateDistanceToGround (vessel, this.engineThrust.normalized);
     if ((mode == Mode.SoftLanding) && (!vessel.LandedOrSplashed)) {
         if (alt * vessel.mainBody.GeeASL * 9.81 * 2 > Math.Sqrt(8)) {
             status = Status.Armed;
         } else {
             status = Status.Idle;
         }
     } else {
         status = Status.Idle;
     }
 }