OpenBve.Game.BogusPretrainAI.Trigger C# (CSharp) Méthode

Trigger() private méthode

private Trigger ( TrainManager Train, double TimeElapsed ) : void
Train TrainManager
TimeElapsed double
Résultat void
            internal override void Trigger(TrainManager.Train Train, double TimeElapsed)
            {
                if (SecondsSinceMidnight - TimeLastProcessed >= CurrentInterval)
                {
                    TimeLastProcessed = SecondsSinceMidnight;
                    CurrentInterval = 5.0;
                    double ap = double.MaxValue, at = double.MaxValue;
                    double bp = double.MinValue, bt = double.MinValue;
                    for (int i = 0; i < BogusPretrainInstructions.Length; i++)
                    {
                        if (BogusPretrainInstructions[i].Time < SecondsSinceMidnight | at == double.MaxValue)
                        {
                            at = BogusPretrainInstructions[i].Time;
                            ap = BogusPretrainInstructions[i].TrackPosition;
                        }
                    }
                    for (int i = BogusPretrainInstructions.Length - 1; i >= 0; i--)
                    {
                        if (BogusPretrainInstructions[i].Time > at | bt == double.MinValue)
                        {
                            bt = BogusPretrainInstructions[i].Time;
                            bp = BogusPretrainInstructions[i].TrackPosition;
                        }
                    }
                    if (at != double.MaxValue & bt != double.MinValue & SecondsSinceMidnight <= BogusPretrainInstructions[BogusPretrainInstructions.Length - 1].Time)
                    {
                        double r = bt - at;
                        if (r > 0.0)
                        {
                            r = (SecondsSinceMidnight - at) / r;
                            if (r < 0.0) r = 0.0;
                            if (r > 1.0) r = 1.0;
                        }
                        else
                        {
                            r = 0.0;
                        }
                        double p = ap + r * (bp - ap);
                        double d = p - Train.Cars[0].FrontAxle.Follower.TrackPosition;
                        for (int j = 0; j < Train.Cars.Length; j++)
                        {
                            TrainManager.MoveCar(Train, j, d, 0.1);
                        }
                    }
                    else
                    {
                        TrainManager.DisposeTrain(Train);
                    }
                }
            }
        }
Game.BogusPretrainAI