/// <summary> /// Sets the audio info to the data of a sound pack file audio. /// </summary> /// <param name="sound">The sound.</param> /// <param name="spfAudio">The sound pack file audio.</param> /// <returns>True if successful; false otherwise.</returns> public static bool SetAudioInfo(SoundContainer sound, SoundPacksFileV1.Audio spfAudio) { if (sound.HasSound) { return(SetAudioInfo(sound.AudioInfo, spfAudio)); } return(false); }
/// <summary> /// Sets the audio info to the data of a sound pack file audio. /// </summary> /// <param name="audioInfo">The audio info to set.</param> /// <param name="spfAudio">The sound pack file audio.</param> /// <returns>True if successful; false otherwise.</returns> public static bool SetAudioInfo(AudioInfo audioInfo, SoundPacksFileV1.Audio spfAudio) { if (audioInfo != null && spfAudio != null) { Action <AudioInfo, SoundPacksFileV1.AudioInfo> patchAudioInfo = null; int variation = 0; patchAudioInfo = new Action <AudioInfo, SoundPacksFileV1.AudioInfo>((ai, spf) => { if (spf.AudioClip != null) { ai.m_clip = spf.AudioClip; } else { WWW www = new WWW(new Uri(spf.Clip).AbsoluteUri); ai.m_clip = www.GetAudioClip(true, false); } ai.m_volume = spf.Volume; ai.m_pitch = spf.Pitch; ai.m_fadeLength = spf.FadeLength; ai.m_loop = spf.IsLoop; ai.m_is3D = spf.Is3D; ai.m_randomTime = spf.IsRandomTime; variation++; if (spf.Variations != null) { ai.m_variations = new AudioInfo.Variation[spf.Variations.Length]; for (int i = 0; i < spf.Variations.Length; i++) { ai.m_variations[i] = new AudioInfo.Variation() { m_probability = spf.Variations[i].Probability, m_sound = ScriptableObject.CreateInstance <AudioInfo>() }; patchAudioInfo(ai.m_variations[i].m_sound, spf.Variations[i].AudioInfo); } } else { ai.m_variations = null; } }); patchAudioInfo(audioInfo, spfAudio.AudioInfo); return(true); } return(false); }
/// <summary> /// Gets the sound pack file audio from an audio info. /// </summary> /// <param name="audioInfo">The original audio info.</param> /// <returns>The sound pack file audio.</returns> public static SoundPacksFileV1.Audio GetAudioInfo(AudioInfo audioInfo) { if (audioInfo != null) { var spfAudio = new SoundPacksFileV1.Audio() { Name = audioInfo.name, AudioInfo = new SoundPacksFileV1.AudioInfo() }; Action <AudioInfo, SoundPacksFileV1.AudioInfo> backupAudioInfo = null; backupAudioInfo = new Action <AudioInfo, SoundPacksFileV1.AudioInfo>((ai, spf) => { spf.AudioClip = ai.m_clip; spf.Volume = ai.m_volume; spf.MaxVolume = Mathf.Max(ai.m_volume, 1); spf.Pitch = ai.m_pitch; spf.FadeLength = ai.m_fadeLength; spf.IsLoop = ai.m_loop; spf.Is3D = ai.m_is3D; spf.IsRandomTime = ai.m_randomTime; if (ai.m_variations != null) { spf.Variations = new SoundPacksFileV1.Variation[ai.m_variations.Length]; for (int i = 0; i < ai.m_variations.Length; i++) { spf.Variations[i] = new SoundPacksFileV1.Variation() { Probability = ai.m_variations[i].m_probability, AudioInfo = new SoundPacksFileV1.AudioInfo() }; backupAudioInfo(ai.m_variations[i].m_sound, spf.Variations[i].AudioInfo); } } }); backupAudioInfo(audioInfo, spfAudio.AudioInfo); return(spfAudio); } return(null); }
public override void PatchSound(SoundPacksFileV1.Audio newSound) { }
private void SoundPackPresetDropDownSelectionChanged(int value) { this.isChangingSoundPackPreset = true; if (value == 0) { // Default Mod.Instance.Log.Debug("Resetting sound pack to default"); foreach (UIDropDown dropDown in this.soundSelections.Values) { dropDown.selectedIndex = 0; } } else if (value == 1) { // Custom, don't do anything here } else if (value >= 2) { // Sound pack string soundPackName = this.soundPacks[value]; SoundPacksFileV1.SoundPack soundPack = null; Mod.Instance.Log.Debug("Setting sound pack to {0}", soundPackName); if (SoundPacksManager.instance.SoundPacks.TryGetValue(soundPackName, out soundPack)) { foreach (var dropDown in this.soundSelections) { var prefix = dropDown.Key.Substring(0, dropDown.Key.IndexOf('.')); var id = dropDown.Key.Substring(dropDown.Key.IndexOf('.') + 1); SoundPacksFileV1.Audio[] audios = null; switch (prefix) { case "Ambient": audios = soundPack.Ambients; break; case "AmbientNight": audios = soundPack.AmbientsNight; break; case "Animal": audios = soundPack.Animals; break; case "Building": audios = soundPack.Buildings; break; case "Vehicle": audios = soundPack.Vehicles; break; case "Misc": audios = soundPack.Miscs; break; } if (audios != null) { SoundPacksFileV1.Audio audio = audios.FirstOrDefault(a => a.Type == id); if (audio != null) { Mod.Instance.Log.Debug("Setting sound {0} to {1}", audio.Type, audio.Name); dropDown.Value.selectedValue = audio.Name; } } } } } Mod.Instance.Settings.SoundPackPreset = this.soundPackPresetDropDown.selectedValue; this.isChangingSoundPackPreset = false; }