Race-Element icon indicating copy to clipboard operation
Race-Element copied to clipboard

Setup Editor

Open RiddleTime opened this issue 2 years ago • 2 comments

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.

RiddleTime avatar Apr 29 '22 15:04 RiddleTime

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;
}

RiddleTime avatar May 01 '22 12:05 RiddleTime

The new grouped configs might make the original ui from code obsolete

RiddleTime avatar Nov 28 '22 02:11 RiddleTime