public override void InitFromRawDecompressed(byte[] decompressedBytes)
 {
     using (var reader = new BinaryReader(new MemoryStream(decompressedBytes)))
     {
         this.Resource = Read_AudioMaterialResource(reader);
     }
 }
        private AudioMaterial Read_AudioMaterialResource(BinaryReader reader)
        {
            var result = new AudioMaterial();

            result.Version = ReadVersion(reader, 6, 0x14118B2F0);

            if (result.Version < 5)
            {
                result.Absorption0 = reader.ReadSingle();
                result.Absorption1 = reader.ReadSingle();
                result.Absorption2 = reader.ReadSingle();
            }
            else
            {
                result.Absorpotion = ReadVectorF(reader, 4);
            }

            result.Scattering = reader.ReadSingle();
            if (result.Version >= 2)
            {
                result.Name = ReadString(reader);
                if (result.Version < 6)
                {
                    result.FootstepGraph = ReadUUID(reader);
                }
            }

            if (result.Version >= 3 && result.Version <= 5)
            {
                result.ImpactObjectLightGraph   = ReadUUID(reader);
                result.ImpactObjectMediumGraph  = ReadUUID(reader);
                result.ImpactObjectHeavyGraph   = ReadUUID(reader);
                result.ImpactSurfaceLightGraph  = ReadUUID(reader);
                result.ImpactSurfaceMediumGraph = ReadUUID(reader);
                result.ImpactSurfaceHeavyGraph  = ReadUUID(reader);
                result.RollGraph  = ReadUUID(reader);
                result.SlideGraph = ReadUUID(reader);
            }
            if (result.Version >= 4)
            {
                if (result.Version < 5)
                {
                    result.Transmission0 = reader.ReadSingle();
                    result.Transmission1 = reader.ReadSingle();
                    result.Transmission2 = reader.ReadSingle();
                }
                else
                {
                    result.Transmission = ReadVectorF(reader, 4);
                }

                result.BankResource  = ReadUUID(reader);
                result.FootstepEvent = ReadUUID_B(reader);
                result.ImpactEvent   = ReadUUID_B(reader);
                result.SurfaceEvent  = ReadUUID_B(reader);
            }

            return(result);
        }
        private void StartTransition(MusicItem item)
        {
            AudioMaterial nextTrack = null;

            if (item != null)
            {
                nextTrack = new AudioMaterial(item);
                nextTrack.MasterVolume = Context.MasterVolume;
            }
            _transition = new LinearTransition(nextTrack, Context.MainTrack);
            _transition.StartTransition((int)Math.Min(Context.TransitionDuration, Context.MainTrack.TimeRemaining.TotalSeconds));
        }
示例#4
0
        /// <summary>
        /// Sets audio material.
        /// </summary>
        /// <param name="material">The material.</param>
        public void SetAudioMaterial(AudioMaterial material = AudioMaterial.Default)
        {
            if (material != m_currentAudioMaterial)
            {
                AudioClip clip = GetAudioByName(material);
                m_currentAudioMaterial = material;

                if (clip != null && m_audioSource != null)
                {
                    m_audioSource.clip = clip;
                }
            }
        }
示例#5
0
        /// <summary>
        /// Gets audio by name.
        /// </summary>
        /// <param name="material">The material.</param>
        private AudioClip GetAudioByName(AudioMaterial material)
        {
            AudioClip clip = null;

            foreach (var item in AudioList)
            {
                if (item.Material == material)
                {
                    clip = item.Clip;
                }
            }

            return(clip);
        }
示例#6
0
        public AbstractTransition(AudioMaterial trackToPlay, AudioMaterial trackToStop)
        {
            if (trackToStop == null)
            {
                throw new ArgumentNullException("trackToStop");
            }

            TrackToPlay  = trackToPlay;
            TrackToStop  = trackToStop;
            StepNumber   = 0;
            ActuelSetp   = 0;
            TargetVolume = 0;
            _inPause     = false;
            Finished     = false;
        }
示例#7
0
        public void LoadTrack(MusicItem item)
        {
            var currentVolume = 50;

            if (Track != null)
            {
                currentVolume = Track.Volume;
                Track.Dispose();
            }
            Track = new AudioMaterial(item);

            OnRaiseEvent(new TrackChangedEventArgs(item), TrackChangedEvent);
            GeneratePositionChange();

            Track.MasterVolume = Context.MasterVolume;
            SetVolume(currentVolume);
            _finished = false;
        }
 public LinearTransition(AudioMaterial trackToPlay, AudioMaterial trackToStop) : base(trackToPlay, trackToStop)
 {
 }