public void Pause_ShouldPauseTransitionAndStartAgainWithContinueToPlay()
        {
            var play = CreateAudioMaterial();
            var stop = CreateAudioMaterial("short");

            play.Stop();
            stop.Volume = 100;
            var transition = new LinearTransition(play, stop);

            transition.StartTransition(1);

            Assert.AreEqual(50, play.Volume);
            Assert.AreEqual(50, stop.Volume);

            Thread.Sleep(1000);
            transition.Pause();
            Assert.IsTrue(play.Position.TotalSeconds > 0.5 && play.Position.TotalSeconds < 1.5);

            Thread.Sleep(1000);
            Assert.IsTrue(play.Position.TotalSeconds > 0.5 && play.Position.TotalSeconds < 1.5);

            transition.ContinueToPlay();
            Thread.Sleep(1000);

            Assert.IsTrue(play.Position.TotalSeconds > 1.5 && play.Position.TotalSeconds < 2.5);

            transition.DoStep();

            Assert.IsTrue(transition.Finished);
            Assert.AreEqual(100, play.Volume);
            Assert.AreEqual(0, stop.Volume);

            play.Dispose();
        }
コード例 #2
0
            public static TransformTransition Create(AffineTransform deltaTransform, AffineTransform velocityTransform, float durationInSeconds, float deltaTime)
            {
                float inverseDeltaTime = 0.0f;

                if (deltaTime > epsilon)
                {
                    inverseDeltaTime = math.rcp(deltaTime);
                }

                var linear =
                    LinearTransition.Create(
                        deltaTransform.t, velocityTransform.t,
                        durationInSeconds, inverseDeltaTime);

                var angular =
                    AngularTransition.Create(
                        deltaTransform.q, velocityTransform.q,
                        durationInSeconds, inverseDeltaTime);

                return(new TransformTransition
                {
                    linear = linear,
                    angular = angular
                });
            }
        public void StartTransition_ShouldThrowExceptionIfDurationGreatherThanTrackToPlayTime()
        {
            var play = CreateAudioMaterial();
            var stop = CreateAudioMaterial("short");

            stop.Volume = 100;
            var transition = new LinearTransition(play, stop);

            transition.StartTransition(95);
        }
        public void Constructor_ShouldCreateTransitionWithOnlyTrackToStop()
        {
            var stop       = CreateAudioMaterial("short");
            var transition = new LinearTransition(null, stop);

            Assert.IsNull(transition.TrackToPlay);
            Assert.AreEqual(stop, transition.TrackToStop);

            stop.Dispose();
        }
        public void Constructor_ShouldCreateTransitionWithBothTracks()
        {
            var play       = CreateAudioMaterial();
            var stop       = CreateAudioMaterial("short");
            var transition = new LinearTransition(play, stop);

            Assert.AreSame(play, transition.TrackToPlay);
            Assert.AreEqual(stop, transition.TrackToStop);

            play.Dispose();
            stop.Dispose();
        }
        public void Cancel_TransitionShouldDisposeTrackToPlay()
        {
            var play = CreateAudioMaterial();
            var stop = CreateAudioMaterial("short");

            stop.Volume = 100;
            var transition = new LinearTransition(play, stop);

            transition.CancelTransition();

            stop.Dispose();
            play.Dispose();
        }
        public void StartTransition_ShouldDisposeTrackToStopWhenFinished()
        {
            var play = CreateAudioMaterial();
            var stop = CreateAudioMaterial("short");

            stop.Volume = 100;
            var transition = new LinearTransition(play, stop);

            transition.StartTransition(1);
            transition.DoStep();

            play.Dispose();
            stop.Dispose();
        }
        public void StartTransiton_ShouldDoTransitionWithOnlyTrackToStop()
        {
            var stop = CreateAudioMaterial("short");

            stop.Volume = 100;
            var transition = new LinearTransition(null, stop);

            transition.StartTransition(1);

            Assert.AreEqual(50, stop.Volume);

            transition.DoStep();

            Assert.IsTrue(transition.Finished);
            Assert.AreEqual(0, stop.Volume);
        }
        public void StartTransition_ShouldDoTransitionWithBothTracks()
        {
            var play = CreateAudioMaterial();
            var stop = CreateAudioMaterial("short");

            stop.Volume = 100;
            var transition = new LinearTransition(play, stop);

            transition.StartTransition(1);

            Assert.AreEqual(50, play.Volume);
            Assert.AreEqual(50, stop.Volume);

            transition.DoStep();

            Assert.IsTrue(transition.Finished);
            Assert.AreEqual(100, play.Volume);
            Assert.AreEqual(0, stop.Volume);

            play.Dispose();
        }