Resolved:
- Now the SoundPocket class uses a new logic for receiving Audio, which has a positive effect on performance. Now Audio is received immediately when the clip starts playing, its id is used for this. In this regard, an error has also been fixed when it was impossible to manage clips that were duplicated.
- Fixed an error when the CheckInstalledClipsAndDisableIfNotInstalled() method in the SoundPocket class had an unsupported character in its name.
- Fixed a logical error when the GetAudio(AudioClip audioClip, in Audio.AudioType audioType) method in the EazySoundManager class returned only the first occurrence of the clip, which was misleading, now the method returns a List of all occurrences. In the ListAudio class, the IndexOf(AudioClip) method now also returns a List with indexes of all Audio files containing this clip.
- General refactoring and optimization. Numerous overloads of the Play and Prepare methods in the EazySoundManager class have been replaced by single methods with optional arguments.
- The EazySoundManager class has removed a function that allowed for certain groups of sounds to achieve the simultaneous existence of only one instance of the Audio class with a unique AudioClip.
- Audio classes are now cached and reused instead of creating new ones. This made it possible to reduce garbage allocation to 0. Some garbage can still be allocated at the time of increasing arrays (dictionaries, queues, etc.) which are used in the EazySoundManager class. Also, due to the fact that a custom class is used instead of the usual queue, this allowed a slight increase in performance relative to the approach when classes were created each time.
- Special collections have been added that represent the implementation of standard collections in c#, but do not have any checks or exception generation in case of incorrect input, which greatly improves performance (for example, StackFast outperforms Queue by about 2.5 times in terms of speed). All collections use a Generic structure, but at the moment collections can only handle reference types normally.
- Fixed a critical bug when calling the Play() method of the Audio class did not have the proper effect, as a result of which the plugin stopped performing the necessary functions and playback of sounds became impossible.
- The READMI has been updated.