diff --git a/Plugins/AdvancedSessions/Source/AdvancedSessions/Classes/CreateSessionCallbackProxyAdvanced.h b/Plugins/AdvancedSessions/Source/AdvancedSessions/Classes/CreateSessionCallbackProxyAdvanced.h index 04ae6d1..448c587 100644 --- a/Plugins/AdvancedSessions/Source/AdvancedSessions/Classes/CreateSessionCallbackProxyAdvanced.h +++ b/Plugins/AdvancedSessions/Source/AdvancedSessions/Classes/CreateSessionCallbackProxyAdvanced.h @@ -23,14 +23,14 @@ class UCreateSessionCallbackProxyAdvanced : public UOnlineBlueprintCallProxyBase * Creates a session with the default online subsystem with advanced optional inputs, for dedicated servers leave UsePresence as false and set IsDedicatedServer to true. Dedicated servers don't use presence. * @param PublicConnections When doing a 'listen' server, this must be >=2 (ListenServer itself counts as a connection) * @param bUseLAN When you want to play LAN, the level to play on must be loaded with option 'bIsLanMatch' - * @param bUsePresence Must be true for a 'listen' server (Map must be loaded with option 'listen'), false for a 'dedicated' server. * @param bUseLobbiesIfAvailable Used to flag the subsystem to use a lobby api instead of general hosting if the API supports it, generally true on steam for listen servers and false for dedicated + * Must be true for a 'listen' server (Map must be loaded with option 'listen'), false for a 'dedicated' server. * @param bShouldAdvertise Set to true when the OnlineSubsystem should list your server when someone is searching for servers. Otherwise the server is hidden and only join via invite is possible. * @param bUseLobbiesVoiceChatIfAvailable Set to true to setup voice chat lobbies if the API supports it * @param bStartAfterCreate Set to true to start the session after it's created. If false you need to manually call StartSession when ready. */ UFUNCTION(BlueprintCallable, meta=(BlueprintInternalUseOnly = "true", WorldContext="WorldContextObject",AutoCreateRefTerm="ExtraSettings"), Category = "Online|AdvancedSessions") - static UCreateSessionCallbackProxyAdvanced* CreateAdvancedSession(UObject* WorldContextObject, const TArray& ExtraSettings, class APlayerController* PlayerController = NULL, int32 PublicConnections = 100, int32 PrivateConnections = 0, bool bUseLAN = false, bool bAllowInvites = true, bool bIsDedicatedServer = false, bool bUsePresence = true, bool bUseLobbiesIfAvailable = true, bool bAllowJoinViaPresence = true, bool bAllowJoinViaPresenceFriendsOnly = false, bool bAntiCheatProtected = false, bool bUsesStats = false, bool bShouldAdvertise = true, bool bUseLobbiesVoiceChatIfAvailable = false, bool bStartAfterCreate = true); + static UCreateSessionCallbackProxyAdvanced* CreateAdvancedSession(UObject* WorldContextObject, const TArray& ExtraSettings, class APlayerController* PlayerController = NULL, int32 PublicConnections = 100, int32 PrivateConnections = 0, bool bUseLAN = false, bool bAllowInvites = true, bool bIsDedicatedServer = false, /*bool bUsePresence = true,*/ bool bUseLobbiesIfAvailable = true, bool bAllowJoinViaPresence = true, bool bAllowJoinViaPresenceFriendsOnly = false, bool bAntiCheatProtected = false, bool bUsesStats = false, bool bShouldAdvertise = true, bool bUseLobbiesVoiceChatIfAvailable = false, bool bStartAfterCreate = true); // UOnlineBlueprintCallProxyBase interface virtual void Activate() override; diff --git a/Plugins/AdvancedSessions/Source/AdvancedSessions/Private/AdvancedFriendsGameInstance.cpp b/Plugins/AdvancedSessions/Source/AdvancedSessions/Private/AdvancedFriendsGameInstance.cpp index 706bae5..61633b4 100644 --- a/Plugins/AdvancedSessions/Source/AdvancedSessions/Private/AdvancedFriendsGameInstance.cpp +++ b/Plugins/AdvancedSessions/Source/AdvancedSessions/Private/AdvancedFriendsGameInstance.cpp @@ -27,9 +27,20 @@ void UAdvancedFriendsGameInstance::OnSessionUserInviteAccepted(const bool bWasSu { SessionInterface->ClearOnJoinSessionCompleteDelegate_Handle(OnJoinSessionCompleteDelegateHandle); OnJoinSessionCompleteDelegateHandle = SessionInterface->AddOnJoinSessionCompleteDelegate_Handle( - FOnJoinSessionCompleteDelegate::CreateUObject(this, &UAdvancedFriendsGameInstance::OnJoinSessionComplete)); + FOnJoinSessionCompleteDelegate::CreateUObject(this, &UAdvancedFriendsGameInstance::OnJoinSessionComplete)); - SessionInterface->JoinSession(0, NAME_GameSession, InviteResult); + // Temp for 5.5, they aren't filling in the struct correctly + if (!InviteResult.Session.SessionSettings.bIsDedicated) + { + FOnlineSessionSearchResult ModResult = InviteResult; + ModResult.Session.SessionSettings.bUsesPresence = true; + ModResult.Session.SessionSettings.bUseLobbiesIfAvailable = true; + SessionInterface->JoinSession(0, NAME_GameSession, ModResult); + } + else + { + SessionInterface->JoinSession(0, NAME_GameSession, InviteResult); + } } UE_LOG(AdvancedFriendsInterfaceLog, Log, TEXT("Called Join Session for Steam Friends List UI InviteResults: %s, UserId: %s"), *InviteResult.GetSessionIdStr(), *UserId->ToString()); } @@ -306,6 +317,13 @@ void UAdvancedFriendsGameInstance::OnSessionInviteReceivedMaster(const FUniqueNe } } + // Temp for 5.5, they aren't filling in the struct correctly + if (!BluePrintResult.OnlineResult.Session.SessionSettings.bIsDedicated) + { + BluePrintResult.OnlineResult.Session.SessionSettings.bUsesPresence = true; + BluePrintResult.OnlineResult.Session.SessionSettings.bUseLobbiesIfAvailable = true; + } + OnSessionInviteReceived(LocalPlayer, PInviting, AppId, BluePrintResult); //IAdvancedFriendsInterface* TheInterface = NULL; @@ -342,6 +360,13 @@ void UAdvancedFriendsGameInstance::OnSessionInviteAcceptedMaster(const bool bWas FBPUniqueNetId PInvited; PInvited.SetUniqueNetId(PersonInvited); + // Temp for 5.5, they aren't filling in the struct correctly + if (!BluePrintResult.OnlineResult.Session.SessionSettings.bIsDedicated) + { + BluePrintResult.OnlineResult.Session.SessionSettings.bUsesPresence = true; + BluePrintResult.OnlineResult.Session.SessionSettings.bUseLobbiesIfAvailable = true; + } + OnSessionInviteAccepted(LocalPlayer,PInvited, BluePrintResult); APlayerController* Player = UGameplayStatics::GetPlayerController(GetWorld(), LocalPlayer); diff --git a/Plugins/AdvancedSessions/Source/AdvancedSessions/Private/CreateSessionCallbackProxyAdvanced.cpp b/Plugins/AdvancedSessions/Source/AdvancedSessions/Private/CreateSessionCallbackProxyAdvanced.cpp index 1ff10c1..6b07bf1 100644 --- a/Plugins/AdvancedSessions/Source/AdvancedSessions/Private/CreateSessionCallbackProxyAdvanced.cpp +++ b/Plugins/AdvancedSessions/Source/AdvancedSessions/Private/CreateSessionCallbackProxyAdvanced.cpp @@ -13,7 +13,7 @@ UCreateSessionCallbackProxyAdvanced::UCreateSessionCallbackProxyAdvanced(const F { } -UCreateSessionCallbackProxyAdvanced* UCreateSessionCallbackProxyAdvanced::CreateAdvancedSession(UObject* WorldContextObject, const TArray& ExtraSettings, class APlayerController* PlayerController, int32 PublicConnections, int32 PrivateConnections, bool bUseLAN, bool bAllowInvites, bool bIsDedicatedServer, bool bUsePresence, bool bUseLobbiesIfAvailable, bool bAllowJoinViaPresence, bool bAllowJoinViaPresenceFriendsOnly, bool bAntiCheatProtected, bool bUsesStats, bool bShouldAdvertise, bool bUseLobbiesVoiceChatIfAvailable, bool bStartAfterCreate) +UCreateSessionCallbackProxyAdvanced* UCreateSessionCallbackProxyAdvanced::CreateAdvancedSession(UObject* WorldContextObject, const TArray& ExtraSettings, class APlayerController* PlayerController, int32 PublicConnections, int32 PrivateConnections, bool bUseLAN, bool bAllowInvites, bool bIsDedicatedServer, /*bool bUsePresence,*/ bool bUseLobbiesIfAvailable, bool bAllowJoinViaPresence, bool bAllowJoinViaPresenceFriendsOnly, bool bAntiCheatProtected, bool bUsesStats, bool bShouldAdvertise, bool bUseLobbiesVoiceChatIfAvailable, bool bStartAfterCreate) { UCreateSessionCallbackProxyAdvanced* Proxy = NewObject(); Proxy->PlayerControllerWeakPtr = PlayerController; @@ -24,7 +24,7 @@ UCreateSessionCallbackProxyAdvanced* UCreateSessionCallbackProxyAdvanced::Create Proxy->bAllowInvites = bAllowInvites; Proxy->ExtraSettings = ExtraSettings; Proxy->bDedicatedServer = bIsDedicatedServer; - Proxy->bUsePresence = bUsePresence; + /*Proxy->bUsePresence = bUsePresence;*/ Proxy->bUseLobbiesIfAvailable = bUseLobbiesIfAvailable; Proxy->bAllowJoinViaPresence = bAllowJoinViaPresence; Proxy->bAllowJoinViaPresenceFriendsOnly = bAllowJoinViaPresenceFriendsOnly; @@ -61,13 +61,13 @@ void UCreateSessionCallbackProxyAdvanced::Activate() if (bDedicatedServer) { - Settings.bUsesPresence = false; Settings.bUseLobbiesIfAvailable = false; + Settings.bUsesPresence = false; } else { - Settings.bUsesPresence = bUsePresence; Settings.bUseLobbiesIfAvailable = bUseLobbiesIfAvailable; + Settings.bUsesPresence = bUseLobbiesIfAvailable; } Settings.bUseLobbiesVoiceChatIfAvailable = bUseLobbiesIfAvailable ? bUseLobbiesVoiceChatIfAvailable : false; diff --git a/Plugins/AdvancedSessions/Source/AdvancedSessions/Private/FindSessionsCallbackProxyAdvanced.cpp b/Plugins/AdvancedSessions/Source/AdvancedSessions/Private/FindSessionsCallbackProxyAdvanced.cpp index 7325caa..e031688 100644 --- a/Plugins/AdvancedSessions/Source/AdvancedSessions/Private/FindSessionsCallbackProxyAdvanced.cpp +++ b/Plugins/AdvancedSessions/Source/AdvancedSessions/Private/FindSessionsCallbackProxyAdvanced.cpp @@ -86,7 +86,6 @@ void UFindSessionsCallbackProxyAdvanced::Activate() /** #define SEARCH_SWITCH_SELECTION_METHOD FName(TEXT("SWITCHSELECTIONMETHOD"))*/ /** Whether to use lobbies vs sessions */ /** #define SEARCH_LOBBIES FName(TEXT("LOBBYSEARCH"))*/ - if (bEmptyServersOnly) tem.Set(SEARCH_EMPTY_SERVERS_ONLY, true, EOnlineComparisonOp::Equals); @@ -225,6 +224,14 @@ void UFindSessionsCallbackProxyAdvanced::OnCompleted(bool bSuccess) FBlueprintSessionResult BPResult; BPResult.OnlineResult = Result; + + // Temp for 5.5, force the values if epic isn't setting them, lobbies should always have these true + if (ServerSearchType != EBPServerPresenceSearchType::DedicatedServersOnly ) + { + BPResult.OnlineResult.Session.SessionSettings.bUseLobbiesIfAvailable = true; + BPResult.OnlineResult.Session.SessionSettings.bUsesPresence = true; + } + SessionSearchResults.AddUnique(BPResult); } if (!bRunSecondSearch) diff --git a/Plugins/AdvancedSteamSessions/AdvancedSteamSessions.uplugin b/Plugins/AdvancedSteamSessions/AdvancedSteamSessions.uplugin index 307c51e..56c6733 100644 --- a/Plugins/AdvancedSteamSessions/AdvancedSteamSessions.uplugin +++ b/Plugins/AdvancedSteamSessions/AdvancedSteamSessions.uplugin @@ -14,7 +14,7 @@ { "Name": "AdvancedSteamSessions", "Type": "RunTime", - "LoadingPhase": "Default" + "LoadingPhase": "PostDefault" } ], "Plugins": [ diff --git a/Plugins/AdvancedSteamSessions/Source/AdvancedSteamSessions/AdvancedSteamSessions.Build.cs b/Plugins/AdvancedSteamSessions/Source/AdvancedSteamSessions/AdvancedSteamSessions.Build.cs index 6a4c768..eb4dbf0 100644 --- a/Plugins/AdvancedSteamSessions/Source/AdvancedSteamSessions/AdvancedSteamSessions.Build.cs +++ b/Plugins/AdvancedSteamSessions/Source/AdvancedSteamSessions/AdvancedSteamSessions.Build.cs @@ -16,6 +16,7 @@ public class AdvancedSteamSessions : ModuleRules if ((Target.Platform == UnrealTargetPlatform.Win64) || (Target.Platform == UnrealTargetPlatform.Linux) || (Target.Platform == UnrealTargetPlatform.Mac)) { PublicDependencyModuleNames.AddRange(new string[] { "SteamShared", "Steamworks", "OnlineSubsystemSteam" }); + AddEngineThirdPartyPrivateStaticDependencies(Target, "Steamworks"); //PublicIncludePaths.AddRange(new string[] { "../Plugins/Online/OnlineSubsystemSteam/Source/Private" });// This is dumb but it isn't very open } } diff --git a/Plugins/AdvancedSteamSessions/Source/AdvancedSteamSessions/Private/AdvancedSteamFriendsLibrary.cpp b/Plugins/AdvancedSteamSessions/Source/AdvancedSteamSessions/Private/AdvancedSteamFriendsLibrary.cpp index 85340e4..45e031f 100644 --- a/Plugins/AdvancedSteamSessions/Source/AdvancedSteamSessions/Private/AdvancedSteamFriendsLibrary.cpp +++ b/Plugins/AdvancedSteamSessions/Source/AdvancedSteamSessions/Private/AdvancedSteamFriendsLibrary.cpp @@ -1,6 +1,10 @@ // Fill out your copyright notice in the Description page of Project Settings. #include "AdvancedSteamFriendsLibrary.h" #include "OnlineSubSystemHeader.h" +#include "Engine/Texture.h" +#include "Engine/Texture2D.h" +#include "TextureResource.h" +#include "PixelFormat.h" //General Log DEFINE_LOG_CATEGORY(AdvancedSteamFriendsLog);