From 5d2d63df75ba48e8ebfec0b53004ff030769cc07 Mon Sep 17 00:00:00 2001 From: Joshua Date: Wed, 25 Jan 2023 14:59:26 -0500 Subject: [PATCH] fix multiple session results when searching both dedicated and lobbies fix multiple session results when searching both dedicated and lobbies, its not a problem on steam but with lan and such it returns the same results as it doesn't care about presence. --- .../Classes/FindSessionsCallbackProxyAdvanced.h | 12 ++++++++++++ .../Private/FindSessionsCallbackProxyAdvanced.cpp | 4 ++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/AdvancedSessions/Source/AdvancedSessions/Classes/FindSessionsCallbackProxyAdvanced.h b/AdvancedSessions/Source/AdvancedSessions/Classes/FindSessionsCallbackProxyAdvanced.h index 9ea5e61..82c9e81 100644 --- a/AdvancedSessions/Source/AdvancedSessions/Classes/FindSessionsCallbackProxyAdvanced.h +++ b/AdvancedSessions/Source/AdvancedSessions/Classes/FindSessionsCallbackProxyAdvanced.h @@ -7,6 +7,18 @@ #include "BlueprintDataDefinitions.h" #include "FindSessionsCallbackProxyAdvanced.generated.h" + +FORCEINLINE bool operator==(const FBlueprintSessionResult& A, const FBlueprintSessionResult& B) +{ + return (A.OnlineResult.IsValid() == B.OnlineResult.IsValid() && (A.OnlineResult.GetSessionIdStr() == B.OnlineResult.GetSessionIdStr())); +} + +// Adding in a compare operator so that std functions will work with this struct +//FORCEINLINE bool operator==(FBlueprintSessionResult& A, FBlueprintSessionResult& B) const +//{ + //return (A.OnlineResult.IsValid() && B.OnlineResult.IsValid() && (A.OnlineResult.GetSessionIdStr() == B.OnlineResult.GetSessionIdStr())); +//} + UCLASS(MinimalAPI) class UFindSessionsCallbackProxyAdvanced : public UOnlineBlueprintCallProxyBase { diff --git a/AdvancedSessions/Source/AdvancedSessions/Private/FindSessionsCallbackProxyAdvanced.cpp b/AdvancedSessions/Source/AdvancedSessions/Private/FindSessionsCallbackProxyAdvanced.cpp index dd1a4df..5b03b31 100644 --- a/AdvancedSessions/Source/AdvancedSessions/Private/FindSessionsCallbackProxyAdvanced.cpp +++ b/AdvancedSessions/Source/AdvancedSessions/Private/FindSessionsCallbackProxyAdvanced.cpp @@ -198,7 +198,7 @@ void UFindSessionsCallbackProxyAdvanced::OnCompleted(bool bSuccess) FBlueprintSessionResult BPResult; BPResult.OnlineResult = Result; - SessionSearchResults.Add(BPResult); + SessionSearchResults.AddUnique(BPResult); } OnSuccess.Broadcast(SessionSearchResults); return; @@ -217,7 +217,7 @@ void UFindSessionsCallbackProxyAdvanced::OnCompleted(bool bSuccess) FBlueprintSessionResult BPResult; BPResult.OnlineResult = Result; - SessionSearchResults.Add(BPResult); + SessionSearchResults.AddUnique(BPResult); } if (!bRunSecondSearch) {