|
Blender V4.3
|
#include <asset_library_service.hh>
Classes | |
| struct | ExplodedPath |
Static Public Member Functions | |
| static AssetLibraryService * | get () |
| static void | destroy () |
| static std::string | root_path_from_library_ref (const AssetLibraryReference &library_reference) |
| static bUserAssetLibrary * | find_custom_asset_library_from_library_ref (const AssetLibraryReference &library_reference) |
| static bUserAssetLibrary * | find_custom_preferences_asset_library_from_asset_weak_ref (const AssetWeakReference &asset_reference) |
Protected Member Functions | |
| AssetLibrary * | find_loaded_on_disk_asset_library_from_name (StringRef name) const |
| AssetLibrary * | get_asset_library_on_disk (eAssetLibraryType library_type, StringRef name, StringRefNull root_path) |
| void | app_handler_register () |
| void | app_handler_unregister () |
Static Protected Member Functions | |
| static void | allocate_service_instance () |
Global singleton-ish that provides access to individual #AssetLibrary instances.
Whenever a blend file is loaded, the existing instance of AssetLibraryService is destructed, and a new one is created – hence the "singleton-ish". This ensures only information about relevant asset libraries is loaded.
Definition at line 43 of file asset_library_service.hh.
|
default |
|
default |
|
staticprotected |
Allocate a new instance of the service and assign it to instance_.
Definition at line 459 of file asset_library_service.cc.
References BKE_blender_atexit_register(), and destroy().
Referenced by get().
|
protected |
Ensure the AssetLibraryService instance is destroyed before a new blend file is loaded. This makes memory management simple, and ensures a fresh start for every blend file.
Definition at line 482 of file asset_library_service.cc.
References bCallbackFuncStore::alloc, bCallbackFuncStore::arg, BKE_callback_add(), BKE_CB_EVT_LOAD_PRE, bCallbackFuncStore::func, and blender::asset_system::on_blendfile_load().
|
protected |
Definition at line 493 of file asset_library_service.cc.
References bCallbackFuncStore::arg, BKE_callback_remove(), BKE_CB_EVT_LOAD_PRE, and bCallbackFuncStore::func.
|
static |
Destroy the AssetLibraryService singleton. It will be reallocated by get() if necessary.
Definition at line 56 of file asset_library_service.cc.
Referenced by allocate_service_instance(), AS_asset_libraries_exit(), blender::asset_system::on_blendfile_load(), blender::asset_system::tests::AssetLibraryServiceTest::TearDown(), blender::asset_system::tests::AssetLibraryTest::TearDown(), blender::asset_system::tests::AssetLibraryTestBase::TearDown(), and blender::asset_system::tests::TEST_F().
|
static |
Definition at line 431 of file asset_library_service.cc.
References ASSET_LIBRARY_CUSTOM, BKE_preferences_asset_library_find_index(), BLI_assert, AssetLibraryReference::custom_library_index, and AssetLibraryReference::type.
Referenced by get_asset_library(), and root_path_from_library_ref().
|
static |
Definition at line 235 of file asset_library_service.cc.
References ASSET_LIBRARY_CUSTOM, AssetWeakReference::asset_library_identifier, AssetWeakReference::asset_library_type, BKE_preferences_asset_library_find_by_name(), and ELEM.
Referenced by resolve_asset_weak_reference_to_library_path().
|
protected |
Definition at line 245 of file asset_library_service.cc.
Referenced by resolve_asset_weak_reference_to_library_path().
| void blender::asset_system::AssetLibraryService::foreach_loaded_asset_library | ( | FunctionRef< void(AssetLibrary &)> | fn, |
| bool | include_all_library ) const |
See AssetLibrary::foreach_loaded().
Definition at line 514 of file asset_library_service.cc.
Referenced by AS_asset_library_remap_ids(), blender::asset_system::AssetLibrary::foreach_loaded(), and has_any_unsaved_catalogs().
|
static |
Return the AssetLibraryService singleton, allocating it if necessary.
Definition at line 48 of file asset_library_service.cc.
References allocate_service_instance().
Referenced by blender::asset_system::all_library_reload_catalogs_if_dirty(), AS_asset_full_path_explode_from_weak_ref(), AS_asset_library_has_any_unsaved_catalogs(), AS_asset_library_load(), AS_asset_library_load(), AS_asset_library_remap_ids(), blender::asset_system::AssetCatalogService::create_catalog(), blender::asset_system::AssetLibrary::foreach_loaded(), blender::asset_system::tests::AssetRepresentationTest::get_builtin_library_from_type(), blender::asset_system::AssetCatalogService::prune_catalogs_by_path(), blender::asset_system::AssetCatalogService::redo(), blender::asset_system::AssetLibrary::resolve_asset_weak_reference_to_full_path(), blender::asset_system::tests::TEST_F(), blender::asset_system::tests::TEST_F(), blender::asset_system::tests::TEST_F(), blender::asset_system::tests::TEST_F(), blender::asset_system::tests::TEST_F(), blender::asset_system::tests::TEST_F(), blender::asset_system::tests::TEST_F(), blender::asset_system::tests::TEST_F(), blender::asset_system::tests::TEST_F(), blender::asset_system::tests::TEST_F(), blender::asset_system::tests::TEST_F(), blender::asset_system::tests::TEST_F(), blender::asset_system::tests::TEST_F(), blender::asset_system::tests::TEST_F(), blender::asset_system::tests::TEST_F(), blender::asset_system::AssetCatalogService::undo(), and blender::asset_system::AssetCatalogService::update_catalog_path().
| AssetLibrary * blender::asset_system::AssetLibraryService::get_asset_library | ( | const Main * | bmain, |
| const AssetLibraryReference & | library_reference ) |
Definition at line 65 of file asset_library_service.cc.
References AS_asset_library_find_suitable_root_path_from_main(), ASSET_LIBRARY_ALL, ASSET_LIBRARY_CUSTOM, ASSET_LIBRARY_ESSENTIALS, ASSET_LIBRARY_LOCAL, ASSET_LIBRARY_RELATIVE_PATH, bUserAssetLibrary::dirpath, blender::asset_system::essentials_directory_path(), find_custom_asset_library_from_library_ref(), bUserAssetLibrary::flag, get_asset_library_all(), get_asset_library_current_file(), get_asset_library_on_disk_builtin(), get_asset_library_on_disk_custom(), bUserAssetLibrary::import_method, blender::asset_system::AssetLibrary::import_method_, blender::StringRefBase::is_empty(), blender::asset_system::AssetLibrary::may_override_import_method_, bUserAssetLibrary::name, AssetLibraryReference::type, and blender::asset_system::AssetLibrary::use_relative_path_.
Referenced by AS_asset_library_load(), get_asset_library_all(), blender::asset_system::tests::AssetRepresentationTest::get_builtin_library_from_type(), and blender::asset_system::tests::TEST_F().
| AssetLibrary * blender::asset_system::AssetLibraryService::get_asset_library_all | ( | const Main * | bmain | ) |
Get the "All" asset library, which loads all others and merges them into one.
Definition at line 208 of file asset_library_service.cc.
References blender::asset_system::all_valid_asset_library_refs(), ASSET_LIBRARY_ALL, CLOG_INFO, get_asset_library(), and LOG.
Referenced by get_asset_library().
| AssetLibrary * blender::asset_system::AssetLibraryService::get_asset_library_current_file | ( | ) |
Get the "Current File" asset library.
Definition at line 175 of file asset_library_service.cc.
References CLOG_INFO, lib, and LOG.
Referenced by AS_asset_library_load(), get_asset_library(), blender::asset_system::tests::TEST_F(), and blender::asset_system::tests::TEST_F().
|
protected |
Get the given asset library. Opens it (i.e. creates a new AssetLibrary instance) if necessary.
| root_path | The top level directory. |
Definition at line 117 of file asset_library_service.cc.
References ASSET_LIBRARY_CUSTOM, ASSET_LIBRARY_ESSENTIALS, BLI_assert_msg, CLOG_INFO, blender::StringRefBase::is_empty(), lib, LOG, and blender::asset_system::utils::normalize_directory_path().
Referenced by get_asset_library_on_disk_builtin(), and get_asset_library_on_disk_custom().
| AssetLibrary * blender::asset_system::AssetLibraryService::get_asset_library_on_disk_builtin | ( | eAssetLibraryType | type, |
| StringRefNull | root_path ) |
Get a builtin (not user defined) asset library. I.e. a library that is not of type ASSET_LIBRARY_CUSTOM.
Definition at line 163 of file asset_library_service.cc.
References ASSET_LIBRARY_CUSTOM, BLI_assert_msg, and get_asset_library_on_disk().
Referenced by get_asset_library().
| AssetLibrary * blender::asset_system::AssetLibraryService::get_asset_library_on_disk_custom | ( | StringRef | name, |
| StringRefNull | root_path ) |
Get an asset library of type ASSET_LIBRARY_CUSTOM.
Definition at line 157 of file asset_library_service.cc.
References ASSET_LIBRARY_CUSTOM, and get_asset_library_on_disk().
Referenced by AS_asset_library_load(), get_asset_library(), blender::asset_system::tests::TEST_F(), blender::asset_system::tests::TEST_F(), blender::asset_system::tests::TEST_F(), blender::asset_system::tests::TEST_F(), blender::asset_system::tests::TEST_F(), blender::asset_system::tests::TEST_F(), blender::asset_system::tests::TEST_F(), blender::asset_system::tests::TEST_F(), blender::asset_system::tests::TEST_F(), blender::asset_system::tests::TEST_F(), blender::asset_system::tests::TEST_F(), and blender::asset_system::tests::TEST_F().
| bool blender::asset_system::AssetLibraryService::has_any_unsaved_catalogs | ( | ) | const |
Returns whether there are any known asset libraries with unsaved catalog edits.
Definition at line 500 of file asset_library_service.cc.
References blender::asset_system::AssetLibrary::catalog_service(), foreach_loaded_asset_library(), and blender::asset_system::AssetCatalogService::has_unsaved_changes().
Referenced by AS_asset_library_has_any_unsaved_catalogs(), blender::asset_system::tests::TEST_F(), and blender::asset_system::tests::TEST_F().
| std::string blender::asset_system::AssetLibraryService::normalize_asset_weak_reference_relative_asset_identifier | ( | const AssetWeakReference & | asset_reference | ) |
Return a normalized version of AssetWeakReference.relative_asset_identifier. Special care is required here because slashes or backslashes should not be converted in the ID name itself.
Definition at line 319 of file asset_library_service.cc.
References ALTSEP_STR, BLI_assert, blender::StringRefBase::find_first_of(), blender::asset_system::utils::normalize_path(), blender::StringRefBase::not_found, AssetWeakReference::relative_asset_identifier, rfind_blendfile_extension(), and SEP_STR.
Referenced by resolve_asset_weak_reference_to_exploded_path(), and resolve_asset_weak_reference_to_full_path().
| void blender::asset_system::AssetLibraryService::reload_all_library_catalogs_if_dirty | ( | ) |
Definition at line 197 of file asset_library_service.cc.
Referenced by blender::asset_system::all_library_reload_catalogs_if_dirty().
| std::optional< AssetLibraryService::ExplodedPath > blender::asset_system::AssetLibraryService::resolve_asset_weak_reference_to_exploded_path | ( | const AssetWeakReference & | asset_reference | ) |
Similar to BKE_blendfile_library_path_explode, returns the full path as resolve_asset_weak_reference_to_library_path, with StringRefs to the dir (i.e. blendfile path), group (i.e. ID type) and name (i.e. ID name) parts.
Definition at line 374 of file asset_library_service.cc.
References ASSET_LIBRARY_ALL, ASSET_LIBRARY_CUSTOM, ASSET_LIBRARY_ESSENTIALS, ASSET_LIBRARY_LOCAL, AssetWeakReference::asset_library_type, BLI_assert, blender::asset_system::AssetLibraryService::ExplodedPath::dir_component, blender::asset_system::AssetLibraryService::ExplodedPath::full_path, blender::asset_system::AssetLibraryService::ExplodedPath::group_component, blender::asset_system::AssetLibraryService::ExplodedPath::name_component, normalize_asset_weak_reference_relative_asset_identifier(), blender::StringRefBase::not_found, AssetWeakReference::relative_asset_identifier, resolve_asset_weak_reference_to_full_path(), rfind_blendfile_extension(), SEP, and blender::StringRefBase::substr().
Referenced by AS_asset_full_path_explode_from_weak_ref(), blender::asset_system::tests::TEST_F(), blender::asset_system::tests::TEST_F(), and blender::asset_system::tests::TEST_F().
| std::string blender::asset_system::AssetLibraryService::resolve_asset_weak_reference_to_full_path | ( | const AssetWeakReference & | asset_reference | ) |
Attempt to build a full path to an asset based on the currently available (not necessary loaded) asset libraries. The path is not guaranteed to exist. The returned path will be normalized and using native slashes.
Definition at line 350 of file asset_library_service.cc.
References normalize_asset_weak_reference_relative_asset_identifier(), blender::asset_system::utils::normalize_path(), AssetWeakReference::relative_asset_identifier, resolve_asset_weak_reference_to_library_path(), and SEP_STR.
Referenced by resolve_asset_weak_reference_to_exploded_path(), blender::asset_system::AssetLibrary::resolve_asset_weak_reference_to_full_path(), blender::asset_system::tests::TEST_F(), blender::asset_system::tests::TEST_F(), and blender::asset_system::tests::TEST_F().
| std::string blender::asset_system::AssetLibraryService::resolve_asset_weak_reference_to_library_path | ( | const AssetWeakReference & | asset_reference | ) |
Get a valid library path from the weak reference. Empty if e.g. the reference is to a local asset.
Definition at line 256 of file asset_library_service.cc.
References ASSET_LIBRARY_ALL, ASSET_LIBRARY_CUSTOM, ASSET_LIBRARY_ESSENTIALS, AssetWeakReference::asset_library_identifier, ASSET_LIBRARY_LOCAL, AssetWeakReference::asset_library_type, bUserAssetLibrary::dirpath, blender::asset_system::essentials_directory_path(), find_custom_preferences_asset_library_from_asset_weak_ref(), find_loaded_on_disk_asset_library_from_name(), and blender::asset_system::utils::normalize_path().
Referenced by resolve_asset_weak_reference_to_full_path().
Return the start position of the last blend-file extension in given path, or #std::string::npos if not found. Works with both kind of path separators.
Definition at line 293 of file asset_library_service.cc.
References ALTSEP_STR, blender::StringRefBase::not_found, blender::StringRefBase::rfind(), and SEP_STR.
Referenced by normalize_asset_weak_reference_relative_asset_identifier(), and resolve_asset_weak_reference_to_exploded_path().
|
static |
Definition at line 440 of file asset_library_service.cc.
References ASSET_LIBRARY_ALL, ASSET_LIBRARY_ESSENTIALS, ASSET_LIBRARY_LOCAL, bUserAssetLibrary::dirpath, ELEM, blender::asset_system::essentials_directory_path(), find_custom_asset_library_from_library_ref(), and AssetLibraryReference::type.
Referenced by AS_asset_library_root_path_from_library_ref().
| void blender::asset_system::AssetLibraryService::tag_all_library_catalogs_dirty | ( | ) |
Tag the "All" asset library as needing to reload catalogs. This should be called when catalog data of other asset libraries changes. Note that changes to the catalog definition file on disk don't ever affect this "dirty" flag. It only reflects changes from this Blender session.
Definition at line 190 of file asset_library_service.cc.
Referenced by blender::asset_system::AssetCatalogService::create_catalog(), blender::asset_system::AssetCatalogService::prune_catalogs_by_path(), blender::asset_system::AssetCatalogService::redo(), blender::asset_system::AssetCatalogService::undo(), and blender::asset_system::AssetCatalogService::update_catalog_path().