Skip to content

Latest commit

 

History

History
104 lines (82 loc) · 2.27 KB

File metadata and controls

104 lines (82 loc) · 2.27 KB

C++ API

Module Dependency

Add the runtime module to your game module:

PublicDependencyModuleNames.AddRange(
	new[]
	{
		"ContentMountRuntime"
	});

Only editor modules should depend on ContentMountEditor.

Public Runtime Types

  • UContentMountBlueprintLibrary
  • FContentPackageMountManager
  • FContentPackageInspector
  • UContentPackageDownloadTask
  • FContentMountOptions
  • FMountedContentPackageInfo
  • EContentMountResult

Mount Editor-Created Package

#include "ContentMountBlueprintLibrary.h"
#include "ContentMountTypes.h"

void MountGeneratedPackage(const FString& PakPath, const FString& ManifestPath)
{
	FContentMountOptions Options;
	FString Error;

	EContentMountResult Result = UContentMountBlueprintLibrary::LoadMountOptionsFromPackageManifest(
		ManifestPath,
		Options,
		Error);

	if (Result != EContentMountResult::Success)
	{
		UE_LOG(LogTemp, Warning, TEXT("Manifest read failed: %s"), *Error);
		return;
	}

	FMountedContentPackageInfo MountedInfo;
	Result = UContentMountBlueprintLibrary::MountContentPackage(PakPath, Options, MountedInfo, Error);
	if (Result != EContentMountResult::Success && Result != EContentMountResult::AlreadyMounted)
	{
		UE_LOG(LogTemp, Warning, TEXT("Mount failed: %s"), *Error);
		return;
	}
}

Spawn Actor From Mounted Blueprint Class

#include "ContentMountBlueprintLibrary.h"
#include "ContentMountTypes.h"
#include "Engine/World.h"

void SpawnMountedActor(UWorld* World)
{
	if (!World)
	{
		return;
	}

	FString Error;
	TSubclassOf<UObject> LoadedClass;
	const EContentMountResult Result = UContentMountBlueprintLibrary::LoadClassFromMountedContent(
		FSoftClassPath(TEXT("/SpacePack/Blueprints/BP_DLCActor.BP_DLCActor_C")),
		LoadedClass,
		Error);

	if (Result != EContentMountResult::Success || !LoadedClass.Get() || !LoadedClass->IsChildOf(AActor::StaticClass()))
	{
		UE_LOG(LogTemp, Warning, TEXT("Class load failed: %s"), *Error);
		return;
	}

	World->SpawnActor<AActor>(LoadedClass.Get(), FVector::ZeroVector, FRotator::ZeroRotator);
}

Error Handling

Treat every non-success result as actionable.

Useful result values:

  • UnsupportedInEditor
  • FileNotFound
  • PakPlatformUnavailable
  • MountFailed
  • MountPointFailed
  • AssetRegistryFailed
  • LoadFailed
  • HashMismatch
  • Canceled