public void Test0()
        {
            var ps    = new ParticleSystem();
            var angle = ps.Parameters.AddUniform <float>("A");
            var speed = ps.Parameters.AddUniform <float>("S");

            angle.DefaultValue = 3;
            speed.DefaultValue = 2;

            var e = new AngularVelocityEffector
            {
                ParticleSystem = ps,
                AngleParameter = "A",
                SpeedParameter = "S",
            };

            e.RequeryParameters();
            e.Initialize();

            var dt = new TimeSpan(0, 0, 0, 1);

            e.BeginUpdate(dt);
            e.UpdateParticles(dt, 10, 20);
            e.EndUpdate(dt);

            Assert.AreEqual(5, angle.DefaultValue);

            e.BeginUpdate(dt);
            e.UpdateParticles(dt, 10, 20);
            e.EndUpdate(dt);

            Assert.AreEqual(7 % ConstantsF.TwoPi, angle.DefaultValue);

            speed.DefaultValue = -17;

            e.BeginUpdate(dt);
            e.UpdateParticles(dt, 10, 20);
            e.EndUpdate(dt);

            Assert.IsTrue(Numeric.AreEqual(-10 + 2 * ConstantsF.TwoPi, angle.DefaultValue));
        }
        public void WrongParameters()
        {
            var ps = new ParticleSystem();

            ps.Parameters.AddUniform <float>("A");
            ps.Parameters.AddUniform <float>("S");

            var e = new AngularVelocityEffector {
                ParticleSystem = ps
            };

            var dt = new TimeSpan(0, 0, 0, 1);

            // There should be no exception.
            e.RequeryParameters();
            e.Initialize();
            e.BeginUpdate(dt);
            e.UpdateParticles(dt, 10, 20);
            e.EndUpdate(dt);

            e.Uninitialize();
        }