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`.
This commit is contained in:
Julian Eisel 2021-07-29 17:10:11 +02:00
parent b361b2f214
commit 5be54cce36
3 changed files with 11 additions and 4 deletions

View File

@ -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);

View File

@ -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;
}
}

View File

@ -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. */