コード例 #1
0
        public void DefaultValues()
        {
            var e = new LinearAccelerationEffector();

            Assert.AreEqual(ParticleParameterNames.Direction, e.DirectionParameter);
            Assert.AreEqual(ParticleParameterNames.LinearSpeed, e.SpeedParameter);
            Assert.AreEqual(ParticleParameterNames.LinearAcceleration, e.AccelerationParameter);
        }
コード例 #2
0
        public void Clone()
        {
            var e = new LinearAccelerationEffector
            {
                DirectionParameter    = "D",
                SpeedParameter        = "S",
                AccelerationParameter = "A",
                Enabled = false,
            };

            var c = (LinearAccelerationEffector)e.Clone();

            Assert.AreEqual(e.DirectionParameter, c.DirectionParameter);
            Assert.AreEqual(e.SpeedParameter, c.SpeedParameter);
            Assert.AreEqual(e.AccelerationParameter, c.AccelerationParameter);
            Assert.AreEqual(e.Enabled, c.Enabled);
        }
コード例 #3
0
        public void Test3()
        {
            var ps           = new ParticleSystem();
            var direction    = ps.Parameters.AddVarying <Vector3>("D");
            var speed        = ps.Parameters.AddUniform <float>("L");
            var acceleration = ps.Parameters.AddVarying <Vector3>("A");

            direction.Values[11]      = new Vector3(0, 1, 0);
            speed.DefaultValue        = 1;
            acceleration.DefaultValue = new Vector3(0, -1, 0);

            var e = new LinearAccelerationEffector
            {
                ParticleSystem        = ps,
                DirectionParameter    = "D",
                SpeedParameter        = "L",
                AccelerationParameter = "A",
            };

            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(new Vector3(0, 1, 0), direction.Values[11]);
            //Assert.AreEqual(0, speed.DefaultValue);

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

            //Assert.AreEqual(new Vector3(0, -1, 0), direction.Values[11]);
            //Assert.AreEqual(1, speed.DefaultValue);
        }
コード例 #4
0
        public void WrongParameters()
        {
            var ps = new ParticleSystem();

            ps.Parameters.AddUniform <Vector3>("D");
            ps.Parameters.AddUniform <float>("L");
            ps.Parameters.AddUniform <Vector3>("A");

            var e = new LinearAccelerationEffector {
                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();
        }
コード例 #5
0
        public void Uninitialize()
        {
            var ps  = new ParticleSystem();
            var wp0 = new WeakReference(ps.Parameters.AddVarying <Vector3>(ParticleParameterNames.Direction));
            var wp1 = new WeakReference(ps.Parameters.AddVarying <float>(ParticleParameterNames.LinearSpeed));
            var wp2 = new WeakReference(ps.Parameters.AddVarying <Vector3>(ParticleParameterNames.LinearAcceleration));

            var e = new LinearAccelerationEffector {
                ParticleSystem = ps
            };

            e.RequeryParameters();
            e.Uninitialize();

            e.ParticleSystem = null;
            ps = null;

            GC.Collect();
            GC.WaitForFullGCComplete();

            Assert.IsFalse(wp0.IsAlive);
            Assert.IsFalse(wp1.IsAlive);
            Assert.IsFalse(wp2.IsAlive);
        }