LNXSDK/lib/aura/CHANGES.md
2025-01-22 16:18:30 +01:00

110 lines
5.2 KiB
Markdown

# Breaking Changes
This list contains notable changes that may break compatibility with previous versions (public API only).
Non-breaking changes (e.g. new features) are _not_ listed here.
_The dates below are given as **YYYY.MM.DD**._
- **2024.06.25** ([a8a66f6](https://github.com/MoritzBrueckner/aura/commit/a8a66f6d86fc812512dca2e7d5ba07ef0d804cd4)):
`aura.dsp.panner.Panner.dopplerFactor` was renamed to `aura.dsp.panner.Panner.dopplerStrength`.
- **2024.01.22** ([f7dff6e](https://github.com/MoritzBrueckner/aura/commit/f7dff6ea3840ed7c42c8994a735cc534525d0b63)):
Previously, if loading an asset with `aura.Aura.loadAssets()` failed, Aura would sometimes continue loading other assets and in other cases stop loading assets of the same type after the first failure, which was rather unintuitive.
Now, Aura always continues to load other assets even if an asset could not be loaded.
- **2024.01.14** ([`47d4426`](https://github.com/MoritzBrueckner/aura/commit/47d4426ffd93a5efb24eb5dc4c2d2a985e1010f5)):
The `aura.format.mhr.MHRReader` class is no longer meant to be instantiated, instead it is used statically now:
```haxe
final mhrReader = new aura.format.mhr.MHRReader(mhrBlobBytes);
final hrtf = mhrReader.read();
// becomes
final hrtf = aura.format.mhr.MHRReader.read(mhrBlobBytes);
```
- **2023.04.29** ([`8c1da0b`](https://github.com/MoritzBrueckner/aura/commit/8c1da0b039c55f56400f6270ca109b58c4a48526)):
This commit introduced multiple compatibility-breaking changes:
1. `aura.Handle` is now `aura.Aura.BaseChannelHandle` (a convenience typedef for `aura.channels.BaseChannel.BaseChannelHandle`).
2. `aura.MixChannelHandle` is now `aura.Aura.MixChannelHandle` (a convenience typedef for `aura.channels.MixChannel.MixChannelHandle`).
3. `Aura.createHandle()` was replaced with `Aura.createUncompBufferChannel()` as well as `Aura.createCompBufferChannel()`, depending on the first parameter of `createHandle()` that is now obsolete:
```haxe
Aura.createHandle(Play, mySound, loop, mixChannelHandle);
// becomes
Aura.createUncompBufferChannel(mySound, loop, mixChannelHandle);
// and
Aura.createHandle(Stream, mySound, loop, mixChannelHandle);
// becomes
Aura.createCompBufferChannel(mySound, loop, mixChannelHandle);
```
This change is more or less reverting [`0576c1f`](https://github.com/MoritzBrueckner/aura/commit/0576c1f657c5ff11d72f1916ae1b3f81ee0e2be7) and is introduced as part of adding more handle types to distinguish different channel features.
Now, `Aura.createUncompBufferChannel()` returns `Null<UncompBufferChannelHandle>` (`UncompBufferChannelHandle` is a new type introduced by this commit) and `Aura.createCompBufferChannel()` returns the unspecialized `Null<BaseChannelHandle>`.
This type-safe compile-time handling of handle types prevents the user from having to cast a returned handle to a specific handle type to get access to the complete functionality of a handle, which would have been required if `Aura.createHandle()` was still used to create handles (thus, [abstraction leaking](https://en.wikipedia.org/wiki/Leaky_abstraction) is minimized).
- **2022.11.21** ([`db8902c`](https://github.com/MoritzBrueckner/aura/commit/db8902c2816cdb7acbe221c97e3f454175df79c5)):
The way channels are connected to mix channels was changed:
```haxe
final myMixChannel: aura.MixChannelHandle = Aura.createMixChannel();
final myInputChannnel: aura.Handle = Aura.createHandle(...);
myMixChannel.removeInputChannel(myInputChannel);
// becomes
myInputChannel.setMixChannel(null);
// and
myMixChannel.addInputChannel(myInputChannel);
// becomes
myInputChannel.setMixChannel(myMixChannel);
```
- **2022.09.03** ([`3feb4ee`](https://github.com/MoritzBrueckner/aura/commit/3feb4eec6f5c9e10a7bc305c91c47c2aa1d52e1e)):
Stereo panning was moved out of the `aura.Handle` class to be completely inside
the `auda.dsp.panner.StereoPanner` where it actually belongs. This lays the
groundwork for upcoming changes to the `StereoPanner` and potentially different
channel formats in the future.
- **2022.07.18** ([`4386c3d`](https://github.com/MoritzBrueckner/aura/commit/4386c3dd6bcfe894016dc0c631c07881cbe7eba6)):
`Aura.dsp.Filter.Channels` was replaced with the new `aura.Types.Channels`
abstract. `Channels.Both` is now `Channels.All` (Aura currently only supports
stereo channels) and `Channels.toLeft()`/`Channels.toRight()` have been
replaced with the more generic `channel.matches()` member function.
- **2022.03.17** ([`0576c1f`](https://github.com/MoritzBrueckner/aura/commit/0576c1f657c5ff11d72f1916ae1b3f81ee0e2be7)):
`Aura.play()` and `Aura.stream()` were replaced with `Aura.createHandle()`.
The distinction between both play modes is now handled by the first parameter,
all other following parameters stay the same:
```haxe
Aura.play(mySound, loop, mixChannelHandle);
// becomes
Aura.createHandle(Play, mySound, loop, mixChannelHandle);
// and
Aura.stream(mySound, loop, mixChannelHandle);
// becomes
Aura.createHandle(Stream, mySound, loop, mixChannelHandle);
```
In addition to that, sounds are no longer auto-played to make it easier to
pre-initialize their handles. To play them, call `play()` on the returned
handle.