From 60075061898b7038036e9e759dcaad7842daceef Mon Sep 17 00:00:00 2001 From: mordentral Date: Thu, 18 Apr 2019 13:35:15 -0400 Subject: [PATCH] Added another session id utility function Former-commit-id: 4e97162f7c10db3bd97b3756fa2de911e360b662 --- .../Classes/AdvancedSessionsLibrary.h | 4 +++ .../Private/AdvancedSessionsLibrary.cpp | 26 +++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/AdvancedSessions/Source/AdvancedSessions/Classes/AdvancedSessionsLibrary.h b/AdvancedSessions/Source/AdvancedSessions/Classes/AdvancedSessionsLibrary.h index 174255d..ca57883 100644 --- a/AdvancedSessions/Source/AdvancedSessions/Classes/AdvancedSessionsLibrary.h +++ b/AdvancedSessions/Source/AdvancedSessions/Classes/AdvancedSessionsLibrary.h @@ -64,6 +64,10 @@ public: UFUNCTION(BlueprintPure, Category = "Online|AdvancedSessions|SessionInfo") static void GetSessionID_AsString(const FBlueprintSessionResult & SessionResult, FString& SessionID); + // Get a string copy of the current session ID + UFUNCTION(BlueprintPure, Category = "Online|AdvancedSessions|SessionInfo") + static void GetCurrentSessionID_AsString(FString& SessionID); + // Get the Unique Current Build ID UFUNCTION(BlueprintPure, Category = "Online|AdvancedSessions|SessionInfo") static void GetCurrentUniqueBuildID(int32 &UniqueBuildId); diff --git a/AdvancedSessions/Source/AdvancedSessions/Private/AdvancedSessionsLibrary.cpp b/AdvancedSessions/Source/AdvancedSessions/Private/AdvancedSessionsLibrary.cpp index 7094f91..e94a387 100644 --- a/AdvancedSessions/Source/AdvancedSessions/Private/AdvancedSessionsLibrary.cpp +++ b/AdvancedSessions/Source/AdvancedSessions/Private/AdvancedSessionsLibrary.cpp @@ -25,6 +25,32 @@ void UAdvancedSessionsLibrary::GetSessionID_AsString(const FBlueprintSessionResu SessionID.Empty(); } +void UAdvancedSessionsLibrary::GetCurrentSessionID_AsString(FString& SessionID) +{ + IOnlineSessionPtr SessionInterface = Online::GetSessionInterface(); + + if (!SessionInterface.IsValid()) + { + UE_LOG(AdvancedSessionsLog, Warning, TEXT("GetCurrentSessionID_AsString couldn't get the session interface!")); + SessionID.Empty(); + return; + } + + const FNamedOnlineSession* Session = SessionInterface->GetNamedSession(NAME_GameSession); + if (Session != nullptr) + { + const TSharedPtr SessionInfo = Session->SessionInfo; + if (SessionInfo.IsValid() && SessionInfo->IsValid() && SessionInfo->GetSessionId().IsValid()) + { + SessionID = SessionInfo->GetSessionId().ToString(); + return; + } + } + + // Zero the string out if we didn't have a valid one, in case this is called in c++ + SessionID.Empty(); +} + void UAdvancedSessionsLibrary::GetCurrentUniqueBuildID(int32 &UniqueBuildId) { UniqueBuildId = GetBuildUniqueId();