// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "FileHelpers.h" #include "Containers/Map.h" class ALandscapeProxy; class ALandscapeStreamingProxy; class ULandscapeLayerInfoObject; class FMenuBuilder; struct FEditLayerMenuBlock; using FEditLayerCategoryToEntryMap = TMap; namespace LandscapeEditorUtils { bool LANDSCAPEEDITOR_API SetHeightmapData(ALandscapeProxy* Landscape, const TArray& Data); bool LANDSCAPEEDITOR_API SetWeightmapData(ALandscapeProxy* Landscape, ULandscapeLayerInfoObject* LayerObject, const TArray& Data); int32 GetMaxSizeInComponents(); TOptional GetImportExportFilename(const FString& InDialogTitle, const FString& InStartPath, const FString& InDialogTypeString, bool bInImporting); template void SaveObjects(TArrayView InObjects) { TArray Packages; Algo::Transform(InObjects, Packages, [](UObject* InObject) { return InObject->GetPackage(); }); UEditorLoadingAndSavingUtils::SavePackages(Packages, /* bOnlyDirty = */ false); } void SaveLandscapeProxies(UWorld* InWorld, TArrayView Proxies); TArray GetLandscapeTargetLayerInfoAssets(); TOptional FindLandscapeTargetLayerInfoAsset(const FName& LayerName, const FString& TargetLayerAssetPackagePath); // Edit layer context menu customization void BuildContextMenuFromCategoryEntryMap(const FEditLayerCategoryToEntryMap& InMap, FMenuBuilder& OutMenuBuilder); }