| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 | 
							- /*******************************************************************************
 
- The content of this file includes portions of the proprietary AUDIOKINETIC Wwise
 
- Technology released in source code form as part of the game integration package.
 
- The content of this file may not be used without valid licenses to the
 
- AUDIOKINETIC Wwise Technology.
 
- Note that the use of the game engine is subject to the Unreal(R) Engine End User
 
- License Agreement at https://www.unrealengine.com/en-US/eula/unreal
 
-  
 
- License Usage
 
-  
 
- Licensees holding valid licenses to the AUDIOKINETIC Wwise Technology may use
 
- this file in accordance with the end user license agreement provided with the
 
- software or, alternatively, in accordance with the terms contained
 
- in a written agreement between you and Audiokinetic Inc.
 
- Copyright (c) 2023 Audiokinetic Inc.
 
- *******************************************************************************/
 
- #include "ProjectedResultColumn.h"
 
- #include "AkAudioStyle.h"
 
- #include "WaapiPicker/WwiseTreeItem.h"
 
- #include "Widgets/SWidget.h"
 
- #include "AkUnrealAssetDataHelper.h"
 
- #include "WwiseUnrealHelper.h"
 
- #include "ObjectTools.h"
 
- #include "AssetRegistry/AssetRegistryModule.h"
 
- #include "Widgets/Images/SImage.h"
 
- #include "Widgets/Text/STextBlock.h"
 
- #include "AssetViewUtils.h"
 
- #include "Misc/EngineBuildSettings.h"
 
- #define LOCTEXT_NAMESPACE "AkAudio"
 
- const FLinearColor WarningColor = FLinearColor(1.f, 0.33f, 0);
 
- FName FProjectedResultColumn::GetColumnId()
 
- {
 
- 	return FName("ReconcileProjectedResults");
 
- }
 
- const TSharedRef<SWidget> FProjectedResultColumn::ConstructRowWidget(FWwiseReconcileItem TreeItem,
 
- 	const STableRow<TSharedPtr<FWwiseReconcileItem>>& Row)
 
- {
 
- 	if (EnumHasAllFlags(TreeItem.OperationRequired, EWwiseReconcileOperationFlags::Delete))
 
- 	{
 
- 		bool bReferenced = false;
 
- 		bool bReferencedByUndo = false;
 
- 		ObjectTools::GatherObjectReferencersForDeletion(TreeItem.Asset.GetAsset(), bReferenced, bReferencedByUndo);
 
- 		if(bReferenced || bReferencedByUndo)
 
- 		{
 
- 			return SNew(SHorizontalBox)
 
- 			+ SHorizontalBox::Slot()
 
- 			.AutoWidth()
 
- 			.VAlign(VAlign_Center)
 
- 			[
 
- 				SNew(STextBlock)
 
- 				.Text(FText::Format(LOCTEXT("ReconcileReferenced", "Asset {0} is referenced somewhere. Please delete this asset manually."), FText::FromString(TreeItem.Asset.AssetName.ToString())))
 
- 				.ColorAndOpacity(WarningColor)
 
- 			];
 
- 		}
 
- 		return SNew(SHorizontalBox)
 
- 			+ SHorizontalBox::Slot()
 
- 			.AutoWidth()
 
- 			.VAlign(VAlign_Center)
 
- 			[
 
- 				SNew(STextBlock)
 
- 				.Text(LOCTEXT("ReconcileDelete", "This Asset will be Deleted"))
 
- 			];
 
- 	}
 
- 	auto WwiseRef = TreeItem.WwiseAnyRef.WwiseAnyRef;
 
- 	FName AssetName = AkUnrealAssetDataHelper::GetAssetDefaultName(WwiseRef);
 
- 	FString AssetPackagePath = AkUnrealAssetDataHelper::GetAssetDefaultPackagePath(WwiseRef);
 
- 	int PackageLength = AssetViewUtils::GetPackageLengthForCooking(AssetPackagePath / AssetName.ToString(), FEngineBuildSettings::IsInternalBuild());
 
- 	int MaxPath = AssetViewUtils::GetMaxCookPathLen();
 
- 	if (PackageLength > MaxPath || PackageLength >= NAME_SIZE)
 
- 	{
 
- 		return SNew(SHorizontalBox)
 
- 			+ SHorizontalBox::Slot()
 
- 			.AutoWidth().
 
- 			VAlign(VAlign_Center)
 
- 			[
 
- 				SNew(STextBlock)
 
- 				.Text(LOCTEXT("ReconcileTooLong", "Asset path exceeds platform limit"))
 
- 				.ColorAndOpacity(WarningColor)
 
- 			];
 
- 	}
 
- 	if(EnumHasAnyFlags(TreeItem.OperationRequired, EWwiseReconcileOperationFlags::Create | EWwiseReconcileOperationFlags::RenameExisting))
 
- 	{
 
- 		FAssetRegistryModule& AssetRegistryModule = FModuleManager::LoadModuleChecked<FAssetRegistryModule>(TEXT("AssetRegistry"));
 
- #if UE_5_1_OR_LATER
 
- 		FAssetData Asset = AssetRegistryModule.GetRegistry().GetAssetByObjectPath(AssetPackagePath / AkUnrealAssetDataHelper::GetAssetDefaultName(WwiseRef).ToString() + "." + AkUnrealAssetDataHelper::GetAssetDefaultName(WwiseRef).ToString());
 
- #else
 
- 		FName AssetPath = FName(AssetPackagePath / AkUnrealAssetDataHelper::GetAssetDefaultName(WwiseRef).ToString() + "." + AkUnrealAssetDataHelper::GetAssetDefaultName(WwiseRef).ToString());
 
- 		FAssetData Asset = AssetRegistryModule.GetRegistry().GetAssetByObjectPath(AssetPath);
 
- #endif
 
- 		if(Asset.IsValid())
 
- 		{
 
- 			FString DisplayedAssetPath = AssetPackagePath / AkUnrealAssetDataHelper::GetAssetDefaultName(WwiseRef).ToString();
 
- 			return SNew(SHorizontalBox)
 
- 				+ SHorizontalBox::Slot()
 
- 				.AutoWidth().
 
- 				VAlign(VAlign_Center)
 
- 				[
 
- 					SNew(STextBlock)
 
- 					.Text(FText::Format(LOCTEXT("ReconcileExist", "Asset already exists at path {0}"), FText::FromString(DisplayedAssetPath)))
 
- 					.ColorAndOpacity(FLinearColor(WarningColor))
 
- 				];
 
- 		}
 
- 	}
 
- 	
 
- 	return SNew(SHorizontalBox)
 
- 		+ SHorizontalBox::Slot()
 
- 		.AutoWidth()
 
- 		.Padding(0, 1, 2, 1)
 
- 		.VAlign(VAlign_Center)
 
- 		[
 
- 			SNew(SImage)
 
- 			.Image(FAkAudioStyle::GetBrush(TreeItem.WwiseAnyRef.WwiseAnyRef->GetType()))
 
- 		]
 
- 		+ SHorizontalBox::Slot()
 
- 		.AutoWidth().
 
- 		VAlign(VAlign_Center)
 
- 		[
 
- 			SNew(STextBlock)
 
- 			.Text(FText::FromString(AssetPackagePath / AssetName.ToString()))
 
- 		];
 
- }
 
- SHeaderRow::FColumn::FArguments FProjectedResultColumn::ConstructHeaderRowColumn()
 
- {
 
- 	SHeaderRow::FColumn::FArguments ProjectedResultColumnHeader = SHeaderRow::Column(GetColumnId());
 
- 	TAttribute<FText> StatusLabel;
 
- 	StatusLabel.Set(FText::FromString("Projected Result"));
 
- 	ProjectedResultColumnHeader.DefaultLabel(StatusLabel);
 
- 	ProjectedResultColumnHeader.DefaultTooltip(LOCTEXT("ProjectedResult_Tooltip", "The expected result of Reconciling an asset."));
 
- #if UE_5_0_OR_LATER
 
- 	ProjectedResultColumnHeader.FillSized(600.f);
 
- #else
 
- 	ProjectedResultColumnHeader.ManualWidth(600.f);
 
- #endif
 
- 	return ProjectedResultColumnHeader;
 
- }
 
- #undef LOCTEXT_NAMESPACE
 
 
  |