Why can't I see my spline for a ground terrain?

Hi, I have a class that calls this function on game start and tries to make a spline for ground terrain in my game. However, nothing is appearing. There is an Actor spawning called “Terrain” which is expected however I cannot see anything in game. Any ideas what is wrong with my function?

void AOSMProcessor::SpawnTerrain()
{
    // Define the corner points based on Min and Max
    FVector BottomLeft(MinX, MinY, 0);
    FVector BottomRight(MaxX, MinY, 0);
    FVector TopRight(MaxX, MaxY, 0);
    FVector TopLeft(MinX, MaxY, 0);

    // Debug log for corner points
    UE_LOG(LogTemp, Warning, TEXT("BottomLeft: %s"), *BottomLeft.ToString());
    UE_LOG(LogTemp, Warning, TEXT("BottomRight: %s"), *BottomRight.ToString());
    UE_LOG(LogTemp, Warning, TEXT("TopRight: %s"), *TopRight.ToString());
    UE_LOG(LogTemp, Warning, TEXT("TopLeft: %s"), *TopLeft.ToString());

    // Create a new actor for the terrain
    AActor* TerrainActor = GetWorld()->SpawnActor<AActor>(AActor::StaticClass(), FVector::ZeroVector, FRotator::ZeroRotator);
    TerrainActor->SetActorHiddenInGame(false);  // Ensure it's visible
    TerrainActor->AttachToActor(this, FAttachmentTransformRules::KeepRelativeTransform);
    TerrainActor->SetActorLabel("Terrain");

    // Create a spline component and attach it to the actor
    USplineComponent* TerrainSpline = NewObject<USplineComponent>(TerrainActor);
    TerrainSpline->SetupAttachment(TerrainActor->GetRootComponent());
    TerrainSpline->RegisterComponent();
    TerrainSpline->SetMobility(EComponentMobility::Movable); 

    // Add points to the spline
    TerrainSpline->AddSplinePoint(BottomLeft, ESplineCoordinateSpace::World);
    TerrainSpline->AddSplinePoint(BottomRight, ESplineCoordinateSpace::World);
    TerrainSpline->AddSplinePoint(TopRight, ESplineCoordinateSpace::World);
    TerrainSpline->AddSplinePoint(TopLeft, ESplineCoordinateSpace::World);
    TerrainSpline->AddSplinePoint(BottomLeft, ESplineCoordinateSpace::World);

    TerrainSpline->SetClosedLoop(true);
    TerrainSpline->UpdateSpline();

    // Create spline mesh components along the spline
    for (int32 i = 0; i < TerrainSpline->GetNumberOfSplinePoints() - 1; ++i)
    {
        USplineMeshComponent* SplineMesh = NewObject<USplineMeshComponent>(TerrainActor);
        SplineMesh->SetupAttachment(TerrainSpline);
        SplineMesh->SetMobility(EComponentMobility::Movable);
        SplineMesh->RegisterComponent();

        FVector StartPos = TerrainSpline->GetLocationAtSplinePoint(i, ESplineCoordinateSpace::World);
        FVector EndPos = TerrainSpline->GetLocationAtSplinePoint(i + 1, ESplineCoordinateSpace::World);

        // Set positions for the spline mesh
        SplineMesh->SetStartAndEnd(StartPos, FVector::ZeroVector, EndPos, FVector::ZeroVector);

        // Create and set a green material for the floor
        UMaterialInstanceDynamic* DynamicMaterial = UMaterialInstanceDynamic::Create(DebugMaterial, this);
        DynamicMaterial->SetVectorParameterValue(TEXT("Color"), FLinearColor::Green);
        SplineMesh->SetMaterial(0, DynamicMaterial);
    }
}

Variables MinX, MaxX, MinY and MaxY are defined elsewhere with sensible values.