SimShift.Entities.ShifterTableConfiguration.DefaultByPeakRpm C# (CSharp) Method

DefaultByPeakRpm() public method

public DefaultByPeakRpm ( ) : void
return void
        public void DefaultByPeakRpm()
        {
            tableGear = new Dictionary<int, Dictionary<double, int>>();
            tableThrottle = new Dictionary<int, Dictionary<double, double>>();

            // Make sure there are 20 rpm steps, and 20 load steps
            // (20x20 = 400 items)
            for (int speed = 0; speed <= MaximumSpeed; speed += 1)
            {
                tableGear.Add(speed, new Dictionary<double, int>());
                tableThrottle.Add(speed, new Dictionary<double, double>());
                for (var load = 0.0; load <= 1.0; load += 0.1)
                {
                    tableThrottle[speed].Add(load, 1);
                    var gearSet = false;
                    var latestGearThatWasNotStalling = 1;

                    var shiftRpm = Drivetrain.StallRpm + (Drivetrain.MaximumRpm - 700 - Drivetrain.StallRpm) * load;
                    //shiftRpm = 3000 + (Drivetrain.MaximumRpm - 3000-1000) * load;
                    for (int gear = 0; gear < Drivetrain.Gears; gear++)
                    {
                        var calculatedRpm = Drivetrain.GearRatios[gear] * speed;
                        if (calculatedRpm < Drivetrain.StallRpm*1.75)
                        {
                            continue;
                        }

                        latestGearThatWasNotStalling = gear;
                        if (calculatedRpm > shiftRpm) continue;

                        gearSet = true;
                        tableGear[speed].Add(load, gear + 1);
                        break;
                    }
                    if (!gearSet)
                        tableGear[speed].Add(load, latestGearThatWasNotStalling == 1 ? 1 : latestGearThatWasNotStalling + 1);
                }
            }
        }