Brush Assets: Store assets outside Main #117730

Manually merged
Brecht Van Lommel merged 18 commits from brecht/blender:brush-separate-main into brush-assets-project 2024-02-27 14:53:03 +01:00
1 changed files with 10 additions and 6 deletions
Showing only changes of commit ef391974ff - Show all commits

View File

@ -156,7 +156,11 @@ struct AssetWeakReferenceMain {
}
};
blender::Vector<AssetWeakReferenceMain> ASSET_WEAK_REFERENCE_MAINS;
static Vector<AssetWeakReferenceMain> &get_weak_reference_mains()
{
static Vector<AssetWeakReferenceMain> mains;
return mains;
}
Main *BKE_asset_weak_reference_main(Main *global_main, const ID *id)
{
@ -164,7 +168,7 @@ Main *BKE_asset_weak_reference_main(Main *global_main, const ID *id)
return global_main;
}
for (const AssetWeakReferenceMain &weak_ref_main : ASSET_WEAK_REFERENCE_MAINS) {
for (const AssetWeakReferenceMain &weak_ref_main : get_weak_reference_mains()) {
/* TODO: just loop over listbase of same type, or make this whole thing
* more efficient. */
ID *other_id;
@ -182,19 +186,19 @@ Main *BKE_asset_weak_reference_main(Main *global_main, const ID *id)
static Main *asset_weak_reference_main_ensure(const char *filepath)
{
for (const AssetWeakReferenceMain &weak_ref_main : ASSET_WEAK_REFERENCE_MAINS) {
for (const AssetWeakReferenceMain &weak_ref_main : get_weak_reference_mains()) {
if (weak_ref_main.filepath == filepath) {
return weak_ref_main.main;
}
}
ASSET_WEAK_REFERENCE_MAINS.append(filepath);
return ASSET_WEAK_REFERENCE_MAINS.last().main;
get_weak_reference_mains().append(filepath);
return get_weak_reference_mains().last().main;
}
void BKE_asset_weak_reference_main_free()
{
ASSET_WEAK_REFERENCE_MAINS.clear_and_shrink();
get_weak_reference_mains().clear_and_shrink();
}
ID *BKE_asset_weak_reference_ensure(Main *global_main, const AssetWeakReference *weak_ref)