diff --git a/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineAtlasAsset.cpp b/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineAtlasAsset.cpp index b83e98918..d80d1e11a 100644 --- a/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineAtlasAsset.cpp +++ b/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineAtlasAsset.cpp @@ -52,24 +52,21 @@ void USpineAtlasAsset::PostInitProperties() { Super::PostInitProperties(); } -void USpineAtlasAsset::GetAssetRegistryTags(TArray &OutTags) const { - Super::GetAssetRegistryTags(OutTags); -} - void USpineAtlasAsset::Serialize(FArchive &Ar) { Super::Serialize(Ar); if (Ar.IsLoading() && Ar.UE4Ver() < VER_UE4_ASSET_IMPORT_DATA_AS_JSON && !importData) importData = NewObject(this, TEXT("AssetImportData")); } -FPrimaryAssetId USpineAtlasAsset::GetPrimaryAssetId() const { - return FPrimaryAssetId("spine-atlas", GetFName()); -} - void USpineAtlasAsset::PostLoadAssetRegistryTags(const FAssetData& InAssetData, - TArray& OutTagsAndValuesToUpdate) const -{ - UObject::PostLoadAssetRegistryTags(InAssetData, OutTagsAndValuesToUpdate); + TArray& OutTagsAndValuesToUpdate) const { + // FIXME: this is a massive hack. It will set the PackageFlags of the FAssetData + // in the AssetRegistry to PKG_FilterEditorOnly so the content browser displays it. + // This is necessary in UE 5.3 due to a regression in ContentBrowserAssetDataCore::IsPrimaryAsset + // See https://github.com/EsotericSoftware/spine-runtimes/issues/2368 + FAssetData& MutableAssetData = const_cast(InAssetData); + // MutableAssetData.PackageFlags = EPackageFlags::PKG_FilterEditorOnly; + UObject::PostLoadAssetRegistryTags(MutableAssetData, OutTagsAndValuesToUpdate); } #endif diff --git a/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineSkeletonDataAsset.cpp b/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineSkeletonDataAsset.cpp index 808cac805..d95094bb9 100644 --- a/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineSkeletonDataAsset.cpp +++ b/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineSkeletonDataAsset.cpp @@ -80,6 +80,18 @@ void USpineSkeletonDataAsset::Serialize(FArchive &Ar) { LoadInfo(); } + +void USpineSkeletonDataAsset::PostLoadAssetRegistryTags(const FAssetData& InAssetData, + // FIXME: this is a massive hack. It will set the PackageFlags of the FAssetData + // in the AssetRegistry to PKG_FilterEditorOnly so the content browser displays it. + // This is necessary in UE 5.3 due to a regression in ContentBrowserAssetDataCore::IsPrimaryAsset + // See https://github.com/EsotericSoftware/spine-runtimes/issues/2368 + TArray& OutTagsAndValuesToUpdate) const { + FAssetData& MutableAssetData = const_cast(InAssetData); + // MutableAssetData.PackageFlags = EPackageFlags::PKG_FilterEditorOnly; + UObject::PostLoadAssetRegistryTags(MutableAssetData, OutTagsAndValuesToUpdate); +} + #endif void USpineSkeletonDataAsset::ClearNativeData() { diff --git a/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Public/SpineAtlasAsset.h b/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Public/SpineAtlasAsset.h index 3a7aa24a5..b6a22a808 100644 --- a/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Public/SpineAtlasAsset.h +++ b/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Public/SpineAtlasAsset.h @@ -36,7 +36,7 @@ // clang-format on UCLASS(BlueprintType, ClassGroup = (Spine)) -class SPINEPLUGIN_API USpineAtlasAsset : public UObject { +class SPINEPLUGIN_API USpineAtlasAsset : public UPrimaryDataAsset { GENERATED_BODY() public: @@ -70,9 +70,7 @@ protected: class UAssetImportData *importData; virtual void PostInitProperties() override; - virtual void GetAssetRegistryTags(TArray &OutTags) const override; virtual void Serialize(FArchive &Ar) override; - virtual FPrimaryAssetId GetPrimaryAssetId() const override; virtual void PostLoadAssetRegistryTags(const FAssetData& InAssetData, TArray& OutTagsAndValuesToUpdate) const override; #endif }; diff --git a/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Public/SpineSkeletonDataAsset.h b/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Public/SpineSkeletonDataAsset.h index dd23d8c9e..407c521e9 100644 --- a/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Public/SpineSkeletonDataAsset.h +++ b/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Public/SpineSkeletonDataAsset.h @@ -116,6 +116,7 @@ protected: virtual void PostInitProperties() override; virtual void GetAssetRegistryTags(TArray &OutTags) const override; virtual void Serialize(FArchive &Ar) override; + virtual void PostLoadAssetRegistryTags(const FAssetData& InAssetData, TArray& OutTagsAndValuesToUpdate) const override; #endif void LoadInfo();