NScumm.Scumm.Audio.IMuse.IMuseDigital.Track.Clone C# (CSharp) Method

Clone() public method

public Clone ( ) : Track
return Track
        public Track Clone()
        {
            var track = (Track)MemberwiseClone();
            return track;
        }

Usage Example

Example #1
0
        Track CloneToFadeOutTrack(Track track, int fadeDelay)
        {
            Track fadeTrack;

//            Debug.WriteLine("cloneToFadeOutTrack(soundId:{0}, fade:{1}) - begin of func", track.TrackId, fadeDelay);

            if (track.ToBeRemoved)
            {
//                Console.Error.WriteLine("cloneToFadeOutTrack: Tried to clone a track to be removed, please bug report");
                return(null);
            }

            Debug.Assert(track.TrackId < MaxDigitalTracks);
            fadeTrack = _track[track.TrackId + MaxDigitalTracks];

            if (fadeTrack.Used)
            {
//                Debug.WriteLine("cloneToFadeOutTrack: No free fade track, force flush fade soundId:{0}", fadeTrack.SoundId);
                FlushTrack(fadeTrack);
                _mixer.StopHandle(fadeTrack.MixChanHandle);
            }

            // Clone the settings of the given track
            fadeTrack = track.Clone();
            _track[track.TrackId + MaxDigitalTracks] = fadeTrack;
            fadeTrack.TrackId = track.TrackId + MaxDigitalTracks;

            // Clone the sound.
            // leaving bug number for now #1635361
            var soundDesc = _sound.CloneSound(track.SoundDesc);

            if (soundDesc == null)
            {
                // it fail load open old song after switch to diffrent CDs
                // so gave up
//                Console.Error.WriteLine("Game not supported while playing on 2 diffrent CDs");
            }
            track.SoundDesc = soundDesc;

            // Set the volume fading parameters to indicate a fade out
            fadeTrack.VolFadeDelay = fadeDelay;
            fadeTrack.VolFadeDest  = 0;
            fadeTrack.VolFadeStep  = (fadeTrack.VolFadeDest - fadeTrack.vol) * 60 * (1000 / _callbackFps) / (1000 * fadeDelay);
            fadeTrack.VolFadeUsed  = true;

            // Create an appendable output buffer
            fadeTrack.Stream        = new QueuingAudioStream(_sound.GetFreq(fadeTrack.SoundDesc), track.MixerFlags.HasFlag(AudioFlags.Stereo));
            fadeTrack.MixChanHandle = _mixer.PlayStream(track.GetSoundType(), fadeTrack.Stream, -1, fadeTrack.Volume, fadeTrack.Pan,
                                                        true, false, track.MixerFlags.HasFlag(AudioFlags.Stereo));
            fadeTrack.Used = true;

//            Debug.WriteLine("CloneToFadeOutTrack() - end of func, soundId {0}, fade soundId {1}", track.SoundId, fadeTrack.SoundId);

            return(fadeTrack);
        }
All Usage Examples Of NScumm.Scumm.Audio.IMuse.IMuseDigital.Track::Clone