示例#1
0
        internal void Stop()
        {
            if (!IsPaused)
            {
                RemovePauseState();
            }

            IntroSource.Stop();
            LoopSource.Stop();

            CancelInvoke();
        }
示例#2
0
        /// <summary>
        /// Plays the current track starting at the given play position.
        /// </summary>
        /// <param name="samplePosition">The play position, in samples</param>
        /// <param name="numberOfLoops">The number of times to loop the track. Set to 0 for endless play.</param>
        private void PlayAtPosition(int samplePosition, int numberOfLoops)
        {
            if (PlayingTrack != null)
            {
                if (samplePosition <= IntroSource.clip.samples)
                {
                    IntroSource.timeSamples = samplePosition;
                    LoopSource.timeSamples  = 0;
                    IntroSource.Play();
                    LoopSource.PlayDelayed(PlayingTrack.SamplesToSeconds(IntroSource.clip.samples - samplePosition));
                }
                else
                {
                    LoopSource.timeSamples = samplePosition - IntroSource.clip.samples;
                    LoopSource.Play();
                }

                numberOfLoopsLeft = numberOfLoops;
                InvokeRepeating("OnTrackEndOrLoop",
                                PlayingTrack.SamplesToSeconds(PlayingTrack.LengthInSamples - samplePosition),
                                PlayingTrack.SamplesToSeconds(PlayingTrack.LoopLength));
            }
        }