Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #3
0
 /// <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);
     }
 }
Beispiel #4
0
        public AudioBuddySpeaker Play2D(AudioBuddyObject abobject, float volumeMultiplier)
        {
            AudioBuddySpeaker player = NextAvailablePlayerOrNew();

            player.SourcePlayer.spatialBlend = 0;
            player.PlaySound(abobject, volumeMultiplier);
            return(player);
        }
Beispiel #5
0
        /// <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);
        }
Beispiel #6
0
 private void RemoveFirstIfInList(AudioBuddyObject abobject)
 {
     if (_playbackList.Count > 0)
     {
         if (_playbackList[0].SoundEntry == abobject)
         {
             _playbackList.RemoveAt(0);
         }
     }
 }
Beispiel #7
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");
        }
Beispiel #8
0
        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);
        }
Beispiel #9
0
 /// <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;
     }
 }
Beispiel #10
0
        /// <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;
            }
        }
Beispiel #11
0
 /// <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));
 }
Beispiel #12
0
 /// <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));
 }
Beispiel #13
0
 public PlaybackEntry(BuddyListEntry listEntry)
 {
     SoundEntry = listEntry.BuddyEntry;
     Delay      = listEntry.Delay;
 }
Beispiel #14
0
 public PlaybackEntry(AudioBuddyObject buddyEntry, float delay)
 {
     SoundEntry = buddyEntry;
     Delay      = delay;
 }
Beispiel #15
0
 /// <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));
 }
Beispiel #16
0
 /// <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));
 }
Beispiel #17
0
 /// <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));
 }
Beispiel #18
0
 /// <summary>
 /// AudioBuddy plays a 2D sound
 /// </summary>
 /// <param name="abobject"></param>
 /// <returns></returns>
 public static AudioBuddySpeaker Play(AudioBuddyObject abobject)
 {
     return(Manager.Play2D(abobject, 1f));
 }
Beispiel #19
0
 /// <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);
 }