diff --git a/src/olympic/keel/include/keel/assetmanager.hpp b/src/olympic/keel/include/keel/assetmanager.hpp index 99f8d6b8..301bde1c 100644 --- a/src/olympic/keel/include/keel/assetmanager.hpp +++ b/src/olympic/keel/include/keel/assetmanager.hpp @@ -21,6 +21,17 @@ class AssetManager; template class AssetRef; + +[[nodiscard]] +constexpr bool valid(auto const&) noexcept { + return true; +} + +[[nodiscard]] +constexpr bool repair(auto const&) noexcept { + return false; +} + #ifndef OX_BARE_METAL template class AssetContainer { @@ -215,6 +226,9 @@ class AssetManager { ox::Result> loadAsset(ox::StringView const assetId) noexcept { auto &p = m_cache[assetId]; oxRequireM(obj, m_loader(assetId)); + if (!valid(obj) && !repair(obj)) { + return OxError(1, "asset is invalid state and could not be repaired"); + } if (!p) { p = ox::make_unique>(std::move(obj)); } else {