From 707c055f493f1d0cb19f518434cfc283cae4ccfc Mon Sep 17 00:00:00 2001 From: "Joshua (MordenTral) Statzer" Date: Fri, 11 Mar 2022 13:40:23 -0500 Subject: [PATCH] Merge pull request #30 from uno1982/master Add server travel blueprint node. --- .../Classes/AdvancedSessionsLibrary.h | 6 ++++++ .../Private/AdvancedSessionsLibrary.cpp | 11 +++++++++++ 2 files changed, 17 insertions(+) diff --git a/AdvancedSessions/Source/AdvancedSessions/Classes/AdvancedSessionsLibrary.h b/AdvancedSessions/Source/AdvancedSessions/Classes/AdvancedSessionsLibrary.h index 7ae831d..a512e8a 100644 --- a/AdvancedSessions/Source/AdvancedSessions/Classes/AdvancedSessionsLibrary.h +++ b/AdvancedSessions/Source/AdvancedSessions/Classes/AdvancedSessionsLibrary.h @@ -199,6 +199,12 @@ public: // Checks if the stated session subsystem is active UFUNCTION(BlueprintPure, Category = "Online|AdvancedSessions|Misc") static bool HasOnlineSubsystem(FName SubSystemName); + + //**** Seamless travel Functions ****// + + //Exposes Server travel to blueprint + UFUNCTION(BlueprintCallable, BlueprintAuthorityOnly, Category = "Online|AdvancedSessions|Seamless", meta = (HidePin = "WorldContextObject", DefaultToSelf = "WorldContextObject")) + static bool ServerTravel(UObject* WorldContextObject, const FString& InURL, bool bAbsolute, bool bShouldSkipGameNotify); }; diff --git a/AdvancedSessions/Source/AdvancedSessions/Private/AdvancedSessionsLibrary.cpp b/AdvancedSessions/Source/AdvancedSessions/Private/AdvancedSessionsLibrary.cpp index a930fad..4aa5deb 100644 --- a/AdvancedSessions/Source/AdvancedSessions/Private/AdvancedSessionsLibrary.cpp +++ b/AdvancedSessions/Source/AdvancedSessions/Private/AdvancedSessionsLibrary.cpp @@ -528,3 +528,14 @@ void UAdvancedSessionsLibrary::GetNumberOfNetworkPlayers(UObject* WorldContextOb NumNetPlayers = TheWorld->GetGameState()->PlayerArray.Num(); } + +bool UAdvancedSessionsLibrary::ServerTravel(UObject* WorldContextObject, const FString& FURL, bool bAbsolute, bool bShouldSkipGameNotify) +{ + if (!WorldContextObject) return false; + + //using a context object to get the world + UWorld* const World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::ReturnNull); + if (!World) return false; + World->ServerTravel(FURL,bAbsolute,bShouldSkipGameNotify); + return true; +}