FLoadingScreenAttributes during SeamlessTravel

Hello, I have a problem with SeamlessTravel and TranstionMaps.

-Player flow is as follows:
MenuMap ->(FLoadingScreenAttributes) → LobbyMap → SeamlessTravel(FLoadingScreenAttributes or UUserWidget) + TransitionMap → MatchMap.

-When player moves from MenuMap to LobbyMap, I can use a slate widget (FLoadingScreenAttributes) to display a loading screen or a movie, and it works smooth and perfectly.

-But when player moves from LobbyMap to MatchMap using a SeamlessTravel+TransitionMap, the same loading screen with the same FLoadingScreenAttributes is never seen (I can see a BP_SkySphere on the TransitionMap).

The loading screen code in both transitions is this:

 //AMyPlayerController.h
UFUNCTION(Reliable, Client)
void ShowLoadingScreen();
UFUNCTION(Reliable, Client)
void EndLoadingScreen();

//AMyPlayerController.cpp
#include "MoviePlayer.h"
...
void AMyPlayerController::ShowLoadingScreen_Implementation()
{
     FLoadingScreenAttributes LoadingScreen;
     LoadingScreen.bAutoCompleteWhenLoadingCompletes = true;
     LoadingScreen.MinimumLoadingScreenDisplayTime = 0.1f;
     LoadingScreen.WidgetLoadingScreen = FLoadingScreenAttributes::NewTestLoadingScreenWidget();
     GetMoviePlayer()->SetupLoadingScreen(LoadingScreen);
}

void AMyPlayerController::EndLoadingScreen_Implementation()
{
    GetMoviePlayer()->StopMovie();
}

-Is not possible to use loading screens (FLoadingScreenAttributes) during SeamlessTravel and TransitionMaps?

-However, I am able to use as an alternative a UUserWidget and add to Viewport but the animation freezes for a few seconds during the SeamlessTravel+TransitionMap:

//AMyPlayerController.h
UPROPERTY(EditDefaultsOnly, Category = "Widget")
TSubclassOf<class UUserWidget> LoadingWidget;

UFUNCTION(Reliable, Client)
void ShowLoadingScreen();
UFUNCTION(Reliable, Client)
void EndLoadingScreen();

//AMyPlayerController.cpp
void AMyPlayerController::ShowLoadingScreen_Implementation()
{
      UUsertWidget* Widget = CreateWidget<UUserWidget>(this, LoadingWidget);
      if (Widget)
     {
            Widget->AddToViewport();
     }
}

void AMyPlayerController::EndLoadingScreen_Implementation()
{
    //GetAllWidgetsOfClass UUserWidget -> RemoveFromParent();
}

Any tips? Thx!

Anyone know any advice?
Thx!

Whenever absolute travel occurs, if there is a valid loading screen, it will play the movies and widgets you’ve specified in GetMoviePlayer()->SetupLoadingScreen(LoadingScreen) in a separate thread when the game thread blocks to load. During seamless travel, the game thread never blocks during loading, so the specified loading screen never appears.

It should be possible to manually start and stop the loading screen in your ShowLoadingScreen and EndLoadingScreen functions using PlayMovie and StopMovie.

void AMyPlayerController::ShowLoadingScreen_Implementation()
{
  GetMoviePlayer()->PlayMovie();
}

void AMyPlayerController::EndLoadingScreen_Implementation()
{
  GetMoviePlayer()->StopMovie();
}

I have this… and it will never stop for some reason

#include "CustomGameInstance.h"
#include "MoviePlayer.h"

void UCustomGameInstance::Init()
{
	Super::Init();

	FCoreUObjectDelegates::PreLoadMap.AddUObject(this, &UCustomGameInstance::OnPreLoadMap);
	FCoreUObjectDelegates::PostLoadMapWithWorld.AddUObject(this, &UCustomGameInstance::OnPostLoadMapWithWorld);
}

void UCustomGameInstance::OnPreLoadMap(const FString& InMapName)
{
	BeginLoadingScreen();
}

void UCustomGameInstance::OnPostLoadMapWithWorld(UWorld* InLoadedWorld)
{
	EndLoadingScreen();
}

void UCustomGameInstance::BeginLoadingScreen()
{
	if (!IsRunningDedicatedServer())
	{
		FLoadingScreenAttributes LoadingScreen;
		LoadingScreen.bAutoCompleteWhenLoadingCompletes = true;
		LoadingScreen.MinimumLoadingScreenDisplayTime = 3;
		LoadingScreen.bMoviesAreSkippable = false;
		LoadingScreen.bWaitForManualStop = true;
		LoadingScreen.MoviePaths.Init("LoadingScreen", 1);
		LoadingScreen.PlaybackType = EMoviePlaybackType::MT_Looped;
		//LoadingScreen.WidgetLoadingScreen = FLoadingScreenAttributes::NewTestLoadingScreenWidget();

		GetMoviePlayer()->SetupLoadingScreen(LoadingScreen);
	}
	OnPreLoadMapEvent();
}

void UCustomGameInstance::EndLoadingScreen()
{
	GetMoviePlayer()->StopMovie();
	OnPostLoadMapWithWorldEvent();
}

Yes, I’ve posted in answer in the main forum for the loading screen, quite an easy fix!

https://forums.unrealengine.com/community/community-content-tools-and-tutorials/67244-seamless-proper-loading-screens-play-movies-audio-animated-widgets?p=1668446#post1668446