void UAdvancedSessionsLibrary::GetSessionSettings(int32 &NumConnections, bool &bIsLAN, bool &bIsDedicated, bool &bIsAnticheatEnabled, int32 &BuildUniqueID, TArray<FSessionPropertyKeyPair> &ExtraSettings, TEnumAsByte<EBlueprintResultSwitch::Type> &Result) { IOnlineSessionPtr SessionInterface = Online::GetSessionInterface(); if (!SessionInterface.IsValid()) { UE_LOG(AdvancedSessionsLog, Warning, TEXT("GetSessionSettings couldn't get the session interface!")); Result = EBlueprintResultSwitch::Type::OnFailure; return; } FOnlineSessionSettings* settings = SessionInterface->GetSessionSettings(GameSessionName); if (!settings) { UE_LOG(AdvancedSessionsLog, Warning, TEXT("GetSessionSettings couldn't get the session settings!")); Result = EBlueprintResultSwitch::Type::OnFailure; return; } BuildUniqueID = settings->BuildUniqueId; NumConnections = settings->NumPublicConnections; bIsLAN = settings->bIsLANMatch; bIsDedicated = settings->bIsDedicated; bIsAnticheatEnabled = settings->bAntiCheatProtected; FSessionPropertyKeyPair NewSetting; for (auto& Elem : settings->Settings) { NewSetting.Key = Elem.Key; NewSetting.Data = Elem.Value.Data; ExtraSettings.Add(NewSetting); } Result = EBlueprintResultSwitch::Type::OnSuccess; }
void UOnlineSessionClient::SetInviteFlags(UWorld* World, const FJoinabilitySettings& Settings) { IOnlineSessionPtr SessionInt = Online::GetSessionInterface(World); if (SessionInt.IsValid()) { FOnlineSessionSettings* GameSettings = SessionInt->GetSessionSettings(Settings.SessionName); if (GameSettings != NULL) { GameSettings->bShouldAdvertise = Settings.bPublicSearchable; GameSettings->bAllowInvites = Settings.bAllowInvites; GameSettings->bAllowJoinViaPresence = Settings.bJoinViaPresence && !Settings.bJoinViaPresenceFriendsOnly; GameSettings->bAllowJoinViaPresenceFriendsOnly = Settings.bJoinViaPresenceFriendsOnly; GameSettings->NumPublicConnections = Settings.MaxPlayers; SessionInt->UpdateSession(Settings.SessionName, *GameSettings, false); } } }