Some time ago I theorized that the asset registry has a race condition regarding the order of apply actions (see #344). Also during development of an asset validation command I discovered a very real deadlock (see #386) which can happen when secondary assets fail to load and some (in hindsight) shoddy locking mechanisms in Asset.PrivateLoad
I now want to:
[x] Add sufficient amount of unit tests before reworking
[x] Rework locking mechanism of Asset.PrivateLoad
[ ] Add proper asynchronous loading of assets (for parallel tools) alongside the synchronous interface (for gameplay)
[ ] Prevent any synchronous waits outside of the main thread
[ ] (at least attempt to) Prevent any asynchronous waits without cancellation tokens registered
[x] Workaround STA not being available on Linux (causing NUnit to not be single-threaded)
Fix smaller bugs and refactorings when convenient, e.g.:
[x] AssetHandle equality
[ ] AssetHandle.Registry in regards to local registries and handle scopes
[ ] Inspecting all exceptions from secondary asset loads or multiple primary asset loads
[ ] Prevent recursive asset dependencies
Misc TODOs:
[ ] Dispose stored secondary handles in all game assets
Some time ago I theorized that the asset registry has a race condition regarding the order of apply actions (see #344). Also during development of an asset validation command I discovered a very real deadlock (see #386) which can happen when secondary assets fail to load and some (in hindsight) shoddy locking mechanisms in
Asset.PrivateLoad
I now want to:
Asset.PrivateLoad
AssetHandle
equalityAssetHandle.Registry
in regards to local registries and handle scopesAssetHandleScope
IAssetRegistryStats