Brush Assets: Store assets outside Main #117730
|
@ -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)
|
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;
|
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
|
/* TODO: just loop over listbase of same type, or make this whole thing
|
||||||
* more efficient. */
|
* more efficient. */
|
||||||
ID *other_id;
|
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)
|
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) {
|
if (weak_ref_main.filepath == filepath) {
|
||||||
return weak_ref_main.main;
|
return weak_ref_main.main;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ASSET_WEAK_REFERENCE_MAINS.append(filepath);
|
get_weak_reference_mains().append(filepath);
|
||||||
return ASSET_WEAK_REFERENCE_MAINS.last().main;
|
return get_weak_reference_mains().last().main;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BKE_asset_weak_reference_main_free()
|
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)
|
ID *BKE_asset_weak_reference_ensure(Main *global_main, const AssetWeakReference *weak_ref)
|
||||||
|
|
Loading…
Reference in New Issue