Esempio n. 1
0
        public void Can_Serialize_And_Deserialize_Simple_Emitter()
        {
            var trigger = new TimeElapsedTrigger {
                Frequency = 1.2f
            };
            var initializer = new StaticPositionInitializer {
                XOffset = 1.1f, YOffset = 2.2f
            };
            var modifier = new ConstantSizeModifier {
                WidthChangePerSecond = 10, HeightChangePerSecond = 11
            };
            var emitter = new EmitterSettings
            {
                Trigger             = trigger,
                Initializers        = new [] { initializer },
                Modifiers           = new[] { modifier },
                MaxParticleLifeTime = 5.5f,
                PositionModifier    = new AltitudeBouncePositionModifier
                {
                    MinBounceAcceleration = 190,
                    MaxBounceAcceleration = 300,
                    Elasticity            = 0.9f,
                    Gravity = -200,
                }
            };

            var json = emitter.ToJson();

            var deserializedEmitter = EmitterSettings.FromJson(json);

            deserializedEmitter.ShouldNotBeNull();
            deserializedEmitter.MaxParticleLifeTime.ShouldBe(5.5f);

            deserializedEmitter.Trigger.ShouldNotBeNull();
            deserializedEmitter.Trigger.ShouldBeOfType <TimeElapsedTrigger>();
            ((TimeElapsedTrigger)deserializedEmitter.Trigger).Frequency.ShouldBe(1.2f);

            deserializedEmitter.Initializers.ShouldNotBeNull();
            deserializedEmitter.Initializers.Count.ShouldBe(1);
            deserializedEmitter.Initializers[0].ShouldNotBeNull();
            deserializedEmitter.Initializers[0].ShouldBeOfType <StaticPositionInitializer>();
            ((StaticPositionInitializer)deserializedEmitter.Initializers[0]).XOffset.ShouldBe(1.1f);
            ((StaticPositionInitializer)deserializedEmitter.Initializers[0]).YOffset.ShouldBe(2.2f);

            deserializedEmitter.Modifiers.ShouldNotBeNull();
            deserializedEmitter.Modifiers.Count.ShouldBe(1);
            deserializedEmitter.Modifiers[0].ShouldNotBeNull();
            deserializedEmitter.Modifiers[0].ShouldBeOfType <ConstantSizeModifier>();
            ((ConstantSizeModifier)deserializedEmitter.Modifiers[0]).WidthChangePerSecond.ShouldBe(10);
            ((ConstantSizeModifier)deserializedEmitter.Modifiers[0]).HeightChangePerSecond.ShouldBe(11);

            deserializedEmitter.PositionModifier.ShouldNotBeNull();
            deserializedEmitter.PositionModifier.ShouldBeOfType <AltitudeBouncePositionModifier>();
            ((AltitudeBouncePositionModifier)deserializedEmitter.PositionModifier).Gravity.ShouldBe(-200);
            ((AltitudeBouncePositionModifier)deserializedEmitter.PositionModifier).MinBounceAcceleration.ShouldBe(190);
            ((AltitudeBouncePositionModifier)deserializedEmitter.PositionModifier).MaxBounceAcceleration.ShouldBe(300);
            ((AltitudeBouncePositionModifier)deserializedEmitter.PositionModifier).Elasticity.ShouldBe(0.9f);
        }
Esempio n. 2
0
 /// <summary>
 ///  Constructor for initializing a new instance with a custom instance of <see cref="TimeElapsedTrigger"/>.
 /// <para>SyncTrigger is set to false by default</para>
 /// </summary>
 /// <param name="apiClient">The <see cref="MtApiClient"/> which will be used to communicate with MetaTrader.</param>
 /// <param name="timeElapsedTrigger">The custom instance of <see cref="TimeElapsedTrigger"/> which will be used to trigger this instance of <see cref="TradeMonitor"/>.</param>
 public TimerTradeMonitor(MtApiClient apiClient, TimeElapsedTrigger timeElapsedTrigger)
     : base(apiClient, timeElapsedTrigger)
 {
     _timeElapsedTrigger = timeElapsedTrigger;
 }