main sync #3

Merged
Patrick Busch merged 318 commits from blender/blender:main into main 2023-03-17 15:52:21 +01:00
5 changed files with 31 additions and 3 deletions
Showing only changes of commit 55811b2919 - Show all commits

View File

@ -25,6 +25,7 @@ class AssetIdentifier {
AssetIdentifier(const AssetIdentifier &) = default; AssetIdentifier(const AssetIdentifier &) = default;
std::string full_path() const; std::string full_path() const;
std::string full_library_path() const;
}; };
} // namespace blender::asset_system } // namespace blender::asset_system

View File

@ -92,7 +92,11 @@ class AssetRepresentation {
/* C-Handle */ /* C-Handle */
struct AssetRepresentation; struct AssetRepresentation;
const std::string AS_asset_representation_full_path_get(const ::AssetRepresentation *asset); std::string AS_asset_representation_full_path_get(const ::AssetRepresentation *asset);
/** Get the absolute path to the .blend file containing the given asset. String will be empty if
* the asset could not be mapped to a valid .blend file path. Valid in this case also means that
* the file needs to exist on disk. */
std::string AS_asset_representation_full_library_path_get(const ::AssetRepresentation *asset);
std::optional<eAssetImportMethod> AS_asset_representation_import_method_get( std::optional<eAssetImportMethod> AS_asset_representation_import_method_get(
const ::AssetRepresentation *asset_handle); const ::AssetRepresentation *asset_handle);
bool AS_asset_representation_may_override_import_method(const ::AssetRepresentation *asset_handle); bool AS_asset_representation_may_override_import_method(const ::AssetRepresentation *asset_handle);

View File

@ -5,6 +5,7 @@ set(INC
intern intern
../blenkernel ../blenkernel
../blenlib ../blenlib
../blenloader
../makesdna ../makesdna
../../../intern/clog ../../../intern/clog
../../../intern/guardedalloc ../../../intern/guardedalloc

View File

@ -4,8 +4,11 @@
* \ingroup asset_system * \ingroup asset_system
*/ */
#include <string>
#include "BLO_readfile.h"
#include "BLI_path_util.h" #include "BLI_path_util.h"
#include <iostream>
#include "AS_asset_identifier.hh" #include "AS_asset_identifier.hh"
@ -24,4 +27,16 @@ std::string AssetIdentifier::full_path() const
return path; return path;
} }
std::string AssetIdentifier::full_library_path() const
{
std::string asset_path = full_path();
char blend_path[1090 /*FILE_MAX_LIBEXTRA*/];
if (!BLO_library_path_explode(asset_path.c_str(), blend_path, nullptr, nullptr)) {
return {};
}
return blend_path;
}
} // namespace blender::asset_system } // namespace blender::asset_system

View File

@ -111,7 +111,7 @@ const AssetLibrary &AssetRepresentation::owner_asset_library() const
using namespace blender; using namespace blender;
const std::string AS_asset_representation_full_path_get(const AssetRepresentation *asset_handle) std::string AS_asset_representation_full_path_get(const AssetRepresentation *asset_handle)
{ {
const asset_system::AssetRepresentation *asset = const asset_system::AssetRepresentation *asset =
reinterpret_cast<const asset_system::AssetRepresentation *>(asset_handle); reinterpret_cast<const asset_system::AssetRepresentation *>(asset_handle);
@ -119,6 +119,13 @@ const std::string AS_asset_representation_full_path_get(const AssetRepresentatio
return identifier.full_path(); return identifier.full_path();
} }
std::string AS_asset_representation_full_library_path_get(const AssetRepresentation *asset_handle)
{
const asset_system::AssetRepresentation *asset =
reinterpret_cast<const asset_system::AssetRepresentation *>(asset_handle);
return asset->get_identifier().full_library_path();
}
std::optional<eAssetImportMethod> AS_asset_representation_import_method_get( std::optional<eAssetImportMethod> AS_asset_representation_import_method_get(
const AssetRepresentation *asset_handle) const AssetRepresentation *asset_handle)
{ {