// Find All Online Sessions void URadeGameInstance::FindOnlineGames() { ULocalPlayer* const Player = GetFirstGamePlayer(); FindSessions(Player->GetPreferredUniqueNetId(), GameSessionName, true, true); }
void UFindSessionsCallbackProxyAdvanced::Activate() { FOnlineSubsystemBPCallHelperAdvanced Helper(TEXT("FindSessions"), GEngine->GetWorldFromContextObject(WorldContextObject)); Helper.QueryIDFromPlayerController(PlayerControllerWeakPtr.Get()); if (Helper.IsValid()) { auto Sessions = Helper.OnlineSub->GetSessionInterface(); if (Sessions.IsValid()) { DelegateHandle = Sessions->AddOnFindSessionsCompleteDelegate_Handle(Delegate); SearchObject = MakeShareable(new FOnlineSessionSearch); SearchObject->MaxSearchResults = MaxResults; SearchObject->bIsLanQuery = bUseLAN; //SearchObject->QuerySettings.Set(SEARCH_PRESENCE, true, EOnlineComparisonOp::Equals); // Create temp filter variable, because I had to re-define a blueprint version of this, it is required. FOnlineSearchSettingsEx tem; tem.Set(SEARCH_PRESENCE, true, EOnlineComparisonOp::Equals); // Filter results if (SearchSettings.Num() > 0) { for (int i = 0; i < SearchSettings.Num(); i++) { // Function that was added to make directly adding a FVariant possible tem.HardSet(SearchSettings[i].PropertyKeyPair.Key, SearchSettings[i].PropertyKeyPair.Data, SearchSettings[i].ComparisonOp); } } // Copy the derived temp variable over to it's base class SearchObject->QuerySettings = tem; Sessions->FindSessions(*Helper.UserID, SearchObject.ToSharedRef()); // OnQueryCompleted will get called, nothing more to do now return; } else { FFrame::KismetExecutionMessage(TEXT("Sessions not supported by Online Subsystem"), ELogVerbosity::Warning); } } // Fail immediately TArray<FBlueprintSessionResult> Results; OnFailure.Broadcast(Results); }
bool FOnlineSessionNull::FindSessions(const FUniqueNetId& SearchingPlayerId, const TSharedRef<FOnlineSessionSearch>& SearchSettings) { // This function doesn't use the SearchingPlayerNum parameter, so passing in anything is fine. return FindSessions(0, SearchSettings); }