Beispiel #1
0
        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;
                }
            }
        }
Beispiel #2
0
        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;
                }
            }
        }