1 Commits

Author SHA1 Message Date
Joshua (MordenTral) Statzer
76e08581f5 Adding function to get the net id of a session owner 2025-09-26 08:36:59 -04:00
49 changed files with 340 additions and 737 deletions

View File

@@ -1,8 +1,8 @@
{ {
"FileVersion": 3, "FileVersion": 3,
"FriendlyName": "Advanced Sessions", "FriendlyName": "Advanced Sessions",
"Version": 5.1, "Version": 4,
"VersionName": "5.1", "VersionName": "5.0",
"Description": "Adds new blueprint functions to handle more advanced session operations.", "Description": "Adds new blueprint functions to handle more advanced session operations.",
"Category": "Advanced Sessions Plugin", "Category": "Advanced Sessions Plugin",
"CreatedBy": "Joshua Statzer", "CreatedBy": "Joshua Statzer",

View File

@@ -13,5 +13,6 @@ public class AdvancedSessions : ModuleRules
// PrivateIncludePaths.AddRange(new string[] { "AdvancedSessions/Private"/*, "OnlineSubsystemSteam/Private"*/ }); // PrivateIncludePaths.AddRange(new string[] { "AdvancedSessions/Private"/*, "OnlineSubsystemSteam/Private"*/ });
// PublicIncludePaths.AddRange(new string[] { "AdvancedSessions/Public" }); // PublicIncludePaths.AddRange(new string[] { "AdvancedSessions/Public" });
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "OnlineSubsystem", "CoreUObject", "OnlineSubsystemUtils", "Networking", "Sockets"/*"Voice", "OnlineSubsystemSteam"*/ }); PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "OnlineSubsystem", "CoreUObject", "OnlineSubsystemUtils", "Networking", "Sockets"/*"Voice", "OnlineSubsystemSteam"*/ });
PrivateDependencyModuleNames.AddRange(new string[] { "OnlineSubsystem", "Sockets", "Networking", "OnlineSubsystemUtils" /*"Voice", "Steamworks","OnlineSubsystemSteam"*/});
} }
} }

View File

@@ -32,32 +32,32 @@ public:
//********* External UI Functions *************// //********* External UI Functions *************//
// Show the UI that handles the Friends list // Show the UI that handles the Friends list
UFUNCTION(BlueprintCallable, Category = "Online|AdvancedExternalUI", meta = (ExpandEnumAsExecs = "Result", WorldContext = "WorldContextObject")) UFUNCTION(BlueprintCallable, Category = "Online|AdvancedExternalUI", meta = (ExpandEnumAsExecs = "Result"))
static void ShowFriendsUI(UObject* WorldContextObject, APlayerController *PlayerController, EBlueprintResultSwitch &Result); static void ShowFriendsUI(APlayerController *PlayerController, EBlueprintResultSwitch &Result);
// Show the UI that handles inviting people to your game // Show the UI that handles inviting people to your game
UFUNCTION(BlueprintCallable, Category = "Online|AdvancedExternalUI", meta = (ExpandEnumAsExecs = "Result", WorldContext = "WorldContextObject")) UFUNCTION(BlueprintCallable, Category = "Online|AdvancedExternalUI", meta = (ExpandEnumAsExecs = "Result"))
static void ShowInviteUI(UObject* WorldContextObject, APlayerController *PlayerController, EBlueprintResultSwitch &Result); static void ShowInviteUI(APlayerController *PlayerController, EBlueprintResultSwitch &Result);
// Show the UI that shows the leaderboard (doesn't work with steam) // Show the UI that shows the leaderboard (doesn't work with steam)
UFUNCTION(BlueprintCallable, Category = "Online|AdvancedExternalUI", meta = (ExpandEnumAsExecs = "Result", WorldContext = "WorldContextObject")) UFUNCTION(BlueprintCallable, Category = "Online|AdvancedExternalUI", meta = (ExpandEnumAsExecs = "Result"))
static void ShowLeaderBoardUI(UObject* WorldContextObject, FString LeaderboardName, EBlueprintResultSwitch &Result); static void ShowLeaderBoardUI(FString LeaderboardName, EBlueprintResultSwitch &Result);
// Show the UI that shows a web URL // Show the UI that shows a web URL
UFUNCTION(BlueprintCallable, Category = "Online|AdvancedExternalUI", meta = (ExpandEnumAsExecs = "Result", AutoCreateRefTerm = "AllowedDomains", WorldContext = "WorldContextObject")) UFUNCTION(BlueprintCallable, Category = "Online|AdvancedExternalUI", meta = (ExpandEnumAsExecs = "Result", AutoCreateRefTerm = "AllowedDomains"))
static void ShowWebURLUI(UObject* WorldContextObject, FString URLToShow, EBlueprintResultSwitch &Result, TArray<FString>& AllowedDomains, bool bEmbedded = false , bool bShowBackground = false, bool bShowCloseButton = false, int32 OffsetX = 0, int32 OffsetY = 0, int32 SizeX = 0, int32 SizeY = 0); static void ShowWebURLUI(FString URLToShow, EBlueprintResultSwitch &Result, TArray<FString>& AllowedDomains, bool bEmbedded = false , bool bShowBackground = false, bool bShowCloseButton = false, int32 OffsetX = 0, int32 OffsetY = 0, int32 SizeX = 0, int32 SizeY = 0);
// Show the UI that shows a web URL // Show the UI that shows a web URL
UFUNCTION(BlueprintCallable, Category = "Online|AdvancedExternalUI", meta = (WorldContext = "WorldContextObject")) UFUNCTION(BlueprintCallable, Category = "Online|AdvancedExternalUI")
static void CloseWebURLUI(UObject* WorldContextObject); static void CloseWebURLUI();
// Show the UI that shows the profile of a uniquenetid // Show the UI that shows the profile of a uniquenetid
UFUNCTION(BlueprintCallable, Category = "Online|AdvancedExternalUI", meta = (ExpandEnumAsExecs = "Result", WorldContext = "WorldContextObject")) UFUNCTION(BlueprintCallable, Category = "Online|AdvancedExternalUI", meta = (ExpandEnumAsExecs = "Result"))
static void ShowProfileUI(UObject* WorldContextObject, const FBPUniqueNetId PlayerViewingProfile, const FBPUniqueNetId PlayerToViewProfileOf, EBlueprintResultSwitch &Result); static void ShowProfileUI(const FBPUniqueNetId PlayerViewingProfile, const FBPUniqueNetId PlayerToViewProfileOf, EBlueprintResultSwitch &Result);
// Show the UI that shows the account upgrade UI (doesn't work with steam) // Show the UI that shows the account upgrade UI (doesn't work with steam)
UFUNCTION(BlueprintCallable, Category = "Online|AdvancedExternalUI", meta = (ExpandEnumAsExecs = "Result", WorldContext = "WorldContextObject")) UFUNCTION(BlueprintCallable, Category = "Online|AdvancedExternalUI", meta = (ExpandEnumAsExecs = "Result"))
static void ShowAccountUpgradeUI(UObject* WorldContextObject, const FBPUniqueNetId PlayerRequestingAccountUpgradeUI, EBlueprintResultSwitch &Result); static void ShowAccountUpgradeUI(const FBPUniqueNetId PlayerRequestingAccountUpgradeUI, EBlueprintResultSwitch &Result);
}; };

View File

@@ -28,26 +28,26 @@ public:
//********* Identity Functions *************// //********* Identity Functions *************//
// Get the login status of a local player // Get the login status of a local player
UFUNCTION(BlueprintCallable, Category = "Online|AdvancedIdentity", meta = (ExpandEnumAsExecs = "Result", WorldContext = "WorldContextObject")) UFUNCTION(BlueprintCallable, Category = "Online|AdvancedIdentity", meta = (ExpandEnumAsExecs = "Result"))
static void GetLoginStatus(UObject* WorldContextObject, const FBPUniqueNetId & UniqueNetID, EBPLoginStatus & LoginStatus, EBlueprintResultSwitch &Result); static void GetLoginStatus(const FBPUniqueNetId & UniqueNetID, EBPLoginStatus & LoginStatus, EBlueprintResultSwitch &Result);
// Get the auth token for a local player // Get the auth token for a local player
UFUNCTION(BlueprintCallable, Category = "Online|AdvancedIdentity", meta = (ExpandEnumAsExecs = "Result", WorldContext = "WorldContextObject")) UFUNCTION(BlueprintCallable, Category = "Online|AdvancedIdentity", meta = (ExpandEnumAsExecs = "Result"))
static void GetPlayerAuthToken(UObject* WorldContextObject, APlayerController * PlayerController, FString & AuthToken, EBlueprintResultSwitch &Result); static void GetPlayerAuthToken(APlayerController * PlayerController, FString & AuthToken, EBlueprintResultSwitch &Result);
// Get a players nickname // Get a players nickname
UFUNCTION(BlueprintPure, Category = "Online|AdvancedIdentity", meta = (WorldContext = "WorldContextObject")) UFUNCTION(BlueprintPure, Category = "Online|AdvancedIdentity")
static void GetPlayerNickname(UObject* WorldContextObject, const FBPUniqueNetId & UniqueNetID, FString & PlayerNickname); static void GetPlayerNickname(const FBPUniqueNetId & UniqueNetID, FString & PlayerNickname);
//********* User Account Functions *************// //********* User Account Functions *************//
// Get a users account // Get a users account
UFUNCTION(BlueprintCallable, Category = "Online|AdvancedIdentity|UserAccount", meta = (ExpandEnumAsExecs = "Result", WorldContext = "WorldContextObject")) UFUNCTION(BlueprintCallable, Category = "Online|AdvancedIdentity|UserAccount", meta = (ExpandEnumAsExecs = "Result"))
static void GetUserAccount(UObject* WorldContextObject, const FBPUniqueNetId & UniqueNetId, FBPUserOnlineAccount & AccountInfo, EBlueprintResultSwitch &Result); static void GetUserAccount(const FBPUniqueNetId & UniqueNetId, FBPUserOnlineAccount & AccountInfo, EBlueprintResultSwitch &Result);
// Get all known users accounts // Get all known users accounts
UFUNCTION(BlueprintCallable, Category = "Online|AdvancedIdentity|UserAccount", meta = (ExpandEnumAsExecs = "Result", WorldContext = "WorldContextObject")) UFUNCTION(BlueprintCallable, Category = "Online|AdvancedIdentity|UserAccount", meta = (ExpandEnumAsExecs = "Result"))
static void GetAllUserAccounts(UObject* WorldContextObject, TArray<FBPUserOnlineAccount> & AccountInfos, EBlueprintResultSwitch &Result); static void GetAllUserAccounts(TArray<FBPUserOnlineAccount> & AccountInfos, EBlueprintResultSwitch &Result);
// Get a user account access token // Get a user account access token
UFUNCTION(BlueprintPure, Category = "Online|AdvancedIdentity|UserAccount") UFUNCTION(BlueprintPure, Category = "Online|AdvancedIdentity|UserAccount")

View File

@@ -160,6 +160,10 @@ public:
UFUNCTION(BlueprintPure, Category = "Online|AdvancedSessions|PlayerInfo|PlayerID") UFUNCTION(BlueprintPure, Category = "Online|AdvancedSessions|PlayerInfo|PlayerID")
static void GetUniqueNetID(APlayerController *PlayerController, FBPUniqueNetId &UniqueNetId); static void GetUniqueNetID(APlayerController *PlayerController, FBPUniqueNetId &UniqueNetId);
// Get the unique net id of a network player attached to the given controller
UFUNCTION(BlueprintPure, Category = "Online|AdvancedSessions|PlayerInfo|PlayerID")
static void GetUniqueNetIdOfSessionOwner(FBlueprintSessionResult SessionResult, FBPUniqueNetId& UniqueNetId);
// Get the unique net id of a network player who is assigned the the given player state // Get the unique net id of a network player who is assigned the the given player state
UFUNCTION(BlueprintPure, Category = "Online|AdvancedSessions|PlayerInfo|PlayerID") UFUNCTION(BlueprintPure, Category = "Online|AdvancedSessions|PlayerInfo|PlayerID")
static void GetUniqueNetIDFromPlayerState(APlayerState *PlayerState, FBPUniqueNetId &UniqueNetId); static void GetUniqueNetIDFromPlayerState(APlayerState *PlayerState, FBPUniqueNetId &UniqueNetId);
@@ -172,10 +176,6 @@ public:
UFUNCTION(BlueprintPure, meta = (DisplayName = "Equal Unique Net ID", CompactNodeTitle = "==", Keywords = "== equal"), Category = "Online|AdvancedSessions|PlayerInfo|PlayerID") UFUNCTION(BlueprintPure, meta = (DisplayName = "Equal Unique Net ID", CompactNodeTitle = "==", Keywords = "== equal"), Category = "Online|AdvancedSessions|PlayerInfo|PlayerID")
static bool EqualEqual_UNetIDUnetID(const FBPUniqueNetId &A, const FBPUniqueNetId &B); static bool EqualEqual_UNetIDUnetID(const FBPUniqueNetId &A, const FBPUniqueNetId &B);
/** Converts a FBPUniqueNetID into a FUniqueNetID_Repl */
UFUNCTION(BlueprintPure, meta = (DisplayName = "ToUniqueNetIDRepl (Unique Net ID)", CompactNodeTitle = "->", BlueprintAutocast), Category = "Online|AdvancedSessions|PlayerInfo|PlayerID")
static FUniqueNetIdRepl Conv_BPUniqueIDToUniqueNetIDRepl(const FBPUniqueNetId& InUniqueID);
// Check if a UniqueNetId is a friend // Check if a UniqueNetId is a friend
UFUNCTION(BlueprintPure, Category = "Online|AdvancedSessions|UniqueNetId") UFUNCTION(BlueprintPure, Category = "Online|AdvancedSessions|UniqueNetId")
static void UniqueNetIdToString(const FBPUniqueNetId &UniqueNetId, FString &String); static void UniqueNetIdToString(const FBPUniqueNetId &UniqueNetId, FString &String);

View File

@@ -32,68 +32,68 @@ public:
//********* Voice Library Functions *************// //********* Voice Library Functions *************//
// Get if a headset is present for the specified local user // Get if a headset is present for the specified local user
UFUNCTION(BlueprintPure, Category = "Online|AdvancedVoice|VoiceInfo", meta = (WorldContext = "WorldContextObject")) UFUNCTION(BlueprintPure, Category = "Online|AdvancedVoice|VoiceInfo")
static void IsHeadsetPresent(UObject* WorldContextObject, bool & bHasHeadset, uint8 LocalPlayerNum = 0); static void IsHeadsetPresent(bool & bHasHeadset, uint8 LocalPlayerNum = 0);
// Starts networked voice, allows push to talk in coordination with StopNetworkedVoice // Starts networked voice, allows push to talk in coordination with StopNetworkedVoice
UFUNCTION(BlueprintCallable, Category = "Online|AdvancedVoice", meta = (WorldContext = "WorldContextObject")) UFUNCTION(BlueprintCallable, Category = "Online|AdvancedVoice")
static void StartNetworkedVoice(UObject* WorldContextObject, uint8 LocalPlayerNum = 0); static void StartNetworkedVoice(uint8 LocalPlayerNum = 0);
// Stops networked voice, allows push to talk in coordination with StartNetworkedVoice // Stops networked voice, allows push to talk in coordination with StartNetworkedVoice
UFUNCTION(BlueprintCallable, Category = "Online|AdvancedVoice", meta = (WorldContext = "WorldContextObject")) UFUNCTION(BlueprintCallable, Category = "Online|AdvancedVoice")
static void StopNetworkedVoice(UObject* WorldContextObject, uint8 LocalPlayerNum = 0); static void StopNetworkedVoice(uint8 LocalPlayerNum = 0);
// Registers a local player as someone interested in voice data // Registers a local player as someone interested in voice data
UFUNCTION(BlueprintCallable, Category = "Online|AdvancedVoice", meta = (WorldContext = "WorldContextObject")) UFUNCTION(BlueprintCallable, Category = "Online|AdvancedVoice")
static bool RegisterLocalTalker(UObject* WorldContextObject, uint8 LocalPlayerNum = 0); static bool RegisterLocalTalker(uint8 LocalPlayerNum = 0);
// Registers all signed in players as local talkers // Registers all signed in players as local talkers
// This is already done automatically, only do it manually if you unregistered someone // This is already done automatically, only do it manually if you unregistered someone
UFUNCTION(BlueprintCallable, Category = "Online|AdvancedVoice", meta = (WorldContext = "WorldContextObject")) UFUNCTION(BlueprintCallable, Category = "Online|AdvancedVoice")
static void RegisterAllLocalTalkers(UObject* WorldContextObject); static void RegisterAllLocalTalkers();
// UnRegisters local player as a local talker // UnRegisters local player as a local talker
UFUNCTION(BlueprintCallable, Category = "Online|AdvancedVoice", meta = (WorldContext = "WorldContextObject")) UFUNCTION(BlueprintCallable, Category = "Online|AdvancedVoice")
static void UnRegisterLocalTalker(UObject* WorldContextObject, uint8 LocalPlayerNum = 0); static void UnRegisterLocalTalker(uint8 LocalPlayerNum = 0);
// UnRegisters all signed in players as local talkers // UnRegisters all signed in players as local talkers
UFUNCTION(BlueprintCallable, Category = "Online|AdvancedVoice", meta = (WorldContext = "WorldContextObject")) UFUNCTION(BlueprintCallable, Category = "Online|AdvancedVoice")
static void UnRegisterAllLocalTalkers(UObject* WorldContextObject); static void UnRegisterAllLocalTalkers();
// Registers a remote player as a talker // Registers a remote player as a talker
// This is already done automatically, only do it manually if you unregistered someone // This is already done automatically, only do it manually if you unregistered someone
UFUNCTION(BlueprintCallable, Category = "Online|AdvancedVoice", meta = (WorldContext = "WorldContextObject")) UFUNCTION(BlueprintCallable, Category = "Online|AdvancedVoice")
static bool RegisterRemoteTalker(UObject* WorldContextObject, const FBPUniqueNetId& UniqueNetId); static bool RegisterRemoteTalker(const FBPUniqueNetId& UniqueNetId);
// UnRegisters a remote player as a talker // UnRegisters a remote player as a talker
UFUNCTION(BlueprintCallable, Category = "Online|AdvancedVoice", meta = (WorldContext = "WorldContextObject")) UFUNCTION(BlueprintCallable, Category = "Online|AdvancedVoice")
static bool UnRegisterRemoteTalker(UObject* WorldContextObject, const FBPUniqueNetId& UniqueNetId); static bool UnRegisterRemoteTalker(const FBPUniqueNetId& UniqueNetId);
// UnRegisters all remote players as talkers // UnRegisters all remote players as talkers
UFUNCTION(BlueprintCallable, Category = "Online|AdvancedVoice", meta = (WorldContext = "WorldContextObject")) UFUNCTION(BlueprintCallable, Category = "Online|AdvancedVoice")
static void RemoveAllRemoteTalkers(UObject* WorldContextObject); static void RemoveAllRemoteTalkers();
// Returns whether a local player is currently talking // Returns whether a local player is currently talking
UFUNCTION(BlueprintPure, Category = "Online|AdvancedVoice|VoiceInfo", meta = (WorldContext = "WorldContextObject")) UFUNCTION(BlueprintPure, Category = "Online|AdvancedVoice|VoiceInfo")
static bool IsLocalPlayerTalking(UObject* WorldContextObject, uint8 LocalPlayerNum); static bool IsLocalPlayerTalking(uint8 LocalPlayerNum);
// Returns whether a remote player is currently talking // Returns whether a remote player is currently talking
UFUNCTION(BlueprintPure, Category = "Online|AdvancedVoice|VoiceInfo", meta = (WorldContext = "WorldContextObject")) UFUNCTION(BlueprintPure, Category = "Online|AdvancedVoice|VoiceInfo")
static bool IsRemotePlayerTalking(UObject* WorldContextObject, const FBPUniqueNetId& UniqueNetId); static bool IsRemotePlayerTalking(const FBPUniqueNetId& UniqueNetId);
// Returns whether a player is muted for the specified local player // Returns whether a player is muted for the specified local player
UFUNCTION(BlueprintPure, Category = "Online|AdvancedVoice|VoiceInfo", meta = (WorldContext = "WorldContextObject")) UFUNCTION(BlueprintPure, Category = "Online|AdvancedVoice|VoiceInfo")
static bool IsPlayerMuted(UObject* WorldContextObject, uint8 LocalUserNumChecking, const FBPUniqueNetId& UniqueNetId); static bool IsPlayerMuted(uint8 LocalUserNumChecking, const FBPUniqueNetId& UniqueNetId);
// Mutes the player associated with the uniquenetid for the specified local player, if IsSystemWide is true then it will attempt to mute globally for the player // Mutes the player associated with the uniquenetid for the specified local player, if IsSystemWide is true then it will attempt to mute globally for the player
UFUNCTION(BlueprintCallable, Category = "Online|AdvancedVoice", meta = (WorldContext = "WorldContextObject")) UFUNCTION(BlueprintCallable, Category = "Online|AdvancedVoice")
static bool MuteRemoteTalker(UObject* WorldContextObject, uint8 LocalUserNum, const FBPUniqueNetId& UniqueNetId, bool bIsSystemWide = false); static bool MuteRemoteTalker(uint8 LocalUserNum, const FBPUniqueNetId& UniqueNetId, bool bIsSystemWide = false);
// UnMutes the player associated with the uniquenetid for the specified local player, if IsSystemWide is true then it will attempt to unmute globally for the player // UnMutes the player associated with the uniquenetid for the specified local player, if IsSystemWide is true then it will attempt to unmute globally for the player
UFUNCTION(BlueprintCallable, Category = "Online|AdvancedVoice", meta = (WorldContext = "WorldContextObject")) UFUNCTION(BlueprintCallable, Category = "Online|AdvancedVoice")
static bool UnMuteRemoteTalker(UObject* WorldContextObject, uint8 LocalUserNum, const FBPUniqueNetId& UniqueNetId, bool bIsSystemWide = false); static bool UnMuteRemoteTalker(uint8 LocalUserNum, const FBPUniqueNetId& UniqueNetId, bool bIsSystemWide = false);
// Gets the number of local talkers for this system // Gets the number of local talkers for this system
UFUNCTION(BlueprintPure, Category = "Online|AdvancedVoice|VoiceInfo", meta = (WorldContext = "WorldContextObject")) UFUNCTION(BlueprintPure, Category = "Online|AdvancedVoice|VoiceInfo")
static void GetNumLocalTalkers(UObject* WorldContextObject, int32 & NumLocalTalkers); static void GetNumLocalTalkers(int32 & NumLocalTalkers);
}; };

View File

@@ -51,5 +51,5 @@ private:
FDelegateHandle DelegateHandle; FDelegateHandle DelegateHandle;
// The world context object in which this call is taking place // The world context object in which this call is taking place
TWeakObjectPtr<UObject> WorldContextObject; UObject* WorldContextObject;
}; };

View File

@@ -42,5 +42,5 @@ private:
FDelegateHandle DelegateHandle; FDelegateHandle DelegateHandle;
// The world context object in which this call is taking place // The world context object in which this call is taking place
TWeakObjectPtr<UObject> WorldContextObject; UObject* WorldContextObject;
}; };

View File

@@ -102,6 +102,6 @@ private:
TArray<FSessionPropertyKeyPair> ExtraSettings; TArray<FSessionPropertyKeyPair> ExtraSettings;
// The world context object in which this call is taking place // The world context object in which this call is taking place
TWeakObjectPtr<UObject> WorldContextObject; UObject* WorldContextObject;
}; };

View File

@@ -45,5 +45,5 @@ private:
FDelegateHandle DelegateHandle; FDelegateHandle DelegateHandle;
// The world context object in which this call is taking place // The world context object in which this call is taking place
TWeakObjectPtr<UObject> WorldContextObject; UObject* WorldContextObject;
}; };

View File

@@ -46,6 +46,6 @@ private:
FDelegateHandle FindFriendSessionCompleteDelegateHandle; FDelegateHandle FindFriendSessionCompleteDelegateHandle;
// The world context object in which this call is taking place // The world context object in which this call is taking place
TWeakObjectPtr<UObject> WorldContextObject; UObject* WorldContextObject;
}; };

View File

@@ -7,12 +7,6 @@
#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()));
}
UCLASS(MinimalAPI) UCLASS(MinimalAPI)
class UFindSessionsCallbackProxyAdvanced : public UOnlineBlueprintCallProxyBase class UFindSessionsCallbackProxyAdvanced : public UOnlineBlueprintCallProxyBase
{ {
@@ -105,5 +99,5 @@ private:
int MinSlotsAvailable; int MinSlotsAvailable;
// The world context object in which this call is taking place // The world context object in which this call is taking place
TWeakObjectPtr<UObject> WorldContextObject; UObject* WorldContextObject;
}; };

View File

@@ -44,6 +44,6 @@ private:
//EBPFriendsLists FriendListToGet; //EBPFriendsLists FriendListToGet;
// The world context object in which this call is taking place // The world context object in which this call is taking place
TWeakObjectPtr<UObject> WorldContextObject; UObject* WorldContextObject;
}; };

View File

@@ -44,6 +44,6 @@ private:
FOnQueryRecentPlayersCompleteDelegate QueryRecentPlayersCompleteDelegate; FOnQueryRecentPlayersCompleteDelegate QueryRecentPlayersCompleteDelegate;
// The world context object in which this call is taking place // The world context object in which this call is taking place
TWeakObjectPtr<UObject> WorldContextObject; UObject* WorldContextObject;
}; };

View File

@@ -41,5 +41,5 @@ private:
EBPUserPrivileges UserPrivilege; EBPUserPrivileges UserPrivilege;
// The world context object in which this call is taking place // The world context object in which this call is taking place
TWeakObjectPtr<UObject> WorldContextObject; UObject* WorldContextObject;
}; };

View File

@@ -51,5 +51,5 @@ private:
FDelegateHandle DelegateHandle; FDelegateHandle DelegateHandle;
// The world context object in which this call is taking place // The world context object in which this call is taking place
TWeakObjectPtr<UObject> WorldContextObject; UObject* WorldContextObject;
}; };

View File

@@ -43,5 +43,5 @@ private:
FDelegateHandle DelegateHandle; FDelegateHandle DelegateHandle;
// The world context object in which this call is taking place // The world context object in which this call is taking place
TWeakObjectPtr<UObject> WorldContextObject; UObject* WorldContextObject;
}; };

View File

@@ -44,6 +44,6 @@ private:
FOnSendInviteComplete OnSendInviteCompleteDelegate; FOnSendInviteComplete OnSendInviteCompleteDelegate;
// The world context object in which this call is taking place // The world context object in which this call is taking place
TWeakObjectPtr<UObject> WorldContextObject; UObject* WorldContextObject;
}; };

View File

@@ -25,7 +25,7 @@ class UStartSessionCallbackProxyAdvanced : public UOnlineBlueprintCallProxyBase
, meta=(BlueprintInternalUseOnly = "true", WorldContext="WorldContextObject") , meta=(BlueprintInternalUseOnly = "true", WorldContext="WorldContextObject")
, Category = "Online|AdvancedSessions" , Category = "Online|AdvancedSessions"
) )
static UStartSessionCallbackProxyAdvanced* StartAdvancedSession(UObject* WorldContextObject); static UStartSessionCallbackProxyAdvanced* StartAdvancedSession(const UObject* WorldContextObject);
// UOnlineBlueprintCallProxyBase interface // UOnlineBlueprintCallProxyBase interface
virtual void Activate() override; virtual void Activate() override;
@@ -42,5 +42,5 @@ private:
FDelegateHandle StartCompleteDelegateHandle; FDelegateHandle StartCompleteDelegateHandle;
// The world context object in which this call is taking place // The world context object in which this call is taking place
TWeakObjectPtr<UObject> WorldContextObject; const UObject* WorldContextObject;
}; };

View File

@@ -21,7 +21,7 @@ class UUpdateSessionCallbackProxyAdvanced : public UOnlineBlueprintCallProxyBase
// Creates a session with the default online subsystem with advanced optional inputs, you MUST fill in all categories or it will pass in values that you didn't want as default values // Creates a session with the default online subsystem with advanced optional inputs, you MUST fill in all categories or it will pass in values that you didn't want as default values
UFUNCTION(BlueprintCallable, meta=(BlueprintInternalUseOnly = "true", WorldContext="WorldContextObject",AutoCreateRefTerm="ExtraSettings"), Category = "Online|AdvancedSessions") UFUNCTION(BlueprintCallable, meta=(BlueprintInternalUseOnly = "true", WorldContext="WorldContextObject",AutoCreateRefTerm="ExtraSettings"), Category = "Online|AdvancedSessions")
static UUpdateSessionCallbackProxyAdvanced* UpdateSession(UObject* WorldContextObject, const TArray<FSessionPropertyKeyPair> &ExtraSettings, int32 PublicConnections = 100, int32 PrivateConnections = 0, bool bUseLAN = false, bool bAllowInvites = false, bool bAllowJoinInProgress = false, bool bRefreshOnlineData = true, bool bIsDedicatedServer = false, bool bShouldAdvertise = true); static UUpdateSessionCallbackProxyAdvanced* UpdateSession(UObject* WorldContextObject, const TArray<FSessionPropertyKeyPair> &ExtraSettings, int32 PublicConnections = 100, int32 PrivateConnections = 0, bool bUseLAN = false, bool bAllowInvites = false, bool bAllowJoinInProgress = false, bool bRefreshOnlineData = true, bool bIsDedicatedServer = false);
// UOnlineBlueprintCallProxyBase interface // UOnlineBlueprintCallProxyBase interface
virtual void Activate() override; virtual void Activate() override;
@@ -38,32 +38,30 @@ private:
FDelegateHandle OnUpdateSessionCompleteDelegateHandle; FDelegateHandle OnUpdateSessionCompleteDelegateHandle;
// Number of public connections // Number of public connections
int NumPublicConnections = 100; int NumPublicConnections;
// Number of private connections // Number of private connections
int NumPrivateConnections = 0; int NumPrivateConnections;
// Whether or not to search LAN // Whether or not to search LAN
bool bUseLAN = false; bool bUseLAN;
// Whether or not to allow invites // Whether or not to allow invites
bool bAllowInvites = true; bool bAllowInvites;
// Store extra settings // Store extra settings
TArray<FSessionPropertyKeyPair> ExtraSettings; TArray<FSessionPropertyKeyPair> ExtraSettings;
// Whether to update the online data // Whether to update the online data
bool bRefreshOnlineData = true; bool bRefreshOnlineData;
// Allow joining in progress // Allow joining in progress
bool bAllowJoinInProgress = true; bool bAllowJoinInProgress;
// Update whether this is a dedicated server or not // Update whether this is a dedicated server or not
bool bDedicatedServer = false; bool bDedicatedServer;
bool bShouldAdvertise = true;
// The world context object in which this call is taking place // The world context object in which this call is taking place
TWeakObjectPtr<UObject> WorldContextObject; UObject* WorldContextObject;
}; };

View File

@@ -6,17 +6,9 @@
//General Log //General Log
DEFINE_LOG_CATEGORY(AdvancedExternalUILog); DEFINE_LOG_CATEGORY(AdvancedExternalUILog);
void UAdvancedExternalUILibrary::ShowAccountUpgradeUI(UObject* WorldContextObject, const FBPUniqueNetId PlayerRequestingAccountUpgradeUI, EBlueprintResultSwitch &Result) void UAdvancedExternalUILibrary::ShowAccountUpgradeUI(const FBPUniqueNetId PlayerRequestingAccountUpgradeUI, EBlueprintResultSwitch &Result)
{ {
IOnlineExternalUIPtr ExternalUIInterface = Online::GetExternalUIInterface();
UWorld* const World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull);
if (!IsValid(World))
{
Result = EBlueprintResultSwitch::OnFailure;
return;
}
IOnlineExternalUIPtr ExternalUIInterface = Online::GetExternalUIInterface(World);
if (!ExternalUIInterface.IsValid()) if (!ExternalUIInterface.IsValid())
{ {
@@ -29,17 +21,10 @@ void UAdvancedExternalUILibrary::ShowAccountUpgradeUI(UObject* WorldContextObjec
Result = EBlueprintResultSwitch::OnSuccess; Result = EBlueprintResultSwitch::OnSuccess;
} }
void UAdvancedExternalUILibrary::ShowProfileUI(UObject* WorldContextObject, const FBPUniqueNetId PlayerViewingProfile, const FBPUniqueNetId PlayerToViewProfileOf, EBlueprintResultSwitch &Result) void UAdvancedExternalUILibrary::ShowProfileUI(const FBPUniqueNetId PlayerViewingProfile, const FBPUniqueNetId PlayerToViewProfileOf, EBlueprintResultSwitch &Result)
{ {
UWorld* const World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull); IOnlineExternalUIPtr ExternalUIInterface = Online::GetExternalUIInterface();
if (!IsValid(World))
{
Result = EBlueprintResultSwitch::OnFailure;
return;
}
IOnlineExternalUIPtr ExternalUIInterface = Online::GetExternalUIInterface(World);
if (!ExternalUIInterface.IsValid()) if (!ExternalUIInterface.IsValid())
{ {
@@ -54,16 +39,9 @@ void UAdvancedExternalUILibrary::ShowProfileUI(UObject* WorldContextObject, cons
void UAdvancedExternalUILibrary::ShowWebURLUI(UObject* WorldContextObject, FString URLToShow, EBlueprintResultSwitch &Result, TArray<FString>& AllowedDomains, bool bEmbedded, bool bShowBackground, bool bShowCloseButton, int32 OffsetX, int32 OffsetY, int32 SizeX, int32 SizeY) void UAdvancedExternalUILibrary::ShowWebURLUI(FString URLToShow, EBlueprintResultSwitch &Result, TArray<FString>& AllowedDomains, bool bEmbedded, bool bShowBackground, bool bShowCloseButton, int32 OffsetX, int32 OffsetY, int32 SizeX, int32 SizeY)
{ {
UWorld* const World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull); IOnlineExternalUIPtr ExternalUIInterface = Online::GetExternalUIInterface();
if (!IsValid(World))
{
Result = EBlueprintResultSwitch::OnFailure;
return;
}
IOnlineExternalUIPtr ExternalUIInterface = Online::GetExternalUIInterface(World);
if (!ExternalUIInterface.IsValid()) if (!ExternalUIInterface.IsValid())
{ {
@@ -89,15 +67,9 @@ void UAdvancedExternalUILibrary::ShowWebURLUI(UObject* WorldContextObject, FStri
Result = EBlueprintResultSwitch::OnSuccess; Result = EBlueprintResultSwitch::OnSuccess;
} }
void UAdvancedExternalUILibrary::CloseWebURLUI(UObject* WorldContextObject) void UAdvancedExternalUILibrary::CloseWebURLUI()
{ {
UWorld* const World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull); IOnlineExternalUIPtr ExternalUIInterface = Online::GetExternalUIInterface();
if (!IsValid(World))
{
return;
}
IOnlineExternalUIPtr ExternalUIInterface = Online::GetExternalUIInterface(World);
if (!ExternalUIInterface.IsValid()) if (!ExternalUIInterface.IsValid())
{ {
@@ -108,16 +80,9 @@ void UAdvancedExternalUILibrary::CloseWebURLUI(UObject* WorldContextObject)
ExternalUIInterface->CloseWebURL(); ExternalUIInterface->CloseWebURL();
} }
void UAdvancedExternalUILibrary::ShowLeaderBoardUI(UObject* WorldContextObject, FString LeaderboardName, EBlueprintResultSwitch &Result) void UAdvancedExternalUILibrary::ShowLeaderBoardUI(FString LeaderboardName, EBlueprintResultSwitch &Result)
{ {
UWorld* const World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull); IOnlineExternalUIPtr ExternalUIInterface = Online::GetExternalUIInterface();
if (!IsValid(World))
{
Result = EBlueprintResultSwitch::OnFailure;
return;
}
IOnlineExternalUIPtr ExternalUIInterface = Online::GetExternalUIInterface(World);
if (!ExternalUIInterface.IsValid()) if (!ExternalUIInterface.IsValid())
{ {
@@ -132,7 +97,7 @@ void UAdvancedExternalUILibrary::ShowLeaderBoardUI(UObject* WorldContextObject,
} }
void UAdvancedExternalUILibrary::ShowInviteUI(UObject* WorldContextObject, APlayerController *PlayerController, EBlueprintResultSwitch &Result) void UAdvancedExternalUILibrary::ShowInviteUI(APlayerController *PlayerController, EBlueprintResultSwitch &Result)
{ {
if (!PlayerController) if (!PlayerController)
{ {
@@ -141,14 +106,7 @@ void UAdvancedExternalUILibrary::ShowInviteUI(UObject* WorldContextObject, APlay
return; return;
} }
UWorld* const World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull); IOnlineExternalUIPtr ExternalUIInterface = Online::GetExternalUIInterface();
if (!IsValid(World))
{
Result = EBlueprintResultSwitch::OnFailure;
return;
}
IOnlineExternalUIPtr ExternalUIInterface = Online::GetExternalUIInterface(World);
if (!ExternalUIInterface.IsValid()) if (!ExternalUIInterface.IsValid())
{ {
@@ -170,7 +128,7 @@ void UAdvancedExternalUILibrary::ShowInviteUI(UObject* WorldContextObject, APlay
Result = EBlueprintResultSwitch::OnSuccess; Result = EBlueprintResultSwitch::OnSuccess;
} }
void UAdvancedExternalUILibrary::ShowFriendsUI(UObject* WorldContextObject, APlayerController *PlayerController, EBlueprintResultSwitch &Result) void UAdvancedExternalUILibrary::ShowFriendsUI(APlayerController *PlayerController, EBlueprintResultSwitch &Result)
{ {
if (!PlayerController) if (!PlayerController)
{ {
@@ -179,14 +137,7 @@ void UAdvancedExternalUILibrary::ShowFriendsUI(UObject* WorldContextObject, APla
return; return;
} }
UWorld* const World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull); IOnlineExternalUIPtr ExternalUIInterface = Online::GetExternalUIInterface();
if (!IsValid(World))
{
Result = EBlueprintResultSwitch::OnFailure;
return;
}
IOnlineExternalUIPtr ExternalUIInterface = Online::GetExternalUIInterface(World);
if (!ExternalUIInterface.IsValid()) if (!ExternalUIInterface.IsValid())
{ {

View File

@@ -5,7 +5,7 @@
DEFINE_LOG_CATEGORY(AdvancedIdentityLog); DEFINE_LOG_CATEGORY(AdvancedIdentityLog);
void UAdvancedIdentityLibrary::GetPlayerAuthToken(UObject* WorldContextObject, APlayerController * PlayerController, FString & AuthToken, EBlueprintResultSwitch &Result) void UAdvancedIdentityLibrary::GetPlayerAuthToken(APlayerController * PlayerController, FString & AuthToken, EBlueprintResultSwitch &Result)
{ {
if (!PlayerController) if (!PlayerController)
{ {
@@ -23,14 +23,7 @@ void UAdvancedIdentityLibrary::GetPlayerAuthToken(UObject* WorldContextObject, A
return; return;
} }
UWorld* const World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull); IOnlineIdentityPtr IdentityInterface = Online::GetIdentityInterface();
if (!IsValid(World))
{
Result = EBlueprintResultSwitch::OnFailure;
return;
}
IOnlineIdentityPtr IdentityInterface = Online::GetIdentityInterface(World);
if (!IdentityInterface.IsValid()) if (!IdentityInterface.IsValid())
{ {
@@ -43,21 +36,15 @@ void UAdvancedIdentityLibrary::GetPlayerAuthToken(UObject* WorldContextObject, A
Result = EBlueprintResultSwitch::OnSuccess; Result = EBlueprintResultSwitch::OnSuccess;
} }
void UAdvancedIdentityLibrary::GetPlayerNickname(UObject* WorldContextObject, const FBPUniqueNetId & UniqueNetID, FString & PlayerNickname) void UAdvancedIdentityLibrary::GetPlayerNickname(const FBPUniqueNetId & UniqueNetID, FString & PlayerNickname)
{ {
if (!UniqueNetID.IsValid()) if (!UniqueNetID.IsValid())
{ {
UE_LOG(AdvancedIdentityLog, Warning, TEXT("GetPlayerNickname was passed a bad player uniquenetid!")); UE_LOG(AdvancedIdentityLog, Warning, TEXT("GetPlayerNickname was passed a bad player uniquenetid!"));
return; return;
} }
UWorld* const World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull); IOnlineIdentityPtr IdentityInterface = Online::GetIdentityInterface();
if (!IsValid(World))
{
return;
}
IOnlineIdentityPtr IdentityInterface = Online::GetIdentityInterface(World);
if (!IdentityInterface.IsValid()) if (!IdentityInterface.IsValid())
{ {
@@ -68,7 +55,7 @@ void UAdvancedIdentityLibrary::GetPlayerNickname(UObject* WorldContextObject, co
} }
void UAdvancedIdentityLibrary::GetLoginStatus(UObject* WorldContextObject, const FBPUniqueNetId & UniqueNetID, EBPLoginStatus & LoginStatus, EBlueprintResultSwitch &Result) void UAdvancedIdentityLibrary::GetLoginStatus(const FBPUniqueNetId & UniqueNetID, EBPLoginStatus & LoginStatus, EBlueprintResultSwitch &Result)
{ {
if (!UniqueNetID.IsValid()) if (!UniqueNetID.IsValid())
{ {
@@ -77,14 +64,7 @@ void UAdvancedIdentityLibrary::GetLoginStatus(UObject* WorldContextObject, const
return; return;
} }
UWorld* const World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull); IOnlineIdentityPtr IdentityInterface = Online::GetIdentityInterface();
if (!IsValid(World))
{
Result = EBlueprintResultSwitch::OnFailure;
return;
}
IOnlineIdentityPtr IdentityInterface = Online::GetIdentityInterface(World);
if (!IdentityInterface.IsValid()) if (!IdentityInterface.IsValid())
{ {
@@ -98,17 +78,9 @@ void UAdvancedIdentityLibrary::GetLoginStatus(UObject* WorldContextObject, const
} }
void UAdvancedIdentityLibrary::GetAllUserAccounts(UObject* WorldContextObject, TArray<FBPUserOnlineAccount> & AccountInfos, EBlueprintResultSwitch &Result) void UAdvancedIdentityLibrary::GetAllUserAccounts(TArray<FBPUserOnlineAccount> & AccountInfos, EBlueprintResultSwitch &Result)
{ {
IOnlineIdentityPtr IdentityInterface = Online::GetIdentityInterface();
UWorld* const World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull);
if (!IsValid(World))
{
Result = EBlueprintResultSwitch::OnFailure;
return;
}
IOnlineIdentityPtr IdentityInterface = Online::GetIdentityInterface(World);
if (!IdentityInterface.IsValid()) if (!IdentityInterface.IsValid())
{ {
@@ -127,17 +99,9 @@ void UAdvancedIdentityLibrary::GetAllUserAccounts(UObject* WorldContextObject, T
Result = EBlueprintResultSwitch::OnSuccess; Result = EBlueprintResultSwitch::OnSuccess;
} }
void UAdvancedIdentityLibrary::GetUserAccount(UObject* WorldContextObject, const FBPUniqueNetId & UniqueNetId, FBPUserOnlineAccount & AccountInfo, EBlueprintResultSwitch &Result) void UAdvancedIdentityLibrary::GetUserAccount(const FBPUniqueNetId & UniqueNetId, FBPUserOnlineAccount & AccountInfo, EBlueprintResultSwitch &Result)
{ {
IOnlineIdentityPtr IdentityInterface = Online::GetIdentityInterface();
UWorld* const World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull);
if (!IsValid(World))
{
Result = EBlueprintResultSwitch::OnFailure;
return;
}
IOnlineIdentityPtr IdentityInterface = Online::GetIdentityInterface(World);
if(!UniqueNetId.IsValid()) if(!UniqueNetId.IsValid())
{ {

View File

@@ -451,6 +451,17 @@ void UAdvancedSessionsLibrary::GetUniqueNetID(APlayerController *PlayerControlle
} }
} }
void UAdvancedSessionsLibrary::GetUniqueNetIdOfSessionOwner(FBlueprintSessionResult SessionResult, FBPUniqueNetId& UniqueNetId)
{
FBPUniqueNetId ReturnID;
if (SessionResult.OnlineResult.IsValid())
{
ReturnID.SetUniqueNetId(SessionResult.OnlineResult.Session.OwningUserId);
}
UniqueNetId = ReturnID;
}
void UAdvancedSessionsLibrary::GetUniqueNetIDFromPlayerState(APlayerState *PlayerState, FBPUniqueNetId &UniqueNetId) void UAdvancedSessionsLibrary::GetUniqueNetIDFromPlayerState(APlayerState *PlayerState, FBPUniqueNetId &UniqueNetId)
{ {
if (!PlayerState) if (!PlayerState)
@@ -477,11 +488,6 @@ bool UAdvancedSessionsLibrary::EqualEqual_UNetIDUnetID(const FBPUniqueNetId &A,
return ((A.IsValid() && B.IsValid()) && (*A.GetUniqueNetId() == *B.GetUniqueNetId())); return ((A.IsValid() && B.IsValid()) && (*A.GetUniqueNetId() == *B.GetUniqueNetId()));
} }
FUniqueNetIdRepl UAdvancedSessionsLibrary::Conv_BPUniqueIDToUniqueNetIDRepl(const FBPUniqueNetId& InUniqueID)
{
return FUniqueNetIdRepl(InUniqueID.GetUniqueNetId()->AsShared());
}
void UAdvancedSessionsLibrary::SetPlayerName(APlayerController *PlayerController, FString PlayerName) void UAdvancedSessionsLibrary::SetPlayerName(APlayerController *PlayerController, FString PlayerName)
{ {
if (!PlayerController) if (!PlayerController)

View File

@@ -5,16 +5,9 @@
//General Log //General Log
DEFINE_LOG_CATEGORY(AdvancedVoiceLog); DEFINE_LOG_CATEGORY(AdvancedVoiceLog);
void UAdvancedVoiceLibrary::IsHeadsetPresent(UObject* WorldContextObject, bool & bHasHeadset, uint8 LocalPlayerNum) void UAdvancedVoiceLibrary::IsHeadsetPresent(bool & bHasHeadset, uint8 LocalPlayerNum)
{ {
IOnlineVoicePtr VoiceInterface = Online::GetVoiceInterface();
UWorld* const World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull);
if (!IsValid(World))
{
return;
}
IOnlineVoicePtr VoiceInterface = Online::GetVoiceInterface(World);
if (!VoiceInterface.IsValid()) if (!VoiceInterface.IsValid())
{ {
@@ -26,16 +19,9 @@ void UAdvancedVoiceLibrary::IsHeadsetPresent(UObject* WorldContextObject, bool &
bHasHeadset = VoiceInterface->IsHeadsetPresent(LocalPlayerNum); bHasHeadset = VoiceInterface->IsHeadsetPresent(LocalPlayerNum);
} }
void UAdvancedVoiceLibrary::StartNetworkedVoice(UObject* WorldContextObject, uint8 LocalPlayerNum) void UAdvancedVoiceLibrary::StartNetworkedVoice(uint8 LocalPlayerNum)
{ {
IOnlineVoicePtr VoiceInterface = Online::GetVoiceInterface();
UWorld* const World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull);
if (!IsValid(World))
{
return;
}
IOnlineVoicePtr VoiceInterface = Online::GetVoiceInterface(World);
if (!VoiceInterface.IsValid()) if (!VoiceInterface.IsValid())
{ {
@@ -46,16 +32,9 @@ void UAdvancedVoiceLibrary::StartNetworkedVoice(UObject* WorldContextObject, uin
VoiceInterface->StartNetworkedVoice(LocalPlayerNum); VoiceInterface->StartNetworkedVoice(LocalPlayerNum);
} }
void UAdvancedVoiceLibrary::StopNetworkedVoice(UObject* WorldContextObject, uint8 LocalPlayerNum) void UAdvancedVoiceLibrary::StopNetworkedVoice(uint8 LocalPlayerNum)
{ {
IOnlineVoicePtr VoiceInterface = Online::GetVoiceInterface();
UWorld* const World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull);
if (!IsValid(World))
{
return;
}
IOnlineVoicePtr VoiceInterface = Online::GetVoiceInterface(World);
if (!VoiceInterface.IsValid()) if (!VoiceInterface.IsValid())
{ {
@@ -66,15 +45,9 @@ void UAdvancedVoiceLibrary::StopNetworkedVoice(UObject* WorldContextObject, uint
VoiceInterface->StopNetworkedVoice(LocalPlayerNum); VoiceInterface->StopNetworkedVoice(LocalPlayerNum);
} }
bool UAdvancedVoiceLibrary::RegisterLocalTalker(UObject* WorldContextObject, uint8 LocalPlayerNum) bool UAdvancedVoiceLibrary::RegisterLocalTalker(uint8 LocalPlayerNum)
{ {
UWorld* const World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull); IOnlineVoicePtr VoiceInterface = Online::GetVoiceInterface();
if (!IsValid(World))
{
return false;
}
IOnlineVoicePtr VoiceInterface = Online::GetVoiceInterface(World);
if (!VoiceInterface.IsValid()) if (!VoiceInterface.IsValid())
{ {
@@ -85,16 +58,9 @@ bool UAdvancedVoiceLibrary::RegisterLocalTalker(UObject* WorldContextObject, uin
return VoiceInterface->RegisterLocalTalker(LocalPlayerNum); return VoiceInterface->RegisterLocalTalker(LocalPlayerNum);
} }
void UAdvancedVoiceLibrary::RegisterAllLocalTalkers(UObject* WorldContextObject) void UAdvancedVoiceLibrary::RegisterAllLocalTalkers()
{ {
IOnlineVoicePtr VoiceInterface = Online::GetVoiceInterface();
UWorld* const World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull);
if (!IsValid(World))
{
return;
}
IOnlineVoicePtr VoiceInterface = Online::GetVoiceInterface(World);
if (!VoiceInterface.IsValid()) if (!VoiceInterface.IsValid())
{ {
@@ -106,16 +72,9 @@ void UAdvancedVoiceLibrary::RegisterAllLocalTalkers(UObject* WorldContextObject)
} }
void UAdvancedVoiceLibrary::UnRegisterLocalTalker(UObject* WorldContextObject, uint8 LocalPlayerNum) void UAdvancedVoiceLibrary::UnRegisterLocalTalker(uint8 LocalPlayerNum)
{ {
IOnlineVoicePtr VoiceInterface = Online::GetVoiceInterface();
UWorld* const World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull);
if (!IsValid(World))
{
return;
}
IOnlineVoicePtr VoiceInterface = Online::GetVoiceInterface(World);
if (!VoiceInterface.IsValid()) if (!VoiceInterface.IsValid())
{ {
@@ -126,16 +85,9 @@ void UAdvancedVoiceLibrary::UnRegisterLocalTalker(UObject* WorldContextObject, u
VoiceInterface->UnregisterLocalTalker(LocalPlayerNum); VoiceInterface->UnregisterLocalTalker(LocalPlayerNum);
} }
void UAdvancedVoiceLibrary::UnRegisterAllLocalTalkers(UObject* WorldContextObject) void UAdvancedVoiceLibrary::UnRegisterAllLocalTalkers()
{ {
IOnlineVoicePtr VoiceInterface = Online::GetVoiceInterface();
UWorld* const World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull);
if (!IsValid(World))
{
return;
}
IOnlineVoicePtr VoiceInterface = Online::GetVoiceInterface(World);
if (!VoiceInterface.IsValid()) if (!VoiceInterface.IsValid())
{ {
@@ -146,7 +98,7 @@ void UAdvancedVoiceLibrary::UnRegisterAllLocalTalkers(UObject* WorldContextObjec
VoiceInterface->UnregisterLocalTalkers(); VoiceInterface->UnregisterLocalTalkers();
} }
bool UAdvancedVoiceLibrary::RegisterRemoteTalker(UObject* WorldContextObject, const FBPUniqueNetId& UniqueNetId) bool UAdvancedVoiceLibrary::RegisterRemoteTalker(const FBPUniqueNetId& UniqueNetId)
{ {
if (!UniqueNetId.IsValid()) if (!UniqueNetId.IsValid())
{ {
@@ -154,13 +106,7 @@ bool UAdvancedVoiceLibrary::RegisterRemoteTalker(UObject* WorldContextObject, co
return false; return false;
} }
UWorld* const World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull); IOnlineVoicePtr VoiceInterface = Online::GetVoiceInterface();
if (!IsValid(World))
{
return false;
}
IOnlineVoicePtr VoiceInterface = Online::GetVoiceInterface(World);
if (!VoiceInterface.IsValid()) if (!VoiceInterface.IsValid())
{ {
@@ -171,7 +117,7 @@ bool UAdvancedVoiceLibrary::RegisterRemoteTalker(UObject* WorldContextObject, co
return VoiceInterface->RegisterRemoteTalker(*UniqueNetId.GetUniqueNetId()); return VoiceInterface->RegisterRemoteTalker(*UniqueNetId.GetUniqueNetId());
} }
bool UAdvancedVoiceLibrary::UnRegisterRemoteTalker(UObject* WorldContextObject, const FBPUniqueNetId& UniqueNetId) bool UAdvancedVoiceLibrary::UnRegisterRemoteTalker(const FBPUniqueNetId& UniqueNetId)
{ {
if (!UniqueNetId.IsValid()) if (!UniqueNetId.IsValid())
{ {
@@ -179,13 +125,7 @@ bool UAdvancedVoiceLibrary::UnRegisterRemoteTalker(UObject* WorldContextObject,
return false; return false;
} }
UWorld* const World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull); IOnlineVoicePtr VoiceInterface = Online::GetVoiceInterface();
if (!IsValid(World))
{
return false;
}
IOnlineVoicePtr VoiceInterface = Online::GetVoiceInterface(World);
if (!VoiceInterface.IsValid()) if (!VoiceInterface.IsValid())
{ {
@@ -196,16 +136,9 @@ bool UAdvancedVoiceLibrary::UnRegisterRemoteTalker(UObject* WorldContextObject,
return VoiceInterface->UnregisterRemoteTalker(*UniqueNetId.GetUniqueNetId()); return VoiceInterface->UnregisterRemoteTalker(*UniqueNetId.GetUniqueNetId());
} }
void UAdvancedVoiceLibrary::RemoveAllRemoteTalkers(UObject* WorldContextObject) void UAdvancedVoiceLibrary::RemoveAllRemoteTalkers()
{ {
IOnlineVoicePtr VoiceInterface = Online::GetVoiceInterface();
UWorld* const World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull);
if (!IsValid(World))
{
return;
}
IOnlineVoicePtr VoiceInterface = Online::GetVoiceInterface(World);
if (!VoiceInterface.IsValid()) if (!VoiceInterface.IsValid())
{ {
@@ -216,16 +149,9 @@ void UAdvancedVoiceLibrary::RemoveAllRemoteTalkers(UObject* WorldContextObject)
VoiceInterface->RemoveAllRemoteTalkers(); VoiceInterface->RemoveAllRemoteTalkers();
} }
bool UAdvancedVoiceLibrary::IsLocalPlayerTalking(UObject* WorldContextObject, uint8 LocalPlayerNum) bool UAdvancedVoiceLibrary::IsLocalPlayerTalking(uint8 LocalPlayerNum)
{ {
IOnlineVoicePtr VoiceInterface = Online::GetVoiceInterface();
UWorld* const World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull);
if (!IsValid(World))
{
return false;
}
IOnlineVoicePtr VoiceInterface = Online::GetVoiceInterface(World);
if (!VoiceInterface.IsValid()) if (!VoiceInterface.IsValid())
{ {
@@ -236,7 +162,7 @@ bool UAdvancedVoiceLibrary::IsLocalPlayerTalking(UObject* WorldContextObject, ui
return VoiceInterface->IsLocalPlayerTalking(LocalPlayerNum); return VoiceInterface->IsLocalPlayerTalking(LocalPlayerNum);
} }
bool UAdvancedVoiceLibrary::IsRemotePlayerTalking(UObject* WorldContextObject, const FBPUniqueNetId& UniqueNetId) bool UAdvancedVoiceLibrary::IsRemotePlayerTalking(const FBPUniqueNetId& UniqueNetId)
{ {
if (!UniqueNetId.IsValid()) if (!UniqueNetId.IsValid())
{ {
@@ -244,13 +170,7 @@ bool UAdvancedVoiceLibrary::IsRemotePlayerTalking(UObject* WorldContextObject, c
return false; return false;
} }
UWorld* const World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull); IOnlineVoicePtr VoiceInterface = Online::GetVoiceInterface();
if (!IsValid(World))
{
return false;
}
IOnlineVoicePtr VoiceInterface = Online::GetVoiceInterface(World);
if (!VoiceInterface.IsValid()) if (!VoiceInterface.IsValid())
{ {
@@ -261,7 +181,7 @@ bool UAdvancedVoiceLibrary::IsRemotePlayerTalking(UObject* WorldContextObject, c
return VoiceInterface->IsRemotePlayerTalking(*UniqueNetId.GetUniqueNetId()); return VoiceInterface->IsRemotePlayerTalking(*UniqueNetId.GetUniqueNetId());
} }
bool UAdvancedVoiceLibrary::IsPlayerMuted(UObject* WorldContextObject, uint8 LocalUserNumChecking, const FBPUniqueNetId& UniqueNetId) bool UAdvancedVoiceLibrary::IsPlayerMuted(uint8 LocalUserNumChecking, const FBPUniqueNetId& UniqueNetId)
{ {
if (!UniqueNetId.IsValid()) if (!UniqueNetId.IsValid())
{ {
@@ -269,13 +189,7 @@ bool UAdvancedVoiceLibrary::IsPlayerMuted(UObject* WorldContextObject, uint8 Loc
return false; return false;
} }
UWorld* const World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull); IOnlineVoicePtr VoiceInterface = Online::GetVoiceInterface();
if (!IsValid(World))
{
return false;
}
IOnlineVoicePtr VoiceInterface = Online::GetVoiceInterface(World);
if (!VoiceInterface.IsValid()) if (!VoiceInterface.IsValid())
{ {
@@ -286,7 +200,7 @@ bool UAdvancedVoiceLibrary::IsPlayerMuted(UObject* WorldContextObject, uint8 Loc
return VoiceInterface->IsMuted(LocalUserNumChecking, *UniqueNetId.GetUniqueNetId()); return VoiceInterface->IsMuted(LocalUserNumChecking, *UniqueNetId.GetUniqueNetId());
} }
bool UAdvancedVoiceLibrary::MuteRemoteTalker(UObject* WorldContextObject, uint8 LocalUserNum, const FBPUniqueNetId& UniqueNetId, bool bIsSystemWide) bool UAdvancedVoiceLibrary::MuteRemoteTalker(uint8 LocalUserNum, const FBPUniqueNetId& UniqueNetId, bool bIsSystemWide)
{ {
if (!UniqueNetId.IsValid()) if (!UniqueNetId.IsValid())
{ {
@@ -294,13 +208,7 @@ bool UAdvancedVoiceLibrary::MuteRemoteTalker(UObject* WorldContextObject, uint8
return false; return false;
} }
UWorld* const World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull); IOnlineVoicePtr VoiceInterface = Online::GetVoiceInterface();
if (!IsValid(World))
{
return false;
}
IOnlineVoicePtr VoiceInterface = Online::GetVoiceInterface(World);
if (!VoiceInterface.IsValid()) if (!VoiceInterface.IsValid())
{ {
@@ -311,7 +219,7 @@ bool UAdvancedVoiceLibrary::MuteRemoteTalker(UObject* WorldContextObject, uint8
return VoiceInterface->MuteRemoteTalker(LocalUserNum, *UniqueNetId.GetUniqueNetId(), bIsSystemWide); return VoiceInterface->MuteRemoteTalker(LocalUserNum, *UniqueNetId.GetUniqueNetId(), bIsSystemWide);
} }
bool UAdvancedVoiceLibrary::UnMuteRemoteTalker(UObject* WorldContextObject, uint8 LocalUserNum, const FBPUniqueNetId& UniqueNetId, bool bIsSystemWide) bool UAdvancedVoiceLibrary::UnMuteRemoteTalker(uint8 LocalUserNum, const FBPUniqueNetId& UniqueNetId, bool bIsSystemWide)
{ {
if (!UniqueNetId.IsValid()) if (!UniqueNetId.IsValid())
{ {
@@ -319,13 +227,7 @@ bool UAdvancedVoiceLibrary::UnMuteRemoteTalker(UObject* WorldContextObject, uint
return false; return false;
} }
UWorld* const World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull); IOnlineVoicePtr VoiceInterface = Online::GetVoiceInterface();
if (!IsValid(World))
{
return false;
}
IOnlineVoicePtr VoiceInterface = Online::GetVoiceInterface(World);
if (!VoiceInterface.IsValid()) if (!VoiceInterface.IsValid())
{ {
@@ -337,16 +239,9 @@ bool UAdvancedVoiceLibrary::UnMuteRemoteTalker(UObject* WorldContextObject, uint
} }
void UAdvancedVoiceLibrary::GetNumLocalTalkers(UObject* WorldContextObject, int32 & NumLocalTalkers) void UAdvancedVoiceLibrary::GetNumLocalTalkers(int32 & NumLocalTalkers)
{ {
IOnlineVoicePtr VoiceInterface = Online::GetVoiceInterface();
UWorld* const World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull);
if (!IsValid(World))
{
return;
}
IOnlineVoicePtr VoiceInterface = Online::GetVoiceInterface(World);
if (!VoiceInterface.IsValid()) if (!VoiceInterface.IsValid())
{ {

View File

@@ -3,8 +3,6 @@
#include "AutoLoginUserCallbackProxy.h" #include "AutoLoginUserCallbackProxy.h"
#include "Kismet/GameplayStatics.h" #include "Kismet/GameplayStatics.h"
#include "Online.h"
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// ULoginUserCallbackProxy // ULoginUserCallbackProxy
@@ -24,19 +22,13 @@ UAutoLoginUserCallbackProxy* UAutoLoginUserCallbackProxy::AutoLoginUser(UObject*
void UAutoLoginUserCallbackProxy::Activate() void UAutoLoginUserCallbackProxy::Activate()
{ {
auto Identity = Online::GetIdentityInterface();
FOnlineSubsystemBPCallHelperAdvanced Helper(TEXT("AutoLoginUser"), GEngine->GetWorldFromContextObject(WorldContextObject.Get(), EGetWorldErrorMode::LogAndReturnNull)); if (Identity.IsValid())
if (Helper.OnlineSub != nullptr)
{ {
auto Identity = Helper.OnlineSub->GetIdentityInterface(); DelegateHandle = Identity->AddOnLoginCompleteDelegate_Handle(LocalUserNumber, Delegate);
Identity->AutoLogin(LocalUserNumber);
if (Identity.IsValid()) return;
{
DelegateHandle = Identity->AddOnLoginCompleteDelegate_Handle(LocalUserNumber, Delegate);
Identity->AutoLogin(LocalUserNumber);
return;
}
} }
// Fail immediately // Fail immediately
@@ -45,45 +37,38 @@ void UAutoLoginUserCallbackProxy::Activate()
void UAutoLoginUserCallbackProxy::OnCompleted(int32 LocalUserNum, bool bWasSuccessful, const FUniqueNetId& UserId, const FString& ErrorVal) void UAutoLoginUserCallbackProxy::OnCompleted(int32 LocalUserNum, bool bWasSuccessful, const FUniqueNetId& UserId, const FString& ErrorVal)
{ {
FOnlineSubsystemBPCallHelperAdvanced Helper(TEXT("AutoLoginUser"), GEngine->GetWorldFromContextObject(WorldContextObject.Get(), EGetWorldErrorMode::LogAndReturnNull)); auto Identity = Online::GetIdentityInterface();
if (Helper.OnlineSub != nullptr) if (Identity.IsValid())
{ {
auto Identity = Helper.OnlineSub->GetIdentityInterface(); Identity->ClearOnLoginCompleteDelegate_Handle(LocalUserNum, DelegateHandle);
}
if (Identity.IsValid()) if(APlayerController* PController = UGameplayStatics::GetPlayerController(WorldContextObject->GetWorld(), LocalUserNum))
{
ULocalPlayer* Player = Cast<ULocalPlayer>(PController->Player);
FUniqueNetIdRepl uniqueId(UserId.AsShared());
if (Player)
{ {
Identity->ClearOnLoginCompleteDelegate_Handle(LocalUserNum, DelegateHandle); Player->SetCachedUniqueNetId(uniqueId);
} }
if (APlayerController* PController = UGameplayStatics::GetPlayerController(WorldContextObject->GetWorld(), LocalUserNum)) if (APlayerState* State = PController->PlayerState)
{ {
ULocalPlayer* Player = Cast<ULocalPlayer>(PController->Player); // Update UniqueId. See also ShowLoginUICallbackProxy.cpp
State->SetUniqueId(uniqueId);
FUniqueNetIdRepl uniqueId(UserId.AsShared());
if (Player)
{
Player->SetCachedUniqueNetId(uniqueId);
}
if (APlayerState* State = PController->PlayerState)
{
// Update UniqueId. See also ShowLoginUICallbackProxy.cpp
State->SetUniqueId(uniqueId);
}
}
if (bWasSuccessful)
{
OnSuccess.Broadcast();
}
else
{
OnFailure.Broadcast();
} }
} }
OnFailure.Broadcast();
if (bWasSuccessful)
{
OnSuccess.Broadcast();
}
else
{
OnFailure.Broadcast();
}
} }

View File

@@ -21,7 +21,7 @@ UCancelFindSessionsCallbackProxy* UCancelFindSessionsCallbackProxy::CancelFindSe
void UCancelFindSessionsCallbackProxy::Activate() void UCancelFindSessionsCallbackProxy::Activate()
{ {
FOnlineSubsystemBPCallHelperAdvanced Helper(TEXT("CancelFindSessions"), GEngine->GetWorldFromContextObject(WorldContextObject.Get(), EGetWorldErrorMode::LogAndReturnNull)); FOnlineSubsystemBPCallHelperAdvanced Helper(TEXT("CancelFindSessions"), GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull));
Helper.QueryIDFromPlayerController(PlayerControllerWeakPtr.Get()); Helper.QueryIDFromPlayerController(PlayerControllerWeakPtr.Get());
if (Helper.IsValid()) if (Helper.IsValid())
@@ -47,7 +47,7 @@ void UCancelFindSessionsCallbackProxy::Activate()
void UCancelFindSessionsCallbackProxy::OnCompleted(bool bWasSuccessful) void UCancelFindSessionsCallbackProxy::OnCompleted(bool bWasSuccessful)
{ {
FOnlineSubsystemBPCallHelperAdvanced Helper(TEXT("CancelFindSessionsCallback"), GEngine->GetWorldFromContextObject(WorldContextObject.Get(), EGetWorldErrorMode::LogAndReturnNull)); FOnlineSubsystemBPCallHelperAdvanced Helper(TEXT("CancelFindSessionsCallback"), GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull));
Helper.QueryIDFromPlayerController(PlayerControllerWeakPtr.Get()); Helper.QueryIDFromPlayerController(PlayerControllerWeakPtr.Get());
if (Helper.IsValid()) if (Helper.IsValid())

View File

@@ -38,7 +38,7 @@ UCreateSessionCallbackProxyAdvanced* UCreateSessionCallbackProxyAdvanced::Create
void UCreateSessionCallbackProxyAdvanced::Activate() void UCreateSessionCallbackProxyAdvanced::Activate()
{ {
FOnlineSubsystemBPCallHelperAdvanced Helper(TEXT("CreateSession"), GEngine->GetWorldFromContextObject(WorldContextObject.Get(), EGetWorldErrorMode::LogAndReturnNull)); FOnlineSubsystemBPCallHelperAdvanced Helper(TEXT("CreateSession"), GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull));
if (PlayerControllerWeakPtr.IsValid() ) if (PlayerControllerWeakPtr.IsValid() )
Helper.QueryIDFromPlayerController(PlayerControllerWeakPtr.Get()); Helper.QueryIDFromPlayerController(PlayerControllerWeakPtr.Get());
@@ -121,7 +121,7 @@ void UCreateSessionCallbackProxyAdvanced::Activate()
void UCreateSessionCallbackProxyAdvanced::OnCreateCompleted(FName SessionName, bool bWasSuccessful) void UCreateSessionCallbackProxyAdvanced::OnCreateCompleted(FName SessionName, bool bWasSuccessful)
{ {
FOnlineSubsystemBPCallHelperAdvanced Helper(TEXT("CreateSessionCallback"), GEngine->GetWorldFromContextObject(WorldContextObject.Get(), EGetWorldErrorMode::LogAndReturnNull)); FOnlineSubsystemBPCallHelperAdvanced Helper(TEXT("CreateSessionCallback"), GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull));
//Helper.QueryIDFromPlayerController(PlayerControllerWeakPtr.Get()); //Helper.QueryIDFromPlayerController(PlayerControllerWeakPtr.Get());
if (Helper.OnlineSub != nullptr) if (Helper.OnlineSub != nullptr)
@@ -159,7 +159,7 @@ void UCreateSessionCallbackProxyAdvanced::OnCreateCompleted(FName SessionName, b
void UCreateSessionCallbackProxyAdvanced::OnStartCompleted(FName SessionName, bool bWasSuccessful) void UCreateSessionCallbackProxyAdvanced::OnStartCompleted(FName SessionName, bool bWasSuccessful)
{ {
FOnlineSubsystemBPCallHelperAdvanced Helper(TEXT("StartSessionCallback"), GEngine->GetWorldFromContextObject(WorldContextObject.Get(), EGetWorldErrorMode::LogAndReturnNull)); FOnlineSubsystemBPCallHelperAdvanced Helper(TEXT("StartSessionCallback"), GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull));
//Helper.QueryIDFromPlayerController(PlayerControllerWeakPtr.Get()); //Helper.QueryIDFromPlayerController(PlayerControllerWeakPtr.Get());
if (Helper.OnlineSub != nullptr) if (Helper.OnlineSub != nullptr)

View File

@@ -21,7 +21,7 @@ UEndSessionCallbackProxy* UEndSessionCallbackProxy::EndSession(UObject* WorldCon
void UEndSessionCallbackProxy::Activate() void UEndSessionCallbackProxy::Activate()
{ {
FOnlineSubsystemBPCallHelperAdvanced Helper(TEXT("EndSession"), GEngine->GetWorldFromContextObject(WorldContextObject.Get(), EGetWorldErrorMode::LogAndReturnNull)); FOnlineSubsystemBPCallHelperAdvanced Helper(TEXT("EndSession"), GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull));
Helper.QueryIDFromPlayerController(PlayerControllerWeakPtr.Get()); Helper.QueryIDFromPlayerController(PlayerControllerWeakPtr.Get());
if (Helper.IsValid()) if (Helper.IsValid())
@@ -55,7 +55,7 @@ void UEndSessionCallbackProxy::Activate()
void UEndSessionCallbackProxy::OnCompleted(FName SessionName, bool bWasSuccessful) void UEndSessionCallbackProxy::OnCompleted(FName SessionName, bool bWasSuccessful)
{ {
FOnlineSubsystemBPCallHelperAdvanced Helper(TEXT("EndSessionCallback"), GEngine->GetWorldFromContextObject(WorldContextObject.Get(), EGetWorldErrorMode::LogAndReturnNull)); FOnlineSubsystemBPCallHelperAdvanced Helper(TEXT("EndSessionCallback"), GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull));
Helper.QueryIDFromPlayerController(PlayerControllerWeakPtr.Get()); Helper.QueryIDFromPlayerController(PlayerControllerWeakPtr.Get());
if (Helper.IsValid()) if (Helper.IsValid())

View File

@@ -41,18 +41,7 @@ void UFindFriendSessionCallbackProxy::Activate()
return; return;
} }
FOnlineSubsystemBPCallHelperAdvanced Helper(TEXT("EndSessionCallback"), GEngine->GetWorldFromContextObject(WorldContextObject.Get(), EGetWorldErrorMode::LogAndReturnNull)); IOnlineSessionPtr Sessions = Online::GetSessionInterface(GetWorld());
Helper.QueryIDFromPlayerController(PlayerControllerWeakPtr.Get());
if (!Helper.IsValid())
{
// Fail immediately
TArray<FBlueprintSessionResult> EmptyResult;
OnFailure.Broadcast(EmptyResult);
return;
}
IOnlineSessionPtr Sessions = Helper.OnlineSub->GetSessionInterface();
if (Sessions.IsValid()) if (Sessions.IsValid())
{ {
@@ -82,43 +71,31 @@ void UFindFriendSessionCallbackProxy::Activate()
void UFindFriendSessionCallbackProxy::OnFindFriendSessionCompleted(int32 LocalPlayer, bool bWasSuccessful, const TArray<FOnlineSessionSearchResult>& SessionInfo) void UFindFriendSessionCallbackProxy::OnFindFriendSessionCompleted(int32 LocalPlayer, bool bWasSuccessful, const TArray<FOnlineSessionSearchResult>& SessionInfo)
{ {
FOnlineSubsystemBPCallHelperAdvanced Helper(TEXT("EndSessionCallback"), GEngine->GetWorldFromContextObject(WorldContextObject.Get(), EGetWorldErrorMode::LogAndReturnNull)); IOnlineSessionPtr Sessions = Online::GetSessionInterface(GetWorld());
Helper.QueryIDFromPlayerController(PlayerControllerWeakPtr.Get());
if (Helper.IsValid()) if (Sessions.IsValid())
{ Sessions->ClearOnFindFriendSessionCompleteDelegate_Handle(LocalPlayer, FindFriendSessionCompleteDelegateHandle);
IOnlineSessionPtr Sessions = Helper.OnlineSub->GetSessionInterface();
if (Sessions.IsValid()) if ( bWasSuccessful )
Sessions->ClearOnFindFriendSessionCompleteDelegate_Handle(LocalPlayer, FindFriendSessionCompleteDelegateHandle); {
TArray<FBlueprintSessionResult> Result;
if (bWasSuccessful) for (auto& Sesh : SessionInfo)
{ {
TArray<FBlueprintSessionResult> Result; if (Sesh.IsValid())
for (auto& Sesh : SessionInfo)
{ {
if (Sesh.IsValid()) FBlueprintSessionResult BSesh;
{ BSesh.OnlineResult = Sesh;
FBlueprintSessionResult BSesh; Result.Add(BSesh);
BSesh.OnlineResult = Sesh;
Result.Add(BSesh);
}
}
if (Result.Num() > 0)
OnSuccess.Broadcast(Result);
else
{
UE_LOG(AdvancedFindFriendSessionLog, Warning, TEXT("FindFriendSession Failed, returned an invalid session."));
OnFailure.Broadcast(Result);
} }
} }
if(Result.Num() > 0)
OnSuccess.Broadcast(Result);
else else
{ {
UE_LOG(AdvancedFindFriendSessionLog, Warning, TEXT("FindFriendSession Failed")); UE_LOG(AdvancedFindFriendSessionLog, Warning, TEXT("FindFriendSession Failed, returned an invalid session."));
TArray<FBlueprintSessionResult> EmptyResult; OnFailure.Broadcast(Result);
OnFailure.Broadcast(EmptyResult);
} }
} }
else else

View File

@@ -1,7 +1,6 @@
// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved. // Copyright 1998-2015 Epic Games, Inc. All Rights Reserved.
#include "FindSessionsCallbackProxyAdvanced.h" #include "FindSessionsCallbackProxyAdvanced.h"
#include "Online/OnlineSessionNames.h"
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// UFindSessionsCallbackProxyAdvanced // UFindSessionsCallbackProxyAdvanced
@@ -35,7 +34,7 @@ UFindSessionsCallbackProxyAdvanced* UFindSessionsCallbackProxyAdvanced::FindSess
void UFindSessionsCallbackProxyAdvanced::Activate() void UFindSessionsCallbackProxyAdvanced::Activate()
{ {
FOnlineSubsystemBPCallHelperAdvanced Helper(TEXT("FindSessions"), GEngine->GetWorldFromContextObject(WorldContextObject.Get(), EGetWorldErrorMode::LogAndReturnNull)); FOnlineSubsystemBPCallHelperAdvanced Helper(TEXT("FindSessions"), GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull));
Helper.QueryIDFromPlayerController(PlayerControllerWeakPtr.Get()); Helper.QueryIDFromPlayerController(PlayerControllerWeakPtr.Get());
if (Helper.IsValid()) if (Helper.IsValid())
@@ -115,8 +114,8 @@ void UFindSessionsCallbackProxyAdvanced::Activate()
case EBPServerPresenceSearchType::ClientServersOnly: case EBPServerPresenceSearchType::ClientServersOnly:
{ {
tem.Set(SEARCH_PRESENCE, true, EOnlineComparisonOp::Equals); tem.Set(SEARCH_PRESENCE, true, EOnlineComparisonOp::Equals);
if (bSearchLobbies && !IOnlineSubsystem::DoesInstanceExist("STEAM")) if (bSearchLobbies)
tem.Set(SEARCH_LOBBIES, true, EOnlineComparisonOp::Equals); tem.Set(SEARCH_LOBBIES, true, EOnlineComparisonOp::Equals);
} }
break; break;
@@ -142,7 +141,7 @@ void UFindSessionsCallbackProxyAdvanced::Activate()
tem.Set(SEARCH_PRESENCE, true, EOnlineComparisonOp::Equals); tem.Set(SEARCH_PRESENCE, true, EOnlineComparisonOp::Equals);
if (bSearchLobbies && !IOnlineSubsystem::DoesInstanceExist("STEAM")) if (bSearchLobbies)
tem.Set(SEARCH_LOBBIES, true, EOnlineComparisonOp::Equals); tem.Set(SEARCH_LOBBIES, true, EOnlineComparisonOp::Equals);
//DedicatedOnly.Set(SEARCH_DEDICATED_ONLY, true, EOnlineComparisonOp::Equals); //DedicatedOnly.Set(SEARCH_DEDICATED_ONLY, true, EOnlineComparisonOp::Equals);
@@ -172,16 +171,9 @@ void UFindSessionsCallbackProxyAdvanced::Activate()
void UFindSessionsCallbackProxyAdvanced::OnCompleted(bool bSuccess) void UFindSessionsCallbackProxyAdvanced::OnCompleted(bool bSuccess)
{ {
FOnlineSubsystemBPCallHelperAdvanced Helper(TEXT("FindSessionsCallback"), GEngine->GetWorldFromContextObject(WorldContextObject.Get(), EGetWorldErrorMode::LogAndReturnNull)); FOnlineSubsystemBPCallHelperAdvanced Helper(TEXT("FindSessionsCallback"), GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull));
Helper.QueryIDFromPlayerController(PlayerControllerWeakPtr.Get()); Helper.QueryIDFromPlayerController(PlayerControllerWeakPtr.Get());
if (!Helper.IsValid())
{
// Fail immediately
OnFailure.Broadcast(SessionSearchResults);
return;
}
if (!bRunSecondSearch && Helper.IsValid()) if (!bRunSecondSearch && Helper.IsValid())
{ {
auto Sessions = Helper.OnlineSub->GetSessionInterface(); auto Sessions = Helper.OnlineSub->GetSessionInterface();
@@ -206,7 +198,7 @@ void UFindSessionsCallbackProxyAdvanced::OnCompleted(bool bSuccess)
FBlueprintSessionResult BPResult; FBlueprintSessionResult BPResult;
BPResult.OnlineResult = Result; BPResult.OnlineResult = Result;
SessionSearchResults.AddUnique(BPResult); SessionSearchResults.Add(BPResult);
} }
OnSuccess.Broadcast(SessionSearchResults); OnSuccess.Broadcast(SessionSearchResults);
return; return;
@@ -225,7 +217,7 @@ void UFindSessionsCallbackProxyAdvanced::OnCompleted(bool bSuccess)
FBlueprintSessionResult BPResult; FBlueprintSessionResult BPResult;
BPResult.OnlineResult = Result; BPResult.OnlineResult = Result;
SessionSearchResults.AddUnique(BPResult); SessionSearchResults.Add(BPResult);
} }
if (!bRunSecondSearch) if (!bRunSecondSearch)
{ {

View File

@@ -1,9 +1,6 @@
// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved. // Copyright 1998-2015 Epic Games, Inc. All Rights Reserved.
#include "GetFriendsCallbackProxy.h" #include "GetFriendsCallbackProxy.h"
#include "Online.h"
#include "Interfaces/OnlineFriendsInterface.h"
#include "Interfaces/OnlinePresenceInterface.h"
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// UGetFriendsCallbackProxy // UGetFriendsCallbackProxy
@@ -34,23 +31,18 @@ void UGetFriendsCallbackProxy::Activate()
return; return;
} }
FOnlineSubsystemBPCallHelperAdvanced Helper(TEXT("GetFriends"), GEngine->GetWorldFromContextObject(WorldContextObject.Get(), EGetWorldErrorMode::LogAndReturnNull)); IOnlineFriendsPtr Friends = Online::GetFriendsInterface();
Helper.QueryIDFromPlayerController(PlayerControllerWeakPtr.Get()); if (Friends.IsValid())
{
ULocalPlayer* Player = Cast<ULocalPlayer>(PlayerControllerWeakPtr->Player);
if (Helper.IsValid()) Friends->ReadFriendsList(Player->GetControllerId(), EFriendsLists::ToString((EFriendsLists::Default)), FriendListReadCompleteDelegate);
{ return;
IOnlineFriendsPtr Friends = Helper.OnlineSub->GetFriendsInterface();
if (Friends.IsValid())
{
ULocalPlayer* Player = Cast<ULocalPlayer>(PlayerControllerWeakPtr->Player);
Friends->ReadFriendsList(Player->GetControllerId(), EFriendsLists::ToString((EFriendsLists::Default)), FriendListReadCompleteDelegate);
return;
}
} }
// Fail immediately // Fail immediately
TArray<FBPFriendInfo> EmptyArray; TArray<FBPFriendInfo> EmptyArray;
OnFailure.Broadcast(EmptyArray); OnFailure.Broadcast(EmptyArray);
} }
@@ -58,17 +50,7 @@ void UGetFriendsCallbackProxy::OnReadFriendsListCompleted(int32 LocalUserNum, bo
{ {
if (bWasSuccessful) if (bWasSuccessful)
{ {
FOnlineSubsystemBPCallHelperAdvanced Helper(TEXT("GetFriends"), GEngine->GetWorldFromContextObject(WorldContextObject.Get(), EGetWorldErrorMode::LogAndReturnNull)); IOnlineFriendsPtr Friends = Online::GetFriendsInterface();
Helper.QueryIDFromPlayerController(PlayerControllerWeakPtr.Get());
if (!Helper.IsValid())
{
TArray<FBPFriendInfo> EmptyArray;
OnFailure.Broadcast(EmptyArray);
return;
}
auto Friends = Helper.OnlineSub->GetFriendsInterface();
if (Friends.IsValid()) if (Friends.IsValid())
{ {
// Not actually needed anymore, plus was not being validated and causing a crash // Not actually needed anymore, plus was not being validated and causing a crash

View File

@@ -1,7 +1,6 @@
// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved. // Copyright 1998-2015 Epic Games, Inc. All Rights Reserved.
#include "GetRecentPlayersCallbackProxy.h" #include "GetRecentPlayersCallbackProxy.h"
#include "Online.h"
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// UGetRecentPlayersCallbackProxy // UGetRecentPlayersCallbackProxy
@@ -32,16 +31,7 @@ void UGetRecentPlayersCallbackProxy::Activate()
return; return;
} }
FOnlineSubsystemBPCallHelperAdvanced Helper(TEXT("GetRecentPlayers"), GEngine->GetWorldFromContextObject(WorldContextObject.Get(), EGetWorldErrorMode::LogAndReturnNull)); IOnlineFriendsPtr Friends = Online::GetFriendsInterface();
if (!Helper.OnlineSub)
{
TArray<FBPOnlineRecentPlayer> EmptyArray;
OnFailure.Broadcast(EmptyArray);
return;
}
IOnlineFriendsPtr Friends = Helper.OnlineSub->GetFriendsInterface();
if (Friends.IsValid()) if (Friends.IsValid())
{ {
DelegateHandle = Friends->AddOnQueryRecentPlayersCompleteDelegate_Handle(QueryRecentPlayersCompleteDelegate); DelegateHandle = Friends->AddOnQueryRecentPlayersCompleteDelegate_Handle(QueryRecentPlayersCompleteDelegate);
@@ -58,16 +48,7 @@ void UGetRecentPlayersCallbackProxy::Activate()
void UGetRecentPlayersCallbackProxy::OnQueryRecentPlayersCompleted(const FUniqueNetId &UserID, const FString &Namespace, bool bWasSuccessful, const FString& ErrorString) void UGetRecentPlayersCallbackProxy::OnQueryRecentPlayersCompleted(const FUniqueNetId &UserID, const FString &Namespace, bool bWasSuccessful, const FString& ErrorString)
{ {
FOnlineSubsystemBPCallHelperAdvanced Helper(TEXT("GetRecentPlayers"), GEngine->GetWorldFromContextObject(WorldContextObject.Get(), EGetWorldErrorMode::LogAndReturnNull)); IOnlineFriendsPtr Friends = Online::GetFriendsInterface();
if (!Helper.OnlineSub)
{
TArray<FBPOnlineRecentPlayer> EmptyArray;
OnFailure.Broadcast(EmptyArray);
return;
}
IOnlineFriendsPtr Friends = Helper.OnlineSub->GetFriendsInterface();
if (Friends.IsValid()) if (Friends.IsValid())
Friends->ClearOnQueryRecentPlayersCompleteDelegate_Handle(DelegateHandle); Friends->ClearOnQueryRecentPlayersCompleteDelegate_Handle(DelegateHandle);

View File

@@ -2,7 +2,6 @@
#include "GetUserPrivilegeCallbackProxy.h" #include "GetUserPrivilegeCallbackProxy.h"
#include "Online.h"
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// UGetUserPrivilegeCallbackProxy // UGetUserPrivilegeCallbackProxy
@@ -23,14 +22,7 @@ UGetUserPrivilegeCallbackProxy* UGetUserPrivilegeCallbackProxy::GetUserPrivilege
void UGetUserPrivilegeCallbackProxy::Activate() void UGetUserPrivilegeCallbackProxy::Activate()
{ {
FOnlineSubsystemBPCallHelperAdvanced Helper(TEXT("GetUserPrivilege"), GEngine->GetWorldFromContextObject(WorldContextObject.Get(), EGetWorldErrorMode::LogAndReturnNull)); auto Identity = Online::GetIdentityInterface();
if (!Helper.OnlineSub)
{
OnFailure.Broadcast();
return;
}
auto Identity = Helper.OnlineSub->GetIdentityInterface();
if (Identity.IsValid()) if (Identity.IsValid())
{ {

View File

@@ -2,7 +2,6 @@
#include "LoginUserCallbackProxy.h" #include "LoginUserCallbackProxy.h"
#include "Online.h"
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// ULoginUserCallbackProxy // ULoginUserCallbackProxy
@@ -41,15 +40,8 @@ void ULoginUserCallbackProxy::Activate()
return; return;
} }
FOnlineSubsystemBPCallHelperAdvanced Helper(TEXT("LoginUser"), GEngine->GetWorldFromContextObject(WorldContextObject.Get(), EGetWorldErrorMode::LogAndReturnNull)); auto Identity = Online::GetIdentityInterface();
if (!Helper.OnlineSub)
{
OnFailure.Broadcast();
return;
}
auto Identity = Helper.OnlineSub->GetIdentityInterface();
if (Identity.IsValid()) if (Identity.IsValid())
{ {
// Fallback to default AuthType if nothing is specified // Fallback to default AuthType if nothing is specified
@@ -77,15 +69,8 @@ void ULoginUserCallbackProxy::OnCompleted(int32 LocalUserNum, bool bWasSuccessfu
if (Player) if (Player)
{ {
FOnlineSubsystemBPCallHelperAdvanced Helper(TEXT("GetUserPrivilege"), GEngine->GetWorldFromContextObject(WorldContextObject.Get(), EGetWorldErrorMode::LogAndReturnNull)); auto Identity = Online::GetIdentityInterface();
if (!Helper.OnlineSub)
{
OnFailure.Broadcast();
return;
}
auto Identity = Helper.OnlineSub->GetIdentityInterface();
if (Identity.IsValid()) if (Identity.IsValid())
{ {
Identity->ClearOnLoginCompleteDelegate_Handle(Player->GetControllerId(), DelegateHandle); Identity->ClearOnLoginCompleteDelegate_Handle(Player->GetControllerId(), DelegateHandle);

View File

@@ -2,7 +2,6 @@
#include "LogoutUserCallbackProxy.h" #include "LogoutUserCallbackProxy.h"
#include "Online.h"
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// ULogoutUserCallbackProxy // ULogoutUserCallbackProxy
@@ -30,6 +29,7 @@ void ULogoutUserCallbackProxy::Activate()
return; return;
} }
ULocalPlayer* Player = Cast<ULocalPlayer>(PlayerControllerWeakPtr->Player); ULocalPlayer* Player = Cast<ULocalPlayer>(PlayerControllerWeakPtr->Player);
if (!Player) if (!Player)
@@ -38,14 +38,7 @@ void ULogoutUserCallbackProxy::Activate()
return; return;
} }
FOnlineSubsystemBPCallHelperAdvanced Helper(TEXT("LogoutUser"), GEngine->GetWorldFromContextObject(WorldContextObject.Get(), EGetWorldErrorMode::LogAndReturnNull)); auto Identity = Online::GetIdentityInterface();
if (!Helper.OnlineSub)
{
OnFailure.Broadcast();
return;
}
auto Identity = Helper.OnlineSub->GetIdentityInterface();
if (Identity.IsValid()) if (Identity.IsValid())
{ {
@@ -67,14 +60,7 @@ void ULogoutUserCallbackProxy::OnCompleted(int LocalUserNum, bool bWasSuccessful
if (Player) if (Player)
{ {
FOnlineSubsystemBPCallHelperAdvanced Helper(TEXT("LogoutUser"), GEngine->GetWorldFromContextObject(WorldContextObject.Get(), EGetWorldErrorMode::LogAndReturnNull)); auto Identity = Online::GetIdentityInterface();
if (!Helper.OnlineSub)
{
OnFailure.Broadcast();
return;
}
auto Identity = Helper.OnlineSub->GetIdentityInterface();
if (Identity.IsValid()) if (Identity.IsValid())
{ {

View File

@@ -1,7 +1,6 @@
// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved. // Copyright 1998-2015 Epic Games, Inc. All Rights Reserved.
#include "SendFriendInviteCallbackProxy.h" #include "SendFriendInviteCallbackProxy.h"
#include "Online.h"
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// UGetRecentPlayersCallbackProxy // UGetRecentPlayersCallbackProxy
@@ -40,15 +39,7 @@ void USendFriendInviteCallbackProxy::Activate()
return; return;
} }
FOnlineSubsystemBPCallHelperAdvanced Helper(TEXT("SendFriendInvite"), GEngine->GetWorldFromContextObject(WorldContextObject.Get(), EGetWorldErrorMode::LogAndReturnNull)); IOnlineFriendsPtr Friends = Online::GetFriendsInterface();
if (!Helper.OnlineSub)
{
OnFailure.Broadcast();
return;
}
auto Friends = Helper.OnlineSub->GetFriendsInterface();
if (Friends.IsValid()) if (Friends.IsValid())
{ {
ULocalPlayer* Player = Cast<ULocalPlayer>(PlayerControllerWeakPtr->Player); ULocalPlayer* Player = Cast<ULocalPlayer>(PlayerControllerWeakPtr->Player);

View File

@@ -7,7 +7,7 @@ UStartSessionCallbackProxyAdvanced::UStartSessionCallbackProxyAdvanced(const FOb
} }
UStartSessionCallbackProxyAdvanced* UStartSessionCallbackProxyAdvanced::StartAdvancedSession( UStartSessionCallbackProxyAdvanced* UStartSessionCallbackProxyAdvanced::StartAdvancedSession(
UObject* WorldContextObject) const UObject* WorldContextObject)
{ {
UStartSessionCallbackProxyAdvanced* Proxy = NewObject<UStartSessionCallbackProxyAdvanced>(); UStartSessionCallbackProxyAdvanced* Proxy = NewObject<UStartSessionCallbackProxyAdvanced>();
Proxy->WorldContextObject = WorldContextObject; Proxy->WorldContextObject = WorldContextObject;
@@ -16,7 +16,9 @@ UStartSessionCallbackProxyAdvanced* UStartSessionCallbackProxyAdvanced::StartAdv
void UStartSessionCallbackProxyAdvanced::Activate() void UStartSessionCallbackProxyAdvanced::Activate()
{ {
const FOnlineSubsystemBPCallHelperAdvanced Helper(TEXT("StartSession"), GEngine->GetWorldFromContextObject(WorldContextObject.Get(), EGetWorldErrorMode::LogAndReturnNull)); const FOnlineSubsystemBPCallHelperAdvanced Helper(
TEXT("StartSession"),
GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull));
if (Helper.OnlineSub != nullptr) if (Helper.OnlineSub != nullptr)
{ {
@@ -36,11 +38,13 @@ void UStartSessionCallbackProxyAdvanced::Activate()
void UStartSessionCallbackProxyAdvanced::OnStartCompleted(FName SessionName, bool bWasSuccessful) void UStartSessionCallbackProxyAdvanced::OnStartCompleted(FName SessionName, bool bWasSuccessful)
{ {
FOnlineSubsystemBPCallHelperAdvanced Helper(TEXT("StartSessionCallback"), GEngine->GetWorldFromContextObject(WorldContextObject.Get(), EGetWorldErrorMode::LogAndReturnNull)); const FOnlineSubsystemBPCallHelperAdvanced Helper(
TEXT("StartSessionCallback"),
GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull));
if (Helper.OnlineSub != nullptr) if (Helper.OnlineSub != nullptr)
{ {
auto Sessions = Helper.OnlineSub->GetSessionInterface(); const auto Sessions = Helper.OnlineSub->GetSessionInterface();
if (Sessions.IsValid()) if (Sessions.IsValid())
{ {
Sessions->ClearOnStartSessionCompleteDelegate_Handle(StartCompleteDelegateHandle); Sessions->ClearOnStartSessionCompleteDelegate_Handle(StartCompleteDelegateHandle);

View File

@@ -12,7 +12,7 @@ UUpdateSessionCallbackProxyAdvanced::UUpdateSessionCallbackProxyAdvanced(const F
{ {
} }
UUpdateSessionCallbackProxyAdvanced* UUpdateSessionCallbackProxyAdvanced::UpdateSession(UObject* WorldContextObject, const TArray<FSessionPropertyKeyPair> &ExtraSettings, int32 PublicConnections, int32 PrivateConnections, bool bUseLAN, bool bAllowInvites, bool bAllowJoinInProgress, bool bRefreshOnlineData, bool bIsDedicatedServer, bool bShouldAdvertise) UUpdateSessionCallbackProxyAdvanced* UUpdateSessionCallbackProxyAdvanced::UpdateSession(UObject* WorldContextObject, const TArray<FSessionPropertyKeyPair> &ExtraSettings, int32 PublicConnections, int32 PrivateConnections, bool bUseLAN, bool bAllowInvites, bool bAllowJoinInProgress, bool bRefreshOnlineData, bool bIsDedicatedServer)
{ {
UUpdateSessionCallbackProxyAdvanced* Proxy = NewObject<UUpdateSessionCallbackProxyAdvanced>(); UUpdateSessionCallbackProxyAdvanced* Proxy = NewObject<UUpdateSessionCallbackProxyAdvanced>();
Proxy->NumPublicConnections = PublicConnections; Proxy->NumPublicConnections = PublicConnections;
@@ -24,13 +24,12 @@ UUpdateSessionCallbackProxyAdvanced* UUpdateSessionCallbackProxyAdvanced::Update
Proxy->bRefreshOnlineData = bRefreshOnlineData; Proxy->bRefreshOnlineData = bRefreshOnlineData;
Proxy->bAllowJoinInProgress = bAllowJoinInProgress; Proxy->bAllowJoinInProgress = bAllowJoinInProgress;
Proxy->bDedicatedServer = bIsDedicatedServer; Proxy->bDedicatedServer = bIsDedicatedServer;
Proxy->bShouldAdvertise = bShouldAdvertise;
return Proxy; return Proxy;
} }
void UUpdateSessionCallbackProxyAdvanced::Activate() void UUpdateSessionCallbackProxyAdvanced::Activate()
{ {
const FOnlineSubsystemBPCallHelperAdvanced Helper(TEXT("UpdateSession"), GEngine->GetWorldFromContextObject(WorldContextObject.Get(), EGetWorldErrorMode::LogAndReturnNull)); const FOnlineSubsystemBPCallHelperAdvanced Helper(TEXT("UpdateSession"), GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull));
if (Helper.OnlineSub != nullptr) if (Helper.OnlineSub != nullptr)
{ {
@@ -61,7 +60,7 @@ void UUpdateSessionCallbackProxyAdvanced::Activate()
//Settings->BuildUniqueId = GetBuildUniqueId(); //Settings->BuildUniqueId = GetBuildUniqueId();
Settings->NumPublicConnections = NumPublicConnections; Settings->NumPublicConnections = NumPublicConnections;
Settings->NumPrivateConnections = NumPrivateConnections; Settings->NumPrivateConnections = NumPrivateConnections;
Settings->bShouldAdvertise = bShouldAdvertise; //Settings->bShouldAdvertise = true;
Settings->bAllowJoinInProgress = bAllowJoinInProgress; Settings->bAllowJoinInProgress = bAllowJoinInProgress;
Settings->bIsLANMatch = bUseLAN; Settings->bIsLANMatch = bUseLAN;
//Settings->bUsesPresence = true; //Settings->bUsesPresence = true;
@@ -105,7 +104,7 @@ void UUpdateSessionCallbackProxyAdvanced::Activate()
void UUpdateSessionCallbackProxyAdvanced::OnUpdateCompleted(FName SessionName, bool bWasSuccessful) void UUpdateSessionCallbackProxyAdvanced::OnUpdateCompleted(FName SessionName, bool bWasSuccessful)
{ {
const FOnlineSubsystemBPCallHelperAdvanced Helper(TEXT("UpdateSessionCallback"), GEngine->GetWorldFromContextObject(WorldContextObject.Get(), EGetWorldErrorMode::LogAndReturnNull)); const FOnlineSubsystemBPCallHelperAdvanced Helper(TEXT("UpdateSessionCallback"), GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull));
if (Helper.OnlineSub != nullptr) if (Helper.OnlineSub != nullptr)
{ {

View File

@@ -2,8 +2,8 @@
"FileVersion" : 3, "FileVersion" : 3,
"FriendlyName" : "Advanced Steam Sessions", "FriendlyName" : "Advanced Steam Sessions",
"Version" : 5.1, "Version" : 5.0,
"VersionName": "5.1", "VersionName": "5.0",
"Description" : "Adds new blueprint functions to handle more advanced session operations in Steam. REQUIRES ADVANCED SESSIONS", "Description" : "Adds new blueprint functions to handle more advanced session operations in Steam. REQUIRES ADVANCED SESSIONS",
"Category" : "Advanced Sessions Plugin", "Category" : "Advanced Sessions Plugin",
"CreatedBy" : "Joshua Statzer", "CreatedBy" : "Joshua Statzer",
@@ -11,11 +11,11 @@
"Modules" : "Modules" :
[ [
{ {
"Name": "AdvancedSteamSessions", "Name" : "AdvancedSteamSessions",
"Type": "RunTime", "Type" : "RunTime",
"LoadingPhase": "Default" "LoadingPhase" : "PreDefault"
} }
], ],
"Plugins": [ "Plugins": [
{ {
@@ -30,6 +30,10 @@
"Name": "OnlineSubsystemUtils", "Name": "OnlineSubsystemUtils",
"Enabled": true "Enabled": true
}, },
{
"Name": "OnlineSubsystemSteam",
"Enabled": true
},
{ {
"Name": "SteamShared", "Name": "SteamShared",
"Enabled": true "Enabled": true

View File

@@ -15,8 +15,8 @@ public class AdvancedSteamSessions : ModuleRules
if ((Target.Platform == UnrealTargetPlatform.Win64) || (Target.Platform == UnrealTargetPlatform.Linux) || (Target.Platform == UnrealTargetPlatform.Mac)) if ((Target.Platform == UnrealTargetPlatform.Win64) || (Target.Platform == UnrealTargetPlatform.Linux) || (Target.Platform == UnrealTargetPlatform.Mac))
{ {
PublicDependencyModuleNames.AddRange(new string[] { "SteamShared", "Steamworks"/*, "OnlineSubsystemSteam"*/ }); PublicDependencyModuleNames.AddRange(new string[] { "Steamworks",/*"Voice",*/ "OnlineSubsystemSteam" });
//PublicIncludePaths.AddRange(new string[] { "../Plugins/Online/OnlineSubsystemSteam/Source/Private" });// This is dumb but it isn't very open PublicIncludePaths.AddRange(new string[] { "../Plugins/Online/OnlineSubsystemSteam/Source/Private" });// This is dumb but it isn't very open
} }
} }
} }

View File

@@ -25,7 +25,7 @@
#pragma warning(disable:4265) // SteamAPI CCallback< specifically, this warning is off by default but 4.17 turned it on.... #pragma warning(disable:4265) // SteamAPI CCallback< specifically, this warning is off by default but 4.17 turned it on....
#endif #endif
#if STEAM_SDK_INSTALLED && (PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX) #if PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX
#pragma push_macro("ARRAY_COUNT") #pragma push_macro("ARRAY_COUNT")
#undef ARRAY_COUNT #undef ARRAY_COUNT
@@ -194,10 +194,11 @@ public:
} }
} }
/** Needed for TMap::GetTypeHash() */
virtual uint32 GetTypeHash() const override friend uint32 GetTypeHash(const FUniqueNetIdSteam2& A)
{ {
return ::GetTypeHash(UniqueNetId); return GetTypeHash(A.UniqueNetId);
//return (uint32)(A.UniqueNetId) + ((uint32)((A.UniqueNetId) >> 32) * 23);
} }
/** Convenience cast to CSteamID */ /** Convenience cast to CSteamID */
@@ -267,15 +268,12 @@ enum class ESteamUserOverlayType : uint8
/*Opens the overlay in minimal mode prompting the user to accept an incoming friend invite.*/ /*Opens the overlay in minimal mode prompting the user to accept an incoming friend invite.*/
friendrequestaccept, friendrequestaccept,
/*Opens the overlay in minimal mode prompting the user to ignore an incoming friend invite.*/ /*Opens the overlay in minimal mode prompting the user to ignore an incoming friend invite.*/
friendrequestignore, friendrequestignore
/*Opens the invite overlay, invitations sent from this dialog will be for the provided lobby*/
invitetolobby
}; };
static FString EnumToString(const FString& enumName, uint8 value) static FString EnumToString(const FString& enumName, uint8 value)
{ {
const UEnum* EnumPtr = FindObject<UEnum>(ANY_PACKAGE, *enumName, true);
const UEnum* EnumPtr = FindFirstObject<UEnum>(*enumName, EFindFirstObjectOptions::None, ELogVerbosity::Warning, TEXT("EumtoString"));
if (!EnumPtr) if (!EnumPtr)
return FString(); return FString();

View File

@@ -6,7 +6,7 @@
#include "Kismet/BlueprintFunctionLibrary.h" #include "Kismet/BlueprintFunctionLibrary.h"
#include "Online.h" #include "Online.h"
#include "OnlineSubsystem.h" #include "OnlineSubsystem.h"
#if STEAM_SDK_INSTALLED && (PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX) #if PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX
#include "steam/isteamugc.h" #include "steam/isteamugc.h"
#include "steam/isteamremotestorage.h" #include "steam/isteamremotestorage.h"
#endif #endif
@@ -21,7 +21,7 @@
#pragma warning(disable:4265) // SteamAPI CCallback< specifically, this warning is off by default but 4.17 turned it on.... #pragma warning(disable:4265) // SteamAPI CCallback< specifically, this warning is off by default but 4.17 turned it on....
#endif #endif
#if STEAM_SDK_INSTALLED && (PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX) #if PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX
#pragma push_macro("ARRAY_COUNT") #pragma push_macro("ARRAY_COUNT")
#undef ARRAY_COUNT #undef ARRAY_COUNT
@@ -223,7 +223,7 @@ public:
bTagsTruncated = false; bTagsTruncated = false;
} }
#if STEAM_SDK_INSTALLED && (PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX) #if PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX
FBPSteamWorkshopItemDetails(SteamUGCDetails_t &hUGCDetails) FBPSteamWorkshopItemDetails(SteamUGCDetails_t &hUGCDetails)
{ {
ResultOfRequest = (FBPSteamResult)hUGCDetails.m_eResult; ResultOfRequest = (FBPSteamResult)hUGCDetails.m_eResult;

View File

@@ -1,87 +0,0 @@
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "Subsystems/GameInstanceSubsystem.h"
#if STEAM_SDK_INSTALLED && (PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX)
#include <steam/steam_api.h>
#endif
#include "SteamNotificationsSubsystem.generated.h"
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnSteamOverlayActivated, bool, bOverlayState);
UCLASS()
class ADVANCEDSTEAMSESSIONS_API USteamNotificationsSubsystem : public UGameInstanceSubsystem
{
GENERATED_BODY()
public:
// Event thrown when the steam overlay switches states
UPROPERTY(BlueprintAssignable, Category = "SteamEvents")
FOnSteamOverlayActivated OnSteamOverlayActivated_Bind;
USteamNotificationsSubsystem() : Super()
{
}
class cSteamEventsStore
{
public:
USteamNotificationsSubsystem* ParentSubsystem = nullptr;
void Initialize(USteamNotificationsSubsystem* MyParent)
{
ParentSubsystem = MyParent;
}
#if STEAM_SDK_INSTALLED && (PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX)
cSteamEventsStore() :
OnExternalUITriggeredCallback(this, &cSteamEventsStore::OnExternalUITriggered)
{
}
#else
//cSteamEventsStore()
//{
//}
#endif
//~cSteamEventsStore(){}
private:
#if STEAM_SDK_INSTALLED && (PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX)
STEAM_CALLBACK(cSteamEventsStore, OnExternalUITriggered, GameOverlayActivated_t, OnExternalUITriggeredCallback);
#endif
};
cSteamEventsStore MyEvents;
/** Implement this for initialization of instances of the system */
virtual void Initialize(FSubsystemCollectionBase& Collection) override
{
MyEvents.Initialize(this);
}
/** Implement this for deinitialization of instances of the system */
virtual void Deinitialize() override
{
}
};
#if STEAM_SDK_INSTALLED && (PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX)
void USteamNotificationsSubsystem::cSteamEventsStore::OnExternalUITriggered(GameOverlayActivated_t* CallbackData)
{
if (ParentSubsystem)
{
ParentSubsystem->OnSteamOverlayActivated_Bind.Broadcast((bool)CallbackData->m_bActive);
}
}
#endif

View File

@@ -15,9 +15,9 @@
#pragma warning(disable:4265) // SteamAPI CCallback< specifically, this warning is off by default but 4.17 turned it on.... #pragma warning(disable:4265) // SteamAPI CCallback< specifically, this warning is off by default but 4.17 turned it on....
#endif #endif
#if STEAM_SDK_INSTALLED && (PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX) #if PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX
//#include "OnlineSubsystemSteam.h" #include "OnlineSubsystemSteam.h"
#pragma push_macro("ARRAY_COUNT") #pragma push_macro("ARRAY_COUNT")
#undef ARRAY_COUNT #undef ARRAY_COUNT
@@ -87,7 +87,7 @@ class USteamRequestGroupOfficersCallbackProxy : public UOnlineBlueprintCallProxy
private: private:
#if STEAM_SDK_INSTALLED && (PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX) #if PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX
void OnRequestGroupOfficerDetails( ClanOfficerListResponse_t *pResult, bool bIOFailure); void OnRequestGroupOfficerDetails( ClanOfficerListResponse_t *pResult, bool bIOFailure);
CCallResult<USteamRequestGroupOfficersCallbackProxy, ClanOfficerListResponse_t> m_callResultGroupOfficerRequestDetails; CCallResult<USteamRequestGroupOfficersCallbackProxy, ClanOfficerListResponse_t> m_callResultGroupOfficerRequestDetails;

View File

@@ -16,9 +16,9 @@
#pragma warning(disable:4265) // SteamAPI CCallback< specifically, this warning is off by default but 4.17 turned it on.... #pragma warning(disable:4265) // SteamAPI CCallback< specifically, this warning is off by default but 4.17 turned it on....
#endif #endif
#if STEAM_SDK_INSTALLED && (PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX) #if PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX
//#include "OnlineSubsystemSteam.h" #include "OnlineSubsystemSteam.h"
#pragma push_macro("ARRAY_COUNT") #pragma push_macro("ARRAY_COUNT")
#undef ARRAY_COUNT #undef ARRAY_COUNT
@@ -72,7 +72,7 @@ class USteamWSRequestUGCDetailsCallbackProxy : public UOnlineBlueprintCallProxyB
private: private:
#if STEAM_SDK_INSTALLED && (PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX) #if PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX
// Internal callback when the operation completes, calls out to the public success/failure callbacks // Internal callback when the operation completes, calls out to the public success/failure callbacks
void OnUGCRequestUGCDetails(SteamUGCQueryCompleted_t *pResult, bool bIOFailure); void OnUGCRequestUGCDetails(SteamUGCQueryCompleted_t *pResult, bool bIOFailure);

View File

@@ -10,7 +10,7 @@ DEFINE_LOG_CATEGORY(AdvancedSteamFriendsLog);
/*int32 UAdvancedSteamFriendsLibrary::GetFriendSteamLevel(const FBPUniqueNetId UniqueNetId) /*int32 UAdvancedSteamFriendsLibrary::GetFriendSteamLevel(const FBPUniqueNetId UniqueNetId)
{ {
#if STEAM_SDK_INSTALLED && (PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX) #if PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX
if (!UniqueNetId.IsValid() || !UniqueNetId.UniqueNetId->IsValid() || UniqueNetId.UniqueNetId->GetType() != STEAM_SUBSYSTEM) if (!UniqueNetId.IsValid() || !UniqueNetId.UniqueNetId->IsValid() || UniqueNetId.UniqueNetId->GetType() != STEAM_SUBSYSTEM)
{ {
UE_LOG(AdvancedSteamFriendsLog, Warning, TEXT("IsAFriend Had a bad UniqueNetId!")); UE_LOG(AdvancedSteamFriendsLog, Warning, TEXT("IsAFriend Had a bad UniqueNetId!"));
@@ -59,7 +59,7 @@ DEFINE_LOG_CATEGORY(AdvancedSteamFriendsLog);
void UAdvancedSteamFriendsLibrary::GetSteamGroups(TArray<FBPSteamGroupInfo> & SteamGroups) void UAdvancedSteamFriendsLibrary::GetSteamGroups(TArray<FBPSteamGroupInfo> & SteamGroups)
{ {
#if STEAM_SDK_INSTALLED && (PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX) #if PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX
if (SteamAPI_Init()) if (SteamAPI_Init())
{ {
@@ -90,7 +90,7 @@ void UAdvancedSteamFriendsLibrary::GetSteamGroups(TArray<FBPSteamGroupInfo> & St
void UAdvancedSteamFriendsLibrary::GetSteamFriendGamePlayed(const FBPUniqueNetId UniqueNetId, EBlueprintResultSwitch &Result/*, FString & GameName*/, int32 & AppID) void UAdvancedSteamFriendsLibrary::GetSteamFriendGamePlayed(const FBPUniqueNetId UniqueNetId, EBlueprintResultSwitch &Result/*, FString & GameName*/, int32 & AppID)
{ {
#if STEAM_SDK_INSTALLED && (PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX) #if PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX
if (!UniqueNetId.IsValid() || !UniqueNetId.UniqueNetId->IsValid() || UniqueNetId.UniqueNetId->GetType() != STEAM_SUBSYSTEM) if (!UniqueNetId.IsValid() || !UniqueNetId.UniqueNetId->IsValid() || UniqueNetId.UniqueNetId->GetType() != STEAM_SUBSYSTEM)
{ {
UE_LOG(AdvancedSteamFriendsLog, Warning, TEXT("GetSteamFriendGamePlayed Had a bad UniqueNetId!")); UE_LOG(AdvancedSteamFriendsLog, Warning, TEXT("GetSteamFriendGamePlayed Had a bad UniqueNetId!"));
@@ -132,7 +132,7 @@ void UAdvancedSteamFriendsLibrary::GetSteamFriendGamePlayed(const FBPUniqueNetId
int32 UAdvancedSteamFriendsLibrary::GetFriendSteamLevel(const FBPUniqueNetId UniqueNetId) int32 UAdvancedSteamFriendsLibrary::GetFriendSteamLevel(const FBPUniqueNetId UniqueNetId)
{ {
#if STEAM_SDK_INSTALLED && (PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX) #if PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX
if (!UniqueNetId.IsValid() || !UniqueNetId.UniqueNetId->IsValid() || UniqueNetId.UniqueNetId->GetType() != STEAM_SUBSYSTEM) if (!UniqueNetId.IsValid() || !UniqueNetId.UniqueNetId->IsValid() || UniqueNetId.UniqueNetId->GetType() != STEAM_SUBSYSTEM)
{ {
UE_LOG(AdvancedSteamFriendsLog, Warning, TEXT("IsAFriend Had a bad UniqueNetId!")); UE_LOG(AdvancedSteamFriendsLog, Warning, TEXT("IsAFriend Had a bad UniqueNetId!"));
@@ -153,7 +153,7 @@ int32 UAdvancedSteamFriendsLibrary::GetFriendSteamLevel(const FBPUniqueNetId Uni
FString UAdvancedSteamFriendsLibrary::GetSteamPersonaName(const FBPUniqueNetId UniqueNetId) FString UAdvancedSteamFriendsLibrary::GetSteamPersonaName(const FBPUniqueNetId UniqueNetId)
{ {
#if STEAM_SDK_INSTALLED && (PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX) #if PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX
if (!UniqueNetId.IsValid() || !UniqueNetId.UniqueNetId->IsValid() || UniqueNetId.UniqueNetId->GetType() != STEAM_SUBSYSTEM) if (!UniqueNetId.IsValid() || !UniqueNetId.UniqueNetId->IsValid() || UniqueNetId.UniqueNetId->GetType() != STEAM_SUBSYSTEM)
{ {
UE_LOG(AdvancedSteamFriendsLog, Warning, TEXT("GetSteamPersonaName Had a bad UniqueNetId!")); UE_LOG(AdvancedSteamFriendsLog, Warning, TEXT("GetSteamPersonaName Had a bad UniqueNetId!"));
@@ -175,7 +175,7 @@ FBPUniqueNetId UAdvancedSteamFriendsLibrary::CreateSteamIDFromString(const FStri
{ {
FBPUniqueNetId netId; FBPUniqueNetId netId;
#if STEAM_SDK_INSTALLED && (PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX) #if PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX
if (!(SteamID64.Len() > 0)) if (!(SteamID64.Len() > 0))
{ {
UE_LOG(AdvancedSteamFriendsLog, Warning, TEXT("CreateSteamIDFromString Had a bad UniqueNetId!")); UE_LOG(AdvancedSteamFriendsLog, Warning, TEXT("CreateSteamIDFromString Had a bad UniqueNetId!"));
@@ -200,7 +200,7 @@ FBPUniqueNetId UAdvancedSteamFriendsLibrary::GetLocalSteamIDFromSteam()
{ {
FBPUniqueNetId netId; FBPUniqueNetId netId;
#if STEAM_SDK_INSTALLED && (PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX) #if PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX
if (SteamAPI_Init()) if (SteamAPI_Init())
{ {
TSharedPtr<const FUniqueNetId> SteamID(new const FUniqueNetIdSteam2(SteamUser()->GetSteamID())); TSharedPtr<const FUniqueNetId> SteamID(new const FUniqueNetIdSteam2(SteamUser()->GetSteamID()));
@@ -213,7 +213,7 @@ FBPUniqueNetId UAdvancedSteamFriendsLibrary::GetLocalSteamIDFromSteam()
bool UAdvancedSteamFriendsLibrary::RequestSteamFriendInfo(const FBPUniqueNetId UniqueNetId, bool bRequireNameOnly) bool UAdvancedSteamFriendsLibrary::RequestSteamFriendInfo(const FBPUniqueNetId UniqueNetId, bool bRequireNameOnly)
{ {
#if STEAM_SDK_INSTALLED && (PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX) #if PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX
if (!UniqueNetId.IsValid() || !UniqueNetId.UniqueNetId->IsValid() || UniqueNetId.UniqueNetId->GetType() != STEAM_SUBSYSTEM) if (!UniqueNetId.IsValid() || !UniqueNetId.UniqueNetId->IsValid() || UniqueNetId.UniqueNetId->GetType() != STEAM_SUBSYSTEM)
{ {
UE_LOG(AdvancedSteamFriendsLog, Warning, TEXT("RequestSteamFriendInfo Had a bad UniqueNetId!")); UE_LOG(AdvancedSteamFriendsLog, Warning, TEXT("RequestSteamFriendInfo Had a bad UniqueNetId!"));
@@ -235,7 +235,7 @@ bool UAdvancedSteamFriendsLibrary::RequestSteamFriendInfo(const FBPUniqueNetId U
bool UAdvancedSteamFriendsLibrary::OpenSteamUserOverlay(const FBPUniqueNetId UniqueNetId, ESteamUserOverlayType DialogType) bool UAdvancedSteamFriendsLibrary::OpenSteamUserOverlay(const FBPUniqueNetId UniqueNetId, ESteamUserOverlayType DialogType)
{ {
#if STEAM_SDK_INSTALLED && (PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX) #if PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX
if (!UniqueNetId.IsValid() || !UniqueNetId.UniqueNetId->IsValid() || UniqueNetId.UniqueNetId->GetType() != STEAM_SUBSYSTEM) if (!UniqueNetId.IsValid() || !UniqueNetId.UniqueNetId->IsValid() || UniqueNetId.UniqueNetId->GetType() != STEAM_SUBSYSTEM)
{ {
UE_LOG(AdvancedSteamFriendsLog, Warning, TEXT("OpenSteamUserOverlay Had a bad UniqueNetId!")); UE_LOG(AdvancedSteamFriendsLog, Warning, TEXT("OpenSteamUserOverlay Had a bad UniqueNetId!"));
@@ -245,15 +245,8 @@ bool UAdvancedSteamFriendsLibrary::OpenSteamUserOverlay(const FBPUniqueNetId Uni
if (SteamAPI_Init()) if (SteamAPI_Init())
{ {
uint64 id = *((uint64*)UniqueNetId.UniqueNetId->GetBytes()); uint64 id = *((uint64*)UniqueNetId.UniqueNetId->GetBytes());
if (DialogType == ESteamUserOverlayType::invitetolobby) FString DialogName = EnumToString("ESteamUserOverlayType", (uint8)DialogType);
{ SteamFriends()->ActivateGameOverlayToUser(TCHAR_TO_ANSI(*DialogName), id);
SteamFriends()->ActivateGameOverlayInviteDialog(id);
}
else
{
FString DialogName = EnumToString("ESteamUserOverlayType", (uint8)DialogType);
SteamFriends()->ActivateGameOverlayToUser(TCHAR_TO_ANSI(*DialogName), id);
}
return true; return true;
} }
#endif #endif
@@ -264,7 +257,7 @@ bool UAdvancedSteamFriendsLibrary::OpenSteamUserOverlay(const FBPUniqueNetId Uni
bool UAdvancedSteamFriendsLibrary::IsOverlayEnabled() bool UAdvancedSteamFriendsLibrary::IsOverlayEnabled()
{ {
#if STEAM_SDK_INSTALLED && (PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX) #if PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX
if (SteamAPI_Init()) if (SteamAPI_Init())
{ {
return SteamUtils()->IsOverlayEnabled(); return SteamUtils()->IsOverlayEnabled();
@@ -277,7 +270,7 @@ bool UAdvancedSteamFriendsLibrary::IsOverlayEnabled()
UTexture2D * UAdvancedSteamFriendsLibrary::GetSteamFriendAvatar(const FBPUniqueNetId UniqueNetId, EBlueprintAsyncResultSwitch &Result, SteamAvatarSize AvatarSize) UTexture2D * UAdvancedSteamFriendsLibrary::GetSteamFriendAvatar(const FBPUniqueNetId UniqueNetId, EBlueprintAsyncResultSwitch &Result, SteamAvatarSize AvatarSize)
{ {
#if STEAM_SDK_INSTALLED && (PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX) #if PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX
if (!UniqueNetId.IsValid() || !UniqueNetId.UniqueNetId->IsValid() || UniqueNetId.UniqueNetId->GetType() != STEAM_SUBSYSTEM) if (!UniqueNetId.IsValid() || !UniqueNetId.UniqueNetId->IsValid() || UniqueNetId.UniqueNetId->GetType() != STEAM_SUBSYSTEM)
{ {
UE_LOG(AdvancedSteamFriendsLog, Warning, TEXT("GetSteamFriendAvatar Had a bad UniqueNetId!")); UE_LOG(AdvancedSteamFriendsLog, Warning, TEXT("GetSteamFriendAvatar Had a bad UniqueNetId!"));
@@ -346,15 +339,16 @@ UTexture2D * UAdvancedSteamFriendsLibrary::GetSteamFriendAvatar(const FBPUniqueN
FMemory::Memcpy(MipData, (void*)oAvatarRGBA, Height * Width * 4); FMemory::Memcpy(MipData, (void*)oAvatarRGBA, Height * Width * 4);
PlatformData->Mips[0].BulkData.Unlock(); PlatformData->Mips[0].BulkData.Unlock();
// Original implementation was missing this!!
// the hell man......
delete[] oAvatarRGBA;
//Setting some Parameters for the Texture and finally returning it //Setting some Parameters for the Texture and finally returning it
PlatformData->SetNumSlices(1); PlatformData->SetNumSlices(1);
Avatar->NeverStream = true; Avatar->NeverStream = true;
//Avatar->CompressionSettings = TC_EditorIcon; //Avatar->CompressionSettings = TC_EditorIcon;
} }
// Free RGBA buffer regardless of whether it was used or not
delete[] oAvatarRGBA;
Avatar->UpdateResource(); Avatar->UpdateResource();
Result = EBlueprintAsyncResultSwitch::OnSuccess; Result = EBlueprintAsyncResultSwitch::OnSuccess;
@@ -377,7 +371,7 @@ UTexture2D * UAdvancedSteamFriendsLibrary::GetSteamFriendAvatar(const FBPUniqueN
bool UAdvancedSteamFriendsLibrary::InitTextFiltering() bool UAdvancedSteamFriendsLibrary::InitTextFiltering()
{ {
#if STEAM_SDK_INSTALLED && (PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX) #if PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX
if (SteamAPI_Init()) if (SteamAPI_Init())
{ {
@@ -391,7 +385,7 @@ bool UAdvancedSteamFriendsLibrary::InitTextFiltering()
bool UAdvancedSteamFriendsLibrary::FilterText(FString TextToFilter, EBPTextFilteringContext Context, const FBPUniqueNetId TextSourceID, FString& FilteredText) bool UAdvancedSteamFriendsLibrary::FilterText(FString TextToFilter, EBPTextFilteringContext Context, const FBPUniqueNetId TextSourceID, FString& FilteredText)
{ {
#if STEAM_SDK_INSTALLED && (PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX) #if PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX
if (SteamAPI_Init()) if (SteamAPI_Init())
{ {
@@ -405,7 +399,18 @@ bool UAdvancedSteamFriendsLibrary::FilterText(FString TextToFilter, EBPTextFilte
id = *((uint64*)TextSourceID.UniqueNetId->GetBytes()); id = *((uint64*)TextSourceID.UniqueNetId->GetBytes());
} }
// MAC is bugged with current steam version according to epic, they forced it to be the old steam ver
#if PLATFORM_MAC
// Filters the provided input message and places the filtered result into pchOutFilteredText.
// pchOutFilteredText is where the output will be placed, even if no filtering or censoring is performed
// nByteSizeOutFilteredText is the size (in bytes) of pchOutFilteredText
// pchInputText is the input string that should be filtered, which can be ASCII or UTF-8
// bLegalOnly should be false if you want profanity and legally required filtering (where required) and true if you want legally required filtering only
// Returns the number of characters (not bytes) filtered.
int FilterCount = SteamUtils()->FilterText(OutText, BufferLen, TCHAR_TO_ANSI(*TextToFilter), Context == EBPTextFilteringContext::FContext_GameContent);
#else
int FilterCount = SteamUtils()->FilterText((ETextFilteringContext)Context, id, TCHAR_TO_ANSI(*TextToFilter), OutText, BufferLen); int FilterCount = SteamUtils()->FilterText((ETextFilteringContext)Context, id, TCHAR_TO_ANSI(*TextToFilter), OutText, BufferLen);
#endif
if (FilterCount > 0) if (FilterCount > 0)
{ {
@@ -425,7 +430,7 @@ bool UAdvancedSteamFriendsLibrary::FilterText(FString TextToFilter, EBPTextFilte
bool UAdvancedSteamFriendsLibrary::IsSteamInBigPictureMode() bool UAdvancedSteamFriendsLibrary::IsSteamInBigPictureMode()
{ {
#if STEAM_SDK_INSTALLED && (PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX) #if PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX
if (SteamAPI_Init()) if (SteamAPI_Init())
{ {

View File

@@ -8,7 +8,7 @@ DEFINE_LOG_CATEGORY(AdvancedSteamWorkshopLog);
void UAdvancedSteamWorkshopLibrary::GetNumSubscribedWorkshopItems(int32 & NumberOfItems) void UAdvancedSteamWorkshopLibrary::GetNumSubscribedWorkshopItems(int32 & NumberOfItems)
{ {
NumberOfItems = 0; NumberOfItems = 0;
#if STEAM_SDK_INSTALLED && (PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX) #if PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX
if (SteamAPI_Init()) if (SteamAPI_Init())
{ {
@@ -31,7 +31,7 @@ TArray<FBPSteamWorkshopID> UAdvancedSteamWorkshopLibrary::GetSubscribedWorkshopI
TArray<FBPSteamWorkshopID> outArray; TArray<FBPSteamWorkshopID> outArray;
NumberOfItems = 0; NumberOfItems = 0;
#if STEAM_SDK_INSTALLED && (PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX) #if PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX
if (SteamAPI_Init()) if (SteamAPI_Init())
{ {

View File

@@ -4,7 +4,7 @@
#include "Online/CoreOnline.h" #include "Online/CoreOnline.h"
#include "AdvancedSteamFriendsLibrary.h" #include "AdvancedSteamFriendsLibrary.h"
#include "OnlineSubSystemHeader.h" #include "OnlineSubSystemHeader.h"
#if STEAM_SDK_INSTALLED && (PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX) #if PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX
#include "steam/isteamfriends.h" #include "steam/isteamfriends.h"
#endif #endif
//#include "OnlineSubsystemSteamTypes.h" //#include "OnlineSubsystemSteamTypes.h"
@@ -31,7 +31,7 @@ USteamRequestGroupOfficersCallbackProxy* USteamRequestGroupOfficersCallbackProxy
void USteamRequestGroupOfficersCallbackProxy::Activate() void USteamRequestGroupOfficersCallbackProxy::Activate()
{ {
#if STEAM_SDK_INSTALLED && (PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX) #if PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX
if (SteamAPI_Init()) if (SteamAPI_Init())
{ {
uint64 id = *((uint64*)GroupUniqueID.UniqueNetId->GetBytes()); uint64 id = *((uint64*)GroupUniqueID.UniqueNetId->GetBytes());
@@ -45,22 +45,22 @@ void USteamRequestGroupOfficersCallbackProxy::Activate()
OnFailure.Broadcast(EmptyArray); OnFailure.Broadcast(EmptyArray);
} }
#if STEAM_SDK_INSTALLED && (PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX) #if PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX
void USteamRequestGroupOfficersCallbackProxy::OnRequestGroupOfficerDetails(ClanOfficerListResponse_t *pResult, bool bIOFailure) void USteamRequestGroupOfficersCallbackProxy::OnRequestGroupOfficerDetails(ClanOfficerListResponse_t *pResult, bool bIOFailure)
{ {
TArray<FBPSteamGroupOfficer> OfficerArray; TArray<FBPSteamGroupOfficer> OfficerArray;
//FOnlineSubsystemSteam* SteamSubsystem = (FOnlineSubsystemSteam*)(IOnlineSubsystem::Get(STEAM_SUBSYSTEM)); FOnlineSubsystemSteam* SteamSubsystem = (FOnlineSubsystemSteam*)(IOnlineSubsystem::Get(STEAM_SUBSYSTEM));
if (bIOFailure || !pResult || !pResult->m_bSuccess) if (bIOFailure || !pResult || !pResult->m_bSuccess)
{ {
//if (SteamSubsystem != nullptr) if (SteamSubsystem != nullptr)
{ {
// SteamSubsystem->ExecuteNextTick([this]() SteamSubsystem->ExecuteNextTick([this]()
//{ {
TArray<FBPSteamGroupOfficer> FailureArray; TArray<FBPSteamGroupOfficer> FailureArray;
OnFailure.Broadcast(FailureArray); OnFailure.Broadcast(FailureArray);
//}); });
} }
//OnFailure.Broadcast(OfficerArray); //OnFailure.Broadcast(OfficerArray);
return; return;
@@ -91,26 +91,26 @@ void USteamRequestGroupOfficersCallbackProxy::OnRequestGroupOfficerDetails(ClanO
OfficerArray.Add(Officer); OfficerArray.Add(Officer);
} }
//if (SteamSubsystem != nullptr) if (SteamSubsystem != nullptr)
//{ {
//SteamSubsystem->ExecuteNextTick([OfficerArray, this]() SteamSubsystem->ExecuteNextTick([OfficerArray, this]()
//{ {
OnSuccess.Broadcast(OfficerArray); OnSuccess.Broadcast(OfficerArray);
//}); });
//} }
//OnSuccess.Broadcast(OfficerArray); //OnSuccess.Broadcast(OfficerArray);
return; return;
} }
else else
{ {
//if (SteamSubsystem != nullptr) if (SteamSubsystem != nullptr)
{ {
//SteamSubsystem->ExecuteNextTick([this]() SteamSubsystem->ExecuteNextTick([this]()
//{ {
TArray<FBPSteamGroupOfficer> FailureArray; TArray<FBPSteamGroupOfficer> FailureArray;
OnFailure.Broadcast(FailureArray); OnFailure.Broadcast(FailureArray);
//}); });
} }
} }

View File

@@ -2,7 +2,7 @@
#include "SteamWSRequestUGCDetailsCallbackProxy.h" #include "SteamWSRequestUGCDetailsCallbackProxy.h"
#include "OnlineSubSystemHeader.h" #include "OnlineSubSystemHeader.h"
#if STEAM_SDK_INSTALLED && (PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX) #if PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX
#include "steam/isteamugc.h" #include "steam/isteamugc.h"
#endif #endif
@@ -25,7 +25,7 @@ USteamWSRequestUGCDetailsCallbackProxy* USteamWSRequestUGCDetailsCallbackProxy::
void USteamWSRequestUGCDetailsCallbackProxy::Activate() void USteamWSRequestUGCDetailsCallbackProxy::Activate()
{ {
#if STEAM_SDK_INSTALLED && (PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX) #if PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX
if (SteamAPI_Init()) if (SteamAPI_Init())
{ {
// #TODO: Support arrays instead in the future? // #TODO: Support arrays instead in the future?
@@ -49,19 +49,19 @@ void USteamWSRequestUGCDetailsCallbackProxy::Activate()
OnFailure.Broadcast(FBPSteamWorkshopItemDetails()); OnFailure.Broadcast(FBPSteamWorkshopItemDetails());
} }
#if STEAM_SDK_INSTALLED && (PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX) #if PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX
void USteamWSRequestUGCDetailsCallbackProxy::OnUGCRequestUGCDetails(SteamUGCQueryCompleted_t *pResult, bool bIOFailure) void USteamWSRequestUGCDetailsCallbackProxy::OnUGCRequestUGCDetails(SteamUGCQueryCompleted_t *pResult, bool bIOFailure)
{ {
//FOnlineSubsystemSteam* SteamSubsystem = (FOnlineSubsystemSteam*)(IOnlineSubsystem::Get(STEAM_SUBSYSTEM)); FOnlineSubsystemSteam* SteamSubsystem = (FOnlineSubsystemSteam*)(IOnlineSubsystem::Get(STEAM_SUBSYSTEM));
if (bIOFailure || !pResult || pResult->m_unNumResultsReturned <= 0) if (bIOFailure || !pResult || pResult->m_unNumResultsReturned <= 0)
{ {
//if (SteamSubsystem != nullptr) if (SteamSubsystem != nullptr)
{ {
// SteamSubsystem->ExecuteNextTick([this]() SteamSubsystem->ExecuteNextTick([this]()
//{ {
OnFailure.Broadcast(FBPSteamWorkshopItemDetails()); OnFailure.Broadcast(FBPSteamWorkshopItemDetails());
//}); });
} }
//OnFailure.Broadcast(FBPSteamWorkshopItemDetails()); //OnFailure.Broadcast(FBPSteamWorkshopItemDetails());
return; return;
@@ -71,12 +71,12 @@ void USteamWSRequestUGCDetailsCallbackProxy::OnUGCRequestUGCDetails(SteamUGCQuer
SteamUGCDetails_t Details; SteamUGCDetails_t Details;
if (SteamUGC()->GetQueryUGCResult(pResult->m_handle, 0, &Details)) if (SteamUGC()->GetQueryUGCResult(pResult->m_handle, 0, &Details))
{ {
//if (SteamSubsystem != nullptr) if (SteamSubsystem != nullptr)
{ {
//SteamSubsystem->ExecuteNextTick([Details, this]() SteamSubsystem->ExecuteNextTick([Details, this]()
//{ {
OnSuccess.Broadcast(FBPSteamWorkshopItemDetails(Details)); OnSuccess.Broadcast(FBPSteamWorkshopItemDetails(Details));
//}); });
} }
//OnSuccess.Broadcast(FBPSteamWorkshopItemDetails(Details)); //OnSuccess.Broadcast(FBPSteamWorkshopItemDetails(Details));
@@ -85,12 +85,12 @@ void USteamWSRequestUGCDetailsCallbackProxy::OnUGCRequestUGCDetails(SteamUGCQuer
} }
else else
{ {
//if (SteamSubsystem != nullptr) if (SteamSubsystem != nullptr)
{ {
//SteamSubsystem->ExecuteNextTick([this]() SteamSubsystem->ExecuteNextTick([this]()
//{ {
OnFailure.Broadcast(FBPSteamWorkshopItemDetails()); OnFailure.Broadcast(FBPSteamWorkshopItemDetails());
//}); });
} }
} }