@@ -211,13 +211,6 @@ class IAssetManager : public core::IReferenceCounted, public core::QuitSignallin
211
211
{
212
212
params.meshManipulatorOverride = m_meshManipulator.get ();
213
213
}
214
- if (restoreLevels)
215
- {
216
- using flags_t = std::underlying_type_t <IAssetLoader::E_CACHING_FLAGS>;
217
- flags_t mask = ~static_cast <flags_t >(0 );
218
- mask = core::bitfieldInsert<flags_t >(mask, IAssetLoader::ECF_DONT_CACHE_REFERENCES, 2u *_hierarchyLevel, 2u *restoreLevels);
219
- params.cacheFlags = static_cast <IAssetLoader::E_CACHING_FLAGS>(params.cacheFlags & mask);
220
- }
221
214
222
215
IAssetLoader::SAssetLoadContext ctx{params, _file};
223
216
@@ -280,7 +273,7 @@ class IAssetManager : public core::IReferenceCounted, public core::QuitSignallin
280
273
281
274
if (restoreLevels)
282
275
{
283
- auto reloadParams = _params;
276
+ auto reloadParams = IAssetLoader::SAssetLoadParams ( _params, true ) ;
284
277
{
285
278
using flags_t = std::underlying_type_t <IAssetLoader::E_CACHING_FLAGS>;
286
279
constexpr uint32_t bitdepth = sizeof (flags_t )*8u ;
@@ -290,25 +283,25 @@ class IAssetManager : public core::IReferenceCounted, public core::QuitSignallin
290
283
// set flags for levels [_hierLevel,_hierLevel+_restoreLevels) to dont look into cache and dont put into cache
291
284
reloadFlags = core::bitfieldInsert<flags_t >(reloadFlags, IAssetLoader::ECF_DUPLICATE_REFERENCES, _hierarchyLevel*2u , restoreLevels*2u );
292
285
reloadParams.cacheFlags = static_cast <IAssetLoader::E_CACHING_FLAGS>(reloadFlags);
293
-
294
286
reloadParams.restoreLevels = 0u ; // make sure it wont turn into infinite recursion
295
- reloadParams.reload = true ; // TODO (consider): alternative to this flag: another method in override just to let user choose asset for restore
296
287
}
297
288
298
289
auto reloadBundle = getAssetInHierarchy_impl<RestoreWholeBundle>(_file, _supposedFilename, reloadParams, _hierarchyLevel, _override);
299
290
300
- if constexpr (RestoreWholeBundle)
291
+ if constexpr (! RestoreWholeBundle)
301
292
{
302
293
IAssetLoader::SAssetLoadContext ctx (params, file);
303
294
auto asset = _override->chooseDefaultAsset (bundle, ctx);
304
295
305
- // user responsible for checking if assets he wanted to be restored are in fact restored
306
- _override->handleRestore (std::move (asset), bundle, reloadBundle, restoreLevels);
296
+ auto newChosenAsset = _override->handleRestore (std::move (asset), bundle, reloadBundle, restoreLevels);
297
+ if (!newChosenAsset || newChosenAsset->isAnyDependencyDummy (restoreLevels))
298
+ return {};
307
299
}
308
300
else
309
301
{
310
- // user responsible for checking if assets he wanted to be restored are in fact restored
311
302
_override->handleRestore (bundle, reloadBundle, restoreLevels);
303
+ if (!whole_bundle_not_dummy (bundle))
304
+ return {};
312
305
}
313
306
}
314
307
@@ -405,26 +398,6 @@ class IAssetManager : public core::IReferenceCounted, public core::QuitSignallin
405
398
return getAsset (_file, _supposedFilename, _params, &m_defaultLoaderOverride);
406
399
}
407
400
408
- SAssetBundle getAssetWholeBundleRestore (const std::string& _filename, const IAssetLoader::SAssetLoadParams& _params, IAssetLoader::IAssetLoaderOverride* _override)
409
- {
410
- return getAssetInHierarchyWholeBundleRestore (_filename, _params, 0u , _override);
411
- }
412
- // TODO change name
413
- SAssetBundle getAssetWholeBundleRestore (io::IReadFile* _file, const std::string& _supposedFilename, const IAssetLoader::SAssetLoadParams& _params, IAssetLoader::IAssetLoaderOverride* _override)
414
- {
415
- return getAssetInHierarchyWholeBundleRestore (_file, _supposedFilename, _params, 0u , _override);
416
- }
417
- // TODO change name
418
- SAssetBundle getAssetWholeBundleRestore (const std::string& _filename, const IAssetLoader::SAssetLoadParams& _params)
419
- {
420
- return getAssetWholeBundleRestore (_filename, _params, &m_defaultLoaderOverride);
421
- }
422
- // TODO change name
423
- SAssetBundle getAssetWholeBundleRestore (io::IReadFile* _file, const std::string& _supposedFilename, const IAssetLoader::SAssetLoadParams& _params)
424
- {
425
- return getAssetWholeBundleRestore (_file, _supposedFilename, _params, &m_defaultLoaderOverride);
426
- }
427
-
428
401
// TODO change name
429
402
// ! Check whether Assets exist in cache using a key and optionally their types
430
403
/*
0 commit comments