AAoETerrainActor* Descriptor = World->SpawnActor(); Descriptor->SetActorLabel(TEXT("Frontier - baked gameplay terrain")); Descriptor->SetIsSpatiallyLoaded(false); Descriptor->bEnableAutoLODGeneration = false; Descriptor->bUseBakedLandscape = true; Descriptor->Seed = Seed; Descriptor->Resolution = N; Descriptor->ExtentCm = Extent; Descriptor->HeightScaleCm = 26000; Descriptor->BakedHeights.SetNumUninitialized(N*N); Descriptor->BakedBiomes.SetNumUninitialized(N*N); for (int32 Y = 0; Y < N; ++Y) for (int32 X = 0; X < N; ++X) { Descriptor->BakedHeights[Y*N+X] = uint16(FMath::Clamp(FMath::RoundToInt(Field.HeightAtWorld(-Extent+X*Step, -Extent+Y*Step)), 0, 65535)); } TArray Sorted = Descriptor->BakedHeights; Sorted.Sort(); Descriptor->LastWaterZ = Sorted[FMath::FloorToInt(Sorted.Num()*0.18)]; Descriptor->LastMinZ = Sorted[0]; Descriptor->LastMaxZ = Sorted.Last(); Descriptor->LastVertexCount = N*N; TArray Layers; TArray BiomeCounts; BiomeCounts.Init(0, 8); const FString AssetRoot = FPackageName::GetLongPackagePath(MapPackage) / FPackageName::GetShortName(MapPackage) + TEXT("_Assets");