Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Released]
2.1.0 - 2022-07-30
Added
- Added new decorator
FluentAudioManager
, that similarly to theLoggedAudioManager
wraps anIAudioManager
, in this case instead of returning an AudioError directly, we get the instance of the class on which we can then call more functions. Allowing usage as a fluent interface - Added new static class
AudioChainer
, that allows starting a chain of methods and reuses the same class instance between different chains to decrease garbage allocation - Added new method
DeregisterChild
Changed
- Adjusted
AudioManagerSettings
GameObject to have a safety check for when we load a scene and there is already anotherAudioManagerSettings
GameObject the scene - Adjusted
RemoveSound
to actually delete the underlyingAudioSource
component and deregister and delete all registered children
2.0.0 - 2022-07-09
Added
- Added new method
SubscribeSourceChanged
- Added new method
UnsubscribeSourceChanged
- Added new method
RegisterChildAt3DPos
- Added new method
RegisterChildAttachedToGo
- Added
AudioSourceWrapper
that makes to possible to detect changes on theAudioSource
itself
Changed
- Removed
PlayAt3DPosition
,PlayOneShotAt3DPosition
,PlayAttachedToGameObject
,PlayOneShotAttachedToGameObject
- Overhauled nearly all methods of the AudioManager with a additonal parameter
ChildType
that allows using that method for anAudioSource
created by eitherRegisterChildAttachedToGo
(ChildType.ATTCHD_TO_GO
) orRegisterChildAt3DPos
(ChildType.AT_3D_POS
), the main originalAudioSource
(ChildType.PARENT
) or all at once (ChildType.ALL
) - Overhauled the Example scene to reflect the new changes
1.9.0 - 2022-06-19
Added
- Added new method
UnsubscribeProgressCoroutine
Changed
- Overhauled and renamed
SubscribeAudioFinished
toSubscribeProgressCoroutine
, now works with reverse playing songs and the callback has a return type, which decides wheter we unsubscribe the callback, resubscribe for the next iteration of the song or resubscribe it immediatly - Replaced
SkipForward
andSkipBackward
with new methodSkipTime
, which skips forward if the value is positive or backwards if the value is negative - Replaced
ValueDataError
and usedout
keyword for returning additional values from methods instead
1.8.0 - 2022-06-02
Added
- Play and Stop buttons on the ScriptableObject that allow to preview the clip with the given settings
- Added new methods
GetEnumerator
,SetPlaypbackDirection
,SkipForward
andSkipBackward
Changed
- Overhauled the UI and usability of the Example scene
1.7.0 - 2022-05-02
Added
- UnitTesting of the DefaultAudioManager, AudioLogger, LoggedAudioManager, ValueDataError, NullAudioManager and ServiceLocator class
- UILogger for the Example project to log the text shown in the console directly into a Textbox as well
Changed
- Split source code into different namespaces, as well as assemblies and folders corresponding to their features
- Fixed incorrect handling of null objects with the
AudioLogger
,LoggedAudioManager
andDefaultAudioManager
- Renamed
AudioManager
toDefaultAudioManager
to ensure no conflicts with the main namespace - Cached
new WaitForSecond()
calls to decrease memory usage in theLerpVolume
,LerpPitch
andLerpGroupValue
method
1.6.0 - 2022-02-06
Added
- New logger class that allows logging with a given priority level and different underlying
Debug.Log
calls - Added two new 3D methods which are derivatives of both the
PlayAt3DPosition
andPlayAttachedToGameObject
method and support multiple instances of the same sound running at once
Changed
- Updated AudioManager to have a dropdown toggle, that chooses the current log priority level, which then shows different amount of messages via. the newly added logger class
- Updated the functionality of all 3D methods to work with copies of the original AudioSource resisding on the AudioManager, this is done to ensure the AudioSource can be moved and deleted without effecting the AudioManager GameObject itself
1.5.0 - 2022-01-21
Changed
- AudioManager is now included via. the package manager as a package instead of as single scripts
1.4.0 - 2022-01-09
Added
- AudioSourceSetting scriptable objects, which have a seperate new section wich is hidden per default for 3D audio settings
Changed
- Replaced old way of adding sounds via. scriptable objects instead
- Replaced old way to searching for a sound instead of a List into a Dictionary to improve performance, when there are many sounds registered
- Adjusted methods that use 3D sound to now use the given settings and not have to take the settings every time from the method call
1.3.0 - 2022-01-03
Added
- Multiple methods to support the AudioMixer and AudioMixerGroups
1.2.0 - 2021-11-20
Changed
- AudioError integration (all methods now return an AudioError enum value instead of a boolean, showing more explicitly how the method failed)
1.1.0 - 2021-09-10
Added
- Pausing sound
- Unpausing sound
- Adding a sound at runtime
Changed
- Improved documentation
- Added documentation for new methods
1.0.0 - 2021-09-04
Added
- Inital release (Playing sound and changing the volume/pitch over time)