(Feat) Fix Fade Loading

This commit is contained in:
2026-08-03 21:10:45 +02:00
parent 7595df6862
commit 1456ed91c7
11 changed files with 925 additions and 28 deletions
@@ -20,6 +20,16 @@ DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnSessionError, FText, Reason);
/** Fin d'une recherche. SessionCount vaut 0 si personne n'heberge. */
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnSessionSearchFinished, bool, bWasSuccessful, int32, SessionCount);
/**
* La connexion a abouti, le voyage part dans un instant.
*
* Existe uniquement pour laisser le temps d'un fondu : le sous-systeme sait ou
* aller, mais le voile appartient au PlayerController -- et une invitation peut
* etre acceptee depuis le menu comme en pleine partie, donc depuis deux
* controllers differents. Chacun s'abonne et fond a sa maniere.
*/
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnSessionTravelPending);
/**
* Hebergement et connexion : creer une partie, la trouver, la rejoindre.
*
@@ -135,6 +145,22 @@ public:
UPROPERTY(BlueprintAssignable, Category = "Session")
FOnSessionSearchFinished OnSearchFinished;
UPROPERTY(BlueprintAssignable, Category = "Session")
FOnSessionTravelPending OnTravelPending;
/**
* Duree laissee au fondu avant que le voyage parte.
*
* C'est LE sous-systeme qui la porte et non chaque controller : les deux
* doivent fondre exactement le temps qu'il attend, sinon l'ecran voyage
* avant d'etre noir. Une seule valeur, lue par tous.
*
* Pas de UPROPERTY editable : un GameInstanceSubsystem n'a aucun asset ou
* la regler. Si elle doit bouger un jour, ce sera ici.
*/
UFUNCTION(BlueprintPure, Category = "Session")
float GetTravelFadeDuration() const { return TravelFadeDuration; }
private:
void HandleCreateSessionComplete(FName SessionName, bool bWasSuccessful);
void HandleFindSessionsComplete(bool bWasSuccessful);
@@ -173,6 +199,16 @@ private:
/** Coupe proprement un delegue encore branche. Idempotent. */
void ClearPendingDelegates();
/** Le fondu a eu son temps : on voyage pour de bon. */
void CommitPendingTravel();
/** Adresse resolue de l'hote, en attente du fondu. */
FString PendingTravelURL;
FTimerHandle TravelTimer;
float TravelFadeDuration = 1.f;
IOnlineSessionPtr SessionInterface;
TSharedPtr<FOnlineSessionSearch> SearchSettings;