/// <summary> /// AudioBuddy animates the volume of a 3D sound to linearly fade in to a target volume over a set time. AudioBuddySpeakers have additional functionality for custom fades. /// </summary> /// <param name="abobject"></param> /// <param name="speakerPosition"></param> /// <param name="time"></param> /// <param name="targetVolume"></param> /// <returns></returns> public static AudioBuddySpeaker FadeIn(AudioBuddyObject abobject, GameObject speakerPosition, float time, float targetVolume = 1f) { AudioBuddySpeaker speaker = Play(abobject, speakerPosition); speaker.FadeIn(time, targetVolume); return(speaker); }
/// <summary> /// AudioBuddy animates the volume of a 3D sound to linearly fade out to zero or target volume over a set time. AudioBuddySpeakers have additional functionality for custom fades. /// </summary> /// <param name="abobject"></param> /// <param name="location"></param> /// <param name="time"></param> /// <param name="targetVolume"></param> /// <returns></returns> public static AudioBuddySpeaker FadeOut(AudioBuddyObject abobject, Vector3 location, float time, float targetVolume = 0f) { AudioBuddySpeaker speaker = Play(abobject, location); speaker.FadeOut(time, targetVolume); return(speaker); }
/// <summary> /// Marks an AudioBuddyObject as potentially faulty to the importer to set it up for deletion by the user. Only works in editor. /// </summary> /// <param name="abobject"></param> public void RegisterFaultyABObject(AudioBuddyObject abobject) { if (!_faultyABOjects.Contains(abobject)) { _faultyABOjects.Add(abobject); } }
public AudioBuddySpeaker Play2D(AudioBuddyObject abobject, float volumeMultiplier) { AudioBuddySpeaker player = NextAvailablePlayerOrNew(); player.SourcePlayer.spatialBlend = 0; player.PlaySound(abobject, volumeMultiplier); return(player); }
/// <summary> /// AudioBuddy attaches a 3D sound to the target GameObject so that the sound moves along with the object /// </summary> /// <param name="abobject"></param> /// <param name="speaker"></param> /// <returns></returns> public static AudioBuddySpeaker AttachSound(AudioBuddyObject abobject, GameObject speaker) { AudioSource source = speaker.AddComponent <AudioSource>(); AudioBuddySpeaker player = speaker.AddComponent <AudioBuddySpeaker>(); player.DisableDynamicManagement(); source.spatialBlend = 1; player.PlaySound(abobject, 1f); return(player); }
private void RemoveFirstIfInList(AudioBuddyObject abobject) { if (_playbackList.Count > 0) { if (_playbackList[0].SoundEntry == abobject) { _playbackList.RemoveAt(0); } } }
/// <summary> /// AudioBuddy returns the sound object with the same name identifier or throws an exception if no sound with that name could be found /// </summary> /// <param name="name"></param> /// <returns></returns> public static AudioBuddyObject FindSoundByName(string name) { //TODO improve by caching library of all AudioBuddySound objects in import manager database AudioBuddyObject abo = Importer.ABObjectCollection.Where(sound => sound.name == name).FirstOrDefault(); if (abo != null) { return(abo); } throw new ArgumentOutOfRangeException(name, "No sound with this name could be found in the database"); }
public AudioBuddySpeaker PlayAtLocation(AudioBuddyObject abobject, float volumeMultiplier, Vector3 location) { AudioBuddySpeaker player = NextAvailablePlayerOrNew(); //TODO Rollof player.ReassignSpeaker(); player.SourcePlayer.spatialBlend = 1; player.gameObject.transform.position = location; player.PlaySound(abobject, volumeMultiplier); return(player); }
/// <summary> /// Clears the internal database and readds every AudioBuddyObject asset in the project. Only works in editor. /// </summary> public void RescanAudioBuddyObjects() { ABObjectCollection.Clear(); //ABDatabase.Clear(); foreach (string GUID in AssetDatabase.FindAssets("t:AudioBuddyObject")) { AudioBuddyObject soundObject = AssetDatabase.LoadAssetAtPath <AudioBuddyObject>(AssetDatabase.GUIDToAssetPath(GUID)); ABObjectCollection.Add(soundObject); //ABDatabase[soundObject.Name] = soundObject; } }
/// <summary> /// Gives the speaker a sound to play. If it is already playing sounds from a list it will add them to the playback list and play them in order. This should not be called while the speaker is busy. /// </summary> /// <param name="soundObject"></param> /// <param name="volumeMultiplier"></param> public void PlaySound(AudioBuddyObject soundObject, float volumeMultiplier) { _externalVolumeMultipilier = volumeMultiplier * soundObject.Volume; switch (soundObject) { case AudioBuddySound sound: PlaySimpleSound(sound); break; case AudioBuddyList list: AddListToPlaybackQueue(list); break; case AudioBuddyRandom random: AddRandomToPlaybackQueue(random); break; default: throw new ArgumentException($"{nameof(soundObject)} is not a valid AudioBuddyObject: {(soundObject == null ? "Assigned sound is null" : soundObject.name)}"); //break; } }
/// <summary> /// AudioBuddy plays a 2D sound with an additional volume multiplier /// </summary> /// <param name="abobject"></param> /// <param name="volumeMultiplier"></param> /// <returns></returns> public static AudioBuddySpeaker Play(AudioBuddyObject abobject, float volumeMultiplier) { return(Manager.Play2D(abobject, volumeMultiplier)); }
/// <summary> /// AudioBuddy plays a 3D sound at the specified world location /// </summary> /// <param name="abobject"></param> /// <param name="volumeMultiplier"></param> /// <param name="location"></param> /// <returns></returns> public static AudioBuddySpeaker Play(AudioBuddyObject abobject, float volumeMultiplier, Vector3 location) { return(Manager.PlayAtLocation(abobject, volumeMultiplier, location)); }
public PlaybackEntry(BuddyListEntry listEntry) { SoundEntry = listEntry.BuddyEntry; Delay = listEntry.Delay; }
public PlaybackEntry(AudioBuddyObject buddyEntry, float delay) { SoundEntry = buddyEntry; Delay = delay; }
/// <summary> /// AudioBuddy plays a 3D sound at the specified GameObject position /// </summary> /// <param name="abobject"></param> /// <param name="volumeMultiplier"></param> /// <param name="speakerPosition"></param> /// <returns></returns> public static AudioBuddySpeaker Play(AudioBuddyObject abobject, float volumeMultiplier, GameObject speakerPosition) { return(Manager.PlayAtLocation(abobject, volumeMultiplier, speakerPosition.transform.position)); }
/// <summary> /// AudioBuddy plays a 3D sound at the specified GameObject position /// </summary> /// <param name="abobject"></param> /// <param name="speakerPosition"></param> /// <returns></returns> public static AudioBuddySpeaker Play(AudioBuddyObject abobject, GameObject speakerPosition) { return(Manager.PlayAtLocation(abobject, 1f, speakerPosition.transform.position)); }
/// <summary> /// AudioBuddy plays a 3D sound at the specified world location /// </summary> /// <param name="abobject"></param> /// <param name="location"></param> /// <returns></returns> public static AudioBuddySpeaker Play(AudioBuddyObject abobject, Vector3 location) { return(Manager.PlayAtLocation(abobject, 1f, location)); }
/// <summary> /// AudioBuddy plays a 2D sound /// </summary> /// <param name="abobject"></param> /// <returns></returns> public static AudioBuddySpeaker Play(AudioBuddyObject abobject) { return(Manager.Play2D(abobject, 1f)); }
/// <summary> /// Gives the speaker a sound to play. If it is already playing sounds from a list it will just play them in order. This should not be called while the speaker is busy. /// </summary> /// <param name="soundObject"></param> public void PlaySound(AudioBuddyObject soundObject) { PlaySound(soundObject, 1f); }