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:
parent
b361b2f214
commit
5be54cce36
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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. */
|
||||
|
|
Loading…
Reference in New Issue