protected override void Apply(AttributeLoader loader, object wrapperObj) { if (!(wrapperObj is PeelOutAttributesWrapper w)) { throw new System.InvalidCastException(); } loader.ApplyPPatch(InitialForwardAccelerationPercentage, () => w.InitialForwardAccelerationPercentage, Fixed64.UnsafeFromDouble); loader.ApplyPMultPatch(InitialForwardAccelerationPercentage, () => w.InitialForwardAccelerationPercentage); loader.ApplyPPatch(RadiusProportionalGrowthConstant, () => w.RadiusProportionalGrowthConstant, Fixed64.UnsafeFromDouble); loader.ApplyPMultPatch(RadiusProportionalGrowthConstant, () => w.RadiusProportionalGrowthConstant); loader.ApplyPPatch(InitialTurnRadiusAsMaxTurnRadiusPercentage, () => w.InitialTurnRadiusAsMaxTurnRadiusPercentage, Fixed64.UnsafeFromDouble); loader.ApplyPMultPatch(InitialTurnRadiusAsMaxTurnRadiusPercentage, () => w.InitialTurnRadiusAsMaxTurnRadiusPercentage); loader.ApplyPPatch(MaxTurnRatePercentage, () => w.MaxTurnRatePercentage, Fixed64.UnsafeFromDouble); loader.ApplyPMultPatch(MaxTurnRatePercentage, () => w.MaxTurnRatePercentage); loader.ApplyPPatch(UsePeelOut, () => w.UsePeelOut); loader.ApplyPPatch(DoOppositeTurn, () => w.DoOppositeTurn); if (PeelOutRegion != null) { using (loader.logger.BeginScope($"PeelOutRegion:")) { var w2 = new ManeuverRegionAttributesWrapper(w.PeelOutRegion); PeelOutRegion.Apply(loader, w2, null); w.PeelOutRegion = w2; } } }
protected override void Apply(AttributeLoader loader, object wrapperObj) { if (!(wrapperObj is JTurnAttributesWrapper w)) { throw new System.InvalidCastException(); } loader.ApplyPPatch(TurnStyle, () => w.TurnStyle); if (JTurnRegion != null) { using (loader.logger.BeginScope($"JTurnRegion:")) { var w2 = new ManeuverRegionAttributesWrapper(w.JTurnRegion); JTurnRegion.Apply(loader, w2, null); w.JTurnRegion = w2; } } }
protected override void Apply(AttributeLoader loader, object wrapperObj) { if (!(wrapperObj is ReverseOptionAttributesWrapper w)) { throw new System.InvalidCastException(); } loader.ApplyPPatch(Use, () => w.Use); loader.ApplyPPatch(AllowUseWhenMovingForward, () => w.AllowUseWhenMovingForward); loader.ApplyPPatch(MustReachMinSpeedBeforeTurn, () => w.MustReachMinSpeedBeforeTurn); if (Region != null) { using (loader.logger.BeginScope($"Region:")) { var w2 = new ManeuverRegionAttributesWrapper(w.Region); Region.Apply(loader, w2, null); w.Region = w2; } } }