From 3064f7e74202f9d29cace0e7b4e1c1943f1047e6 Mon Sep 17 00:00:00 2001 From: Gary Talent Date: Sat, 1 Jun 2024 13:54:45 -0500 Subject: [PATCH] [keel] Add valid and repair functions for AssetManager --- .../src/olympic/keel/include/keel/assetmanager.hpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/deps/nostalgia/src/olympic/keel/include/keel/assetmanager.hpp b/deps/nostalgia/src/olympic/keel/include/keel/assetmanager.hpp index 99f8d6b..301bde1 100644 --- a/deps/nostalgia/src/olympic/keel/include/keel/assetmanager.hpp +++ b/deps/nostalgia/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 {