[Bf-blender-cvs] [5be54cce369] master: Cleanup: Pass asset handle to asset iterator, rather than wrapped file
Julian Eisel
noreply at git.blender.org
Thu Jul 29 17:35:12 CEST 2021
Commit: 5be54cce3692ae590433b786d8007767e3727469
Author: Julian Eisel
Date: Thu Jul 29 17:10:11 2021 +0200
Branches: master
https://developer.blender.org/rB5be54cce3692ae590433b786d8007767e3727469
Cleanup: Pass asset handle to asset iterator, rather than wrapped file
This iterator was introduced before `AssetHandle` existed, so it was
dealing with the file data directly. Now we want as little code as
possible to deal with the file data, all access should happen via the
`AssetHandle`.
===================================================================
M source/blender/editors/asset/ED_asset_list.hh
M source/blender/editors/asset/intern/asset_list.cc
M source/blender/editors/interface/interface_template_asset_view.cc
===================================================================
diff --git a/source/blender/editors/asset/ED_asset_list.hh b/source/blender/editors/asset/ED_asset_list.hh
index 7f41fba3457..fee34d929c2 100644
--- a/source/blender/editors/asset/ED_asset_list.hh
+++ b/source/blender/editors/asset/ED_asset_list.hh
@@ -34,5 +34,5 @@ std::string ED_assetlist_asset_filepath_get(const bContext *C,
const AssetHandle &asset_handle);
/* Can return false to stop iterating. */
-using AssetListIterFn = blender::FunctionRef<bool(FileDirEntry &)>;
+using AssetListIterFn = blender::FunctionRef<bool(AssetHandle)>;
void ED_assetlist_iterate(const AssetLibraryReference *library_reference, AssetListIterFn fn);
diff --git a/source/blender/editors/asset/intern/asset_list.cc b/source/blender/editors/asset/intern/asset_list.cc
index 445269d563e..d94a2bbf438 100644
--- a/source/blender/editors/asset/intern/asset_list.cc
+++ b/source/blender/editors/asset/intern/asset_list.cc
@@ -215,7 +215,13 @@ void AssetList::iterate(AssetListIterFn fn) const
for (int i = 0; i < numfiles; i++) {
FileDirEntry *file = filelist_file(files, i);
- if (!fn(*file)) {
+ if ((file->typeflag & FILE_TYPE_ASSET) == 0) {
+ continue;
+ }
+
+ AssetHandle asset_handle = {file};
+ if (!fn(asset_handle)) {
+ /* If the callback returns false, we stop iterating. */
break;
}
}
diff --git a/source/blender/editors/interface/interface_template_asset_view.cc b/source/blender/editors/interface/interface_template_asset_view.cc
index a691fff4963..fe2c660f2d0 100644
--- a/source/blender/editors/interface/interface_template_asset_view.cc
+++ b/source/blender/editors/interface/interface_template_asset_view.cc
@@ -170,11 +170,12 @@ static void asset_view_template_refresh_asset_collection(
RNA_property_collection_clear(&assets_dataptr, assets_prop);
- ED_assetlist_iterate(&asset_library, [&](FileDirEntry &file) {
+ ED_assetlist_iterate(&asset_library, [&](AssetHandle asset) {
PointerRNA itemptr, fileptr;
RNA_property_collection_add(&assets_dataptr, assets_prop, &itemptr);
- RNA_pointer_create(nullptr, &RNA_FileSelectEntry, &file, &fileptr);
+ RNA_pointer_create(
+ nullptr, &RNA_FileSelectEntry, const_cast<FileDirEntry *>(asset.file_data), &fileptr);
RNA_pointer_set(&itemptr, "file_data", fileptr);
/* Copy name from file to asset-handle name ID-property. */
More information about the Bf-blender-cvs
mailing list