I already have a C++ function that imports a hieghtmap file and creates a landscape. I am trying to figure out how to import it as a WorldPartition Streaming landscape instead.
Current Function:
void UEditorLandscapeLibrary::ImportHeightmap(FString FilePath, FString LandscapeName,
FString FileName, int LandscapeSize)
{
FilePath += + "\\" + FileName;
ALandscape* Landscape = GEditor->GetEditorWorldContext().World()->SpawnActor<ALandscape>();
int ComponentSizeQuads = 63;
int SubsectionSizeQuads = 63;
int NumSubsections = 2;
//int WorldPartitionGridSize = 2;
Landscape->ComponentSizeQuads = ComponentSizeQuads;
Landscape->SubsectionSizeQuads = SubsectionSizeQuads;
Landscape->NumSubsections = NumSubsections;
// Landscape->GridSize = WorldPartitionGridSize;
Landscape->SetLandscapeGuid(FGuid::NewGuid());
const auto ActualPath = FilePath.IsEmpty() ? Landscape->ReimportHeightmapFilePath : FilePath;
if (ActualPath.IsEmpty())
return;
//Read png file to height array
TArray<uint16> RawData;
ReadHeightmapFile(RawData, *ActualPath, LandscapeSize, LandscapeSize);
// Setup heightmap for landscape
TMap<FGuid, TArray<uint16>> HeightmapDataPerLayers;
TMap<FGuid, TArray<FLandscapeImportLayerInfo>> MaterialLayerDataPerLayer;
// Generate LandscapeActor from heightmap
HeightmapDataPerLayers.Add(FGuid(), RawData);
MaterialLayerDataPerLayer.Add(FGuid(), TArray<FLandscapeImportLayerInfo>());
Landscape->Import(Landscape->GetLandscapeGuid(), 0, 0, LandscapeSize - 1,
LandscapeSize - 1, Landscape->NumSubsections, Landscape->SubsectionSizeQuads,
HeightmapDataPerLayers,
TEXT("NONE"), MaterialLayerDataPerLayer, ELandscapeImportAlphamapType::Layered
);
Landscape->SetActorLocation(FVector(0, 0, 100));
Landscape->SetActorScale3D(FVector(100, 100, 100));
Landscape->CreateLandscapeInfo();
Landscape->SetActorLabel(LandscapeName);
}