Files
Brandyn / Techy fcc1b09210 init
2026-04-04 15:40:51 -05:00

54 lines
2.4 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "PCGAssetExporter.h"
#include "Engine/World.h"
#include "PCGLevelToAsset.generated.h"
#define UE_API PCGEDITOR_API
class UPackage;
UCLASS(MinimalAPI, BlueprintType, Blueprintable, meta = (ShowWorldContextPin))
class UPCGLevelToAsset : public UPCGAssetExporter
{
GENERATED_BODY()
public:
/** Creates/updates a PCG Asset per given world. Allows exporter subclassing by passing in a Subclass. */
static UE_API void CreateOrUpdatePCGAssets(const TArray<FAssetData>& WorldAssets, const FPCGAssetExporterParameters& Parameters = FPCGAssetExporterParameters(), TSubclassOf<UPCGLevelToAsset> Subclass = {});
/** Creates/Updates a PCG Asset for a specific world. Allows exporter subclassing by passing in a Subclass. Will return null if it fails, or the package that was modified on success. */
static UE_API UPackage* CreateOrUpdatePCGAsset(TSoftObjectPtr<UWorld> World, const FPCGAssetExporterParameters& Parameters = FPCGAssetExporterParameters(), TSubclassOf<UPCGLevelToAsset> Subclass = {});
/** Creates/Updates a PCG Asset for a specific world. Allows exporter subclassing (and settings creation by extension). Will return null if it fails, or the package that was modified on success. */
static UE_API UPackage* CreateOrUpdatePCGAsset(UWorld* World, const FPCGAssetExporterParameters& Parameters = FPCGAssetExporterParameters(), TSubclassOf<UPCGLevelToAsset> Subclass = {});
/** Parses the world and fills in the provided data asset. Implement this in BP to drive the generation in a custom manner. */
UFUNCTION(BlueprintNativeEvent, meta = (DisplayName = "Export World", ForceAsFunction))
UE_API bool BP_ExportWorld(UWorld* World, const FString& PackageName, UPCGDataAsset* Asset);
UFUNCTION(BlueprintCallable, Category="PCG|IO")
UE_API void SetWorld(UWorld* World);
/** Set the world to export from a UObject. The WorldObject must be a World. Return false if the object is not a world or null. */
UFUNCTION(BlueprintCallable, Category = "PCG|IO")
UE_API bool SetWorldObject(UObject* WorldObject);
UFUNCTION(BlueprintCallable, Category = "PCG|IO")
UE_API UWorld* GetWorld() const;
protected:
//~Being UPCGAssetExporter interface
UE_API virtual bool ExportAsset(const FString& PackageName, UPCGDataAsset* Asset) override;
UE_API virtual UPackage* UpdateAsset(const FAssetData& PCGAsset) override;
//~End UPCGAssetExporter interface
UWorld* WorldToExport = nullptr;
};
#undef UE_API