Race-Element
Race-Element copied to clipboard
Setup Editor
For this to work, every setup conversion requires minimum, maximum and incremental values for each of their fields. A LUT (look up table) works as well.
The Porsche 911 II GT3 R was the first car which has gained the ISetupChanger type. (see code below for implementation).
Since the caster and wheel rate look up tables have already been completed all we need is the maximum values for each setup property.
ITyreSetupChanger ISetupChanger.TyreSetupChanger => new TyreSetupChanger();
IElectronicsSetupChanger ISetupChanger.ElectronicsSetupChanger => new ElectronicsSetupChanger();
IMechanicalSetupChanger ISetupChanger.MechanicalSetupChanger => new MechSetupChanger();
IAeroSetupChanger ISetupChanger.AeroSetupChanger => new AeroSetupChanger();
IDamperSetupChanger ISetupChanger.DamperSetupChanger => new DamperSetupChanger();
private class TyreSetupChanger : ITyreSetupChanger
{
public SetupDoubleRange TyrePressures => TyrePressuresGT3;
public SetupDoubleRange CamberFront => new SetupDoubleRange(-4, -1.5, 0.1);
public SetupDoubleRange CamberRear => new SetupDoubleRange(-3.5, -1, 0.1);
public SetupDoubleRange ToeFront => new SetupDoubleRange(-0.4, 0.4, 0.01);
public SetupDoubleRange ToeRear => ToeFront;
public SetupDoubleRange Caster => new SetupDoubleRange(casters);
}
private class ElectronicsSetupChanger : IElectronicsSetupChanger
{
public SetupIntRange TractionControl => new SetupIntRange(0, 11, 1);
public SetupIntRange ABS => new SetupIntRange(0, 11, 1);
public SetupIntRange EcuMap => new SetupIntRange(1, 10, 1);
public SetupIntRange TractionControlCut => new SetupIntRange(0, 11, 1);
}
private class MechSetupChanger : IMechanicalSetupChanger
{
public SetupIntRange AntiRollBarFront => new SetupIntRange(0, 6, 1);
public SetupIntRange AntiRollBarRear => AntiRollBarFront;
public SetupDoubleRange BrakeBias => new SetupDoubleRange(43.0, 64.0, 0.2);
public SetupIntRange PreloadDifferential => new SetupIntRange(20, 300, 10);
public SetupIntRange BrakePower => new SetupIntRange(80, 100, 1);
public SetupDoubleRange SteeringRatio => new SetupDoubleRange(11, 17, 1);
public SetupIntRange WheelRateFronts => new SetupIntRange(wheelRateFronts);
public SetupIntRange WheelRateRears => new SetupIntRange(wheelRateRears);
public SetupIntRange BumpstopRate => new SetupIntRange(300, 2500, 100);
public SetupIntRange BumpstopRangeFronts => new SetupIntRange(0, 49, 1);
public SetupIntRange BumpstopRangeRears => new SetupIntRange(0, 50, 1);
}
private class AeroSetupChanger : IAeroSetupChanger
{
public SetupIntRange RideHeightFront => new SetupIntRange(53, 85, 1);
public SetupIntRange RideHeightRear => new SetupIntRange(55, 90, 1);
public SetupIntRange BrakeDucts => new SetupIntRange(0, 6, 1);
public SetupIntRange Splitter => new SetupIntRange(0, 5, 1);
public SetupIntRange RearWing => new SetupIntRange(0, 12, 1);
}
private class DamperSetupChanger : IDamperSetupChanger
{
public SetupIntRange BumpSlow => new SetupIntRange(0, 17, 1);
public SetupIntRange BumpFast => new SetupIntRange(0, 12, 1);
public SetupIntRange ReboundSlow => BumpSlow;
public SetupIntRange ReboundFast => BumpFast;
}
The new grouped configs might make the original ui from code obsolete