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.
This commit is contained in:
Joshua
2023-01-25 14:59:26 -05:00
parent 843a6024a5
commit 5d2d63df75
2 changed files with 14 additions and 2 deletions

View File

@@ -7,6 +7,18 @@
#include "BlueprintDataDefinitions.h" #include "BlueprintDataDefinitions.h"
#include "FindSessionsCallbackProxyAdvanced.generated.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) UCLASS(MinimalAPI)
class UFindSessionsCallbackProxyAdvanced : public UOnlineBlueprintCallProxyBase class UFindSessionsCallbackProxyAdvanced : public UOnlineBlueprintCallProxyBase
{ {

View File

@@ -198,7 +198,7 @@ void UFindSessionsCallbackProxyAdvanced::OnCompleted(bool bSuccess)
FBlueprintSessionResult BPResult; FBlueprintSessionResult BPResult;
BPResult.OnlineResult = Result; BPResult.OnlineResult = Result;
SessionSearchResults.Add(BPResult); SessionSearchResults.AddUnique(BPResult);
} }
OnSuccess.Broadcast(SessionSearchResults); OnSuccess.Broadcast(SessionSearchResults);
return; return;
@@ -217,7 +217,7 @@ void UFindSessionsCallbackProxyAdvanced::OnCompleted(bool bSuccess)
FBlueprintSessionResult BPResult; FBlueprintSessionResult BPResult;
BPResult.OnlineResult = Result; BPResult.OnlineResult = Result;
SessionSearchResults.Add(BPResult); SessionSearchResults.AddUnique(BPResult);
} }
if (!bRunSecondSearch) if (!bRunSecondSearch)
{ {