Pico Unreal Platform SDK
OnlineSubsystemPicoManager.h
1// Copyright 2022 Pico Technology Co., Ltd.All rights reserved.
2// This plugin incorporates portions of the Unreal® Engine. Unreal® is a trademark or registered trademark of Epic Games, Inc.In the United States of America and elsewhere.
3// Unreal® Engine, Copyright 1998 – 2022, Epic Games, Inc.All rights reserved.
4
5#pragma once
6
7#include "CoreMinimal.h"
8#include "Delegates/Delegate.h"
9#include "OnlineFriendsInterfacePico.h"
10#include "OnlineIdentityPico.h"
11#include "RTCPicoUserInterface.h"
12#include "OnlineSessionSettings.h"
13#include "OnlineSessionInterfacePico.h"
14#include "OnlineLeaderboardInterfacePico.h"
15#include "UObject/Object.h"
16#include "PicoPresenceInterface.h"
17#include "PicoApplicationInterface.h"
18#include "ApplicationLifecycleInterface.h"
19#include "Pico_Leaderboard.h"
20#include "OnlineSubsystemPicoManager.generated.h"
28// Identity
29DECLARE_DYNAMIC_DELEGATE_FourParams(FOnlineManagerLoginCompleteDelegate, int, LocalUserNum, const FString, UserId, bool, bIsSuccessed, const FString, ErrorMessage);
30
31// Friend
32DECLARE_DYNAMIC_DELEGATE_FourParams(FOnlineManagerReadFriendListDelegate, int, LocalUserNum, bool, bWasSuccessful, const FString, ListName, const FString, ErrorStr);
33
34// RTC
35DECLARE_DYNAMIC_MULTICAST_SPARSE_DELEGATE_FiveParams(FRtcJoinRoomResultDelegate, UOnlineSubsystemPicoManager, OnRtcJoinRoomResultDelegate, const FString&, RoomId, const FString&, UserId, int, ErrorCode, int, Elapsed, ERtcJoinRoomType, InJoinRoomType);
36DECLARE_DYNAMIC_MULTICAST_SPARSE_DELEGATE_OneParam(FRtcLeaveRoomResultDelegate, UOnlineSubsystemPicoManager, OnRtcLeaveRoomResultDelegate, const FString&, RoomId);
37DECLARE_DYNAMIC_MULTICAST_SPARSE_DELEGATE_ThreeParams(FRtcRoomStateDelegate, UOnlineSubsystemPicoManager, OnRtcRoomStateDelegate, int, TotalDuration, int, UserCount, const FString&, RoomId);
38DECLARE_DYNAMIC_MULTICAST_SPARSE_DELEGATE_FourParams(FRtcUserJoinInfoDelegate, UOnlineSubsystemPicoManager, OnRtcUserJoinInfoDelegate, const FString&, UserId, const FString&, UserExtra, int, Elapsed, const FString&, RoomId);
39DECLARE_DYNAMIC_MULTICAST_SPARSE_DELEGATE_ThreeParams(FRtcUserLeaveInfoDelegate, UOnlineSubsystemPicoManager, OnRtcUserLeaveInfoDelegate, const FString&, UserId, ERtcUserLeaveReasonType, RtcUserLeaveReasonType, const FString&, RoomId);
40DECLARE_DYNAMIC_MULTICAST_SPARSE_DELEGATE_TwoParams(FRtcRoomWarnDelegate, UOnlineSubsystemPicoManager, OnRtcRoomWarnDelegate, int, Code, const FString&, RoomId);
41DECLARE_DYNAMIC_MULTICAST_SPARSE_DELEGATE_TwoParams(FRtcRoomErrorDelegate, UOnlineSubsystemPicoManager, OnRtcRoomErrorDelegate, int, Code, const FString&, RoomId);
42DECLARE_DYNAMIC_MULTICAST_SPARSE_DELEGATE_TwoParams(FRtcRoomMuteStateDelegate, UOnlineSubsystemPicoManager, OnRtcRoomMuteStateDelegate, const FString&, UserId, ERtcMuteState, RtcMuteState);
43DECLARE_DYNAMIC_MULTICAST_SPARSE_DELEGATE_OneParam(FRtcAudioChangePlaybackDeviceDelegate, UOnlineSubsystemPicoManager, OnRtcAudioChangePlaybackDelegate, ERtcAudioPlaybackDevice, RtcAudioPlaybackDevice);
44DECLARE_DYNAMIC_MULTICAST_SPARSE_DELEGATE_FourParams(FRtcMediaDeviceChangeInfoDelegate, UOnlineSubsystemPicoManager, OnRtcMediaDeviceChangeInfoDelegate, const FString&, DeviceId, ERtcMediaDeviceType, MediaDeciveType, ERtcMediaDeviceState, MediaDeviceState, ERtcMediaDeviceError, MediaDeviceError);
45DECLARE_DYNAMIC_MULTICAST_SPARSE_DELEGATE_TwoParams(FRtcLocalAudioPropertiesReportDelegate, UOnlineSubsystemPicoManager, OnRtcLocalAudioPropertiesReportDelegate, const TArray<ERtcStreamIndex>&, StreamIndexs, const TArray<int32>&, Volumes);
46DECLARE_DYNAMIC_MULTICAST_SPARSE_DELEGATE_FiveParams(FRtcRemoteAudioPropertiesReportDelegate, UOnlineSubsystemPicoManager, OnRtcRemoteAudioPropertiesReportDelegate, int, TotalRemoteVolume, const TArray<int32>&, Volumes, const TArray<FString>&, RoomIds, const TArray<FString>&, UserIds, const TArray<ERtcStreamIndex>&, StreamIndexs);
47
48DECLARE_DYNAMIC_MULTICAST_SPARSE_DELEGATE_OneParam(FRtcWarnDelegate, UOnlineSubsystemPicoManager, OnRtcWarnDelegate, int, MessageCode);
49DECLARE_DYNAMIC_MULTICAST_SPARSE_DELEGATE_OneParam(FRtcErrorDelegate, UOnlineSubsystemPicoManager, OnRtcErrorDelegate, int, MessageCode);
50DECLARE_DYNAMIC_MULTICAST_SPARSE_DELEGATE_OneParam(FRtcConnectStateChangedDelegate, UOnlineSubsystemPicoManager, OnRtcConnectStateChangedDelegate, const FString&, StringMessage);
51DECLARE_DYNAMIC_MULTICAST_SPARSE_DELEGATE_OneParam(FRtcUserStartAudioCaptureDelegate, UOnlineSubsystemPicoManager, OnRtcUserStartAudioCaptureDelegate, const FString&, StringMessage);
52DECLARE_DYNAMIC_MULTICAST_SPARSE_DELEGATE_OneParam(FRtcUserStopAudioCaptureDelegate, UOnlineSubsystemPicoManager, OnRtcUserStopAudioCaptureDelegate, const FString&, StringMessage);
53
54DECLARE_DYNAMIC_DELEGATE_ThreeParams(FOnlineManagerRtcGetTokenDelegate, FString, Token, bool, IsSuccessed, FString, ErrorMessage);
55
56// Presence
57DECLARE_DYNAMIC_DELEGATE_TwoParams(FOnlineManagerPresenceClearDelegate, bool, IsSuccessed, FString, ErrorMessage);
58DECLARE_DYNAMIC_DELEGATE_TwoParams(FOnlineManagerPresenceReadInvitableUserDelegate, bool, IsSuccessed, FString, ErrorMessage);
59DECLARE_DYNAMIC_DELEGATE_TwoParams(FOnlineManagerPresenceSetDelegate, bool, IsSuccessed, FString, ErrorMessage);
60DECLARE_DYNAMIC_DELEGATE_TwoParams(FOnlineManagerPresenceSetDestinationDelegate, bool, IsSuccessed, FString, ErrorMessage);
61DECLARE_DYNAMIC_DELEGATE_TwoParams(FOnlineManagerPresenceSetIsJoinableDelegate, bool, IsSuccessed, FString, ErrorMessage);
62DECLARE_DYNAMIC_DELEGATE_TwoParams(FOnlineManagerPresenceSetLobbySessionDelegate, bool, IsSuccessed, FString, ErrorMessage);
63DECLARE_DYNAMIC_DELEGATE_TwoParams(FOnlineManagerPresenceSetMatchSessionDelegate, bool, IsSuccessed, FString, ErrorMessage);
64DECLARE_DYNAMIC_DELEGATE_TwoParams(FOnlineManagerPresenceSetExtraDelegate, bool, IsSuccessed, FString, ErrorMessage);
65DECLARE_DYNAMIC_DELEGATE_TwoParams(FOnlineManagerPresenceReadSentInvitesDelegate, bool, IsSuccessed, FString, ErrorMessage);
66DECLARE_DYNAMIC_DELEGATE_TwoParams(FOnlineManagerPresenceSentInvitesDelegate, bool, IsSuccessed, FString, ErrorMessage);
67DECLARE_DYNAMIC_DELEGATE_TwoParams(FOnlineManagerPresenceGetDestinationsDelegate, bool, IsSuccessed, FString, ErrorMessage);
68
69DECLARE_DYNAMIC_MULTICAST_SPARSE_DELEGATE_FourParams(FPresenceJoinIntentReceivedDelegate, UOnlineSubsystemPicoManager, OnPresenceJoinIntentReceivedDelegate, const FString&, DeeplinkMessage, const FString&, DestinationApiName, const FString&, LobbySessionId, const FString&, MatchSessionId);
70DECLARE_DYNAMIC_MULTICAST_SPARSE_DELEGATE_ThreeParams(FPresenceLeaveIntentReceivedDelegate, UOnlineSubsystemPicoManager, OnPresenceLeaveIntentReceivedDelegate, const FString&, DestinationApiName, const FString&, LobbySessionId, const FString&, MatchSessionId);
71
72// ApplicationInterface
73DECLARE_DYNAMIC_DELEGATE_ThreeParams(FOnlineManagerLaunchOtherAppDelegate, FString, StringMessage, bool, IsSuccessed, FString, ErrorMessage);
74DECLARE_DYNAMIC_DELEGATE_ThreeParams(FOnlineManagerLaunchOtherAppByPresenceDelegate, FString, StringMessage, bool, IsSuccessed, FString, ErrorMessage);
75DECLARE_DYNAMIC_DELEGATE_ThreeParams(FOnlineManagerGetVersionDelegate, FString, StringMessage, bool, IsSuccessed, FString, ErrorMessage);
76
77// ApplicationLifecycle
78DECLARE_DYNAMIC_DELEGATE_TwoParams(FOnlineManagerApplicationLifecycleReadDetailsDelegate, bool, IsSuccessed, FString, ErrorMessage);
79
80
81DECLARE_DYNAMIC_MULTICAST_SPARSE_DELEGATE_OneParam(FApplicationLifecycleStringResultDelegate, UOnlineSubsystemPicoManager, OnApplicationLifecycleStringResultDelegate, const FString&, MessageString);
82
83
84// Game
85DECLARE_DYNAMIC_DELEGATE_TwoParams(FPicoManagerOnCreateSessionCompleteDelegate, FName, SessionName, bool, bWasSuccessful);
86DECLARE_DYNAMIC_DELEGATE_TwoParams(FPicoManagerOnStartSessionCompleteDelegate, FName, SessionName, bool, bWasSuccessful);
87DECLARE_DYNAMIC_DELEGATE_TwoParams(FPicoManagerOnUpdateSessionCompleteDelegate, FName, SessionName, bool, bWasSuccessful);
88DECLARE_DYNAMIC_DELEGATE_TwoParams(FPicoManagerOnEndSessionCompleteDelegate, FName, SessionName, bool, bWasSuccessful);
89DECLARE_DYNAMIC_DELEGATE_TwoParams(FPicoManagerOnDestroySessionCompleteDelegate, FName, SessionName, bool, bWasSuccessful);
90DECLARE_DYNAMIC_DELEGATE_TwoParams(FPicoManagerOnCancelMatchmakingCompleteDelegate, FName, SessionName, bool, bWasSuccessful);
91DECLARE_DYNAMIC_DELEGATE_TwoParams(FPicoManagerOnMatchmakingCompleteDelegate, FName, SessionName, bool, bWasSuccessful);
92// DECLARE_DELEGATE_ThreeParams(FOnStartMatchmakingComplete, FName /*SessionName*/, const struct FOnlineError& /*ErrorDetails*/, const struct FSessionMatchmakingResults& /*Results*/);
93// DECLARE_MULTICAST_DELEGATE_TwoParams(FOnMatchmakingComplete, FName, bool);
94DECLARE_DYNAMIC_DELEGATE_OneParam(FPicoManagerOnFindSessionCompleteDelegate, bool, bWasSuccessful);
95DECLARE_DYNAMIC_DELEGATE_ThreeParams(FPicoManagerOnSingleSessionResultCompleteDelegate, int32, LocalUserNum, bool, bWasSuccessful, const FPicoOnlineSessionSearchResult&, SearchResult);
96DECLARE_DYNAMIC_DELEGATE_TwoParams(FPicoManagerOnJoinSessionCompleteDelegate, FName, SessionName, EOnJoinSessionCompleteResultPicoType, Type);
97
98DECLARE_DYNAMIC_MULTICAST_SPARSE_DELEGATE_TwoParams(FOnGameConnectionNotifyDelegate, UOnlineSubsystemPicoManager, OnGameConnectionNotifyDelegate, int, Result, bool, bWasSuccessful);
99DECLARE_DYNAMIC_MULTICAST_SPARSE_DELEGATE_TwoParams(FOnGameRequestFailedNotifyDelegate, UOnlineSubsystemPicoManager, OnGameRequestFailedNotifyDelegate, int, Result, bool, bWasSuccessful);
100DECLARE_DYNAMIC_MULTICAST_SPARSE_DELEGATE_OneParam(FOnGameStateResetNotifyDelegate, UOnlineSubsystemPicoManager, OnGameStateResetNotifyDelegate, bool, bWasSuccessful);
101DECLARE_DYNAMIC_MULTICAST_SPARSE_DELEGATE_OneParam(FOnMatchmakingCancel2NotifyDelegate, UOnlineSubsystemPicoManager, OnMatchmakingCancel2NotifyDelegate, bool, bWasSuccessful);
102DECLARE_DYNAMIC_MULTICAST_SPARSE_DELEGATE_TwoParams(FOnRoomLeaveNotifyDelegate, UOnlineSubsystemPicoManager, OnRoomLeaveNotifyDelegate, const FString&, RoomID, bool, bWasSuccessful);
103DECLARE_DYNAMIC_MULTICAST_SPARSE_DELEGATE_TwoParams(FOnRoomJoin2NotifyDelegate, UOnlineSubsystemPicoManager, OnRoomJoin2NotifyDelegate, const FString&, RoomID, bool, bWasSuccessful);
104DECLARE_DYNAMIC_MULTICAST_SPARSE_DELEGATE_TwoParams(FOnRoomSetDescriptionNotifyDelegate, UOnlineSubsystemPicoManager, OnRoomSetDescriptionNotifyDelegate, const FString&, RoomID, bool, bWasSuccessful);
105DECLARE_DYNAMIC_MULTICAST_SPARSE_DELEGATE_TwoParams(FOnRoomKickUserNotifyDelegate, UOnlineSubsystemPicoManager, OnRoomKickUserNotifyDelegate, const FString&, RoomID, bool, bWasSuccessful);
106DECLARE_DYNAMIC_MULTICAST_SPARSE_DELEGATE_OneParam(FOnRoomUpdateOwnerNotifyDelegate, UOnlineSubsystemPicoManager, OnRoomUpdateOwnerNotifyDelegate, bool, bWasSuccessful);
107DECLARE_DYNAMIC_MULTICAST_SPARSE_DELEGATE_TwoParams(FOnRoomUpdateDataStoreNotifyDelegate, UOnlineSubsystemPicoManager, OnRoomUpdateDataStoreNotifyDelegate, const FString&, RoomID, bool, bWasSuccessful);
108DECLARE_DYNAMIC_MULTICAST_SPARSE_DELEGATE_TwoParams(FOnRoomUpdateMembershipLockStatusNotifyDelegate, UOnlineSubsystemPicoManager, OnRoomUpdateMembershipLockStatusNotifyDelegate, const FString&, RoomID, bool, bWasSuccessful);
109DECLARE_DYNAMIC_MULTICAST_SPARSE_DELEGATE_TwoParams(FOnRoomUpdateNotifyDelegate, UOnlineSubsystemPicoManager, OnRoomUpdateNotifyDelegate, const FString&, RoomID, bool, bWasSuccessful);
110DECLARE_DYNAMIC_MULTICAST_SPARSE_DELEGATE_TwoParams(FOnRoomInviteAcceptedNotifyDelegate, UOnlineSubsystemPicoManager, OnRoomInviteAcceptedNotifyDelegate, const FString&, RoomID, bool, bWasSuccessful);
111
112// Leaderboard
113DECLARE_DYNAMIC_DELEGATE_OneParam(FPicoManagerOnReadLeaderboardsCompleteDelegate, bool, bWasSuccessful);
114
115
116UCLASS()
117class UOnlineSubsystemPicoManager : public UObject
118{
119 GENERATED_BODY()
120
121public:
122 UOnlineSubsystemPicoManager();
123 ~UOnlineSubsystemPicoManager();
124
125 FOnReadFriendsListComplete ReadCompleteDelegate;
126
127 TSharedPtr<FRTCPicoUserInterface> RtcInterface;
128 TSharedPtr<FPicoPresenceInterface> PresenceInterface;
129 FOnGetTokenComplete RtcGetTokenCompleteDelegate;
130 // Presence
131 FOnPresenceClearComplete PresenceClearCompleteDelegate;
132 FOnReadInvitableUserComplete PresenceReadInvitableUserCompleteDelegate;
133 FOnPresenceSetComplete PresenceSetCompleteDelegate;
134 FOnPresenceSetDestinationComplete PresenceSetDestinationCompleteDelegate;
135 FOnPresenceSetIsJoinableComplete PresenceSetIsJoinableCompleteDelegate;
136 FOnPresenceSetLobbySessionComplete PresenceSetLobbySessionCompleteDelegate;
137 FOnPresenceSetMatchSessionComplete PresenceSetMatchSessionCompleteDelegate;
138 FOnPresenceSetPresenceExtraComplete PresenceSetExtraComleteDelegate;
139 FOnReadSentInvitesComplete PresenceReadSentInvitesCompleteDelegate;
140 FOnSentInvitesComplete PresenceSentInvitesCompleteDelegate;
141 FOnGetDestinationsComplete PresenceGetDestinationsCompleteDelegate;
142
143 // Application
144 FOnLaunchOtherAppComplete LaunchOtherAppCompleteDelegate;
145 FOnLaunchOtherAppByPresenceComplete LaunchOtherAppByPresenceCompleteDelegate;
146 FOnGetVersion GetVersionCompleteDelegate;
147
148 // ApplicationLifecycle
149 //FOnReadDetailsComplete ApplicationLifecycleReadDetailsCompleteDelegate;
150
151 FOnlineSessionPicoPtr GameInterface;
152
153 // Friend
154 static FOnlineManagerReadFriendListDelegate ReadFrendListDelegate;
155
156 void PicoReadFriendList(UObject* WorldContextObject, int32 LocalUserNum, const FString& ListName, FOnlineManagerReadFriendListDelegate InReadFriendListDelegate);
157 void OnReadListComplete(int32 InLocalUserNum/*LocalUserNum*/, bool bWasSuccessful/*bWasSuccessful*/, const FString& ListName/*ListName*/, const FString& ErrorStr/*ErrorStr*/);
158 void PicoGetFriendList(UObject* WorldContextObject, int32 InLocalUserNum, const FString& ListName, TArray<FPicoUserInfo>& OutFriendList);
159 FPicoUserInfo PicoGetFriend(UObject* WorldContextObject, int32 LocalUserNum, const FString& FriendId, const FString& ListName);
160 FPicoUserInfo GetBPPicoFriend(const TSharedRef<FOnlinePicoFriend> InOnlinePicoFriend);
161
162 // Identity
163 static FOnlineManagerLoginCompleteDelegate LoginCompleteDelegate;
164
165 void PicoLogin(UObject* WorldContextObject, int32 LocalUserNum, const FString& InUserId, const FString& InType, const FString& InToken, FOnlineManagerLoginCompleteDelegate InLoginCompleteDelegate);
166 FString PicoGetNickName(UObject* WorldContextObject, int32 LocalUserNum);
167 UPico_User* GetLoginPicoUser(UObject* WorldContextObject, int32 LocalUserNum);
168 void OnLoginComplete(int LocalUserNum, bool bWasSuccessful,const FUniqueNetId& UserId, const FString& ErrorString);
169 // Rtc
170
171 // RTC Function
172 static FOnlineManagerRtcGetTokenDelegate RtcGetTokenDelegate;
173
174 void PicoRtcGetToken(UObject* WorldContextObject, const FString& UserId, const FString& RoomId, int Ttl, int InValue, FOnlineManagerRtcGetTokenDelegate InRtcGetTokenDelegate);
175 void OnGetTokenComplete(const FString& Token, bool bIsSuccessed, const FString& ErrorMessage);
176
177 ERtcEngineInitResult PicoRtcEngineInit(UObject* WorldContextObject);
178 int RtcJoinRoom(UObject* WorldContextObject, const FString& RoomId, const FString& UserId, const FString& Token, const FString& UserExtra, ERtcRoomProfileType InRoomProfileType, bool bIsAutoSubscribeAudio);
179 int RtcDestroyRoom(UObject* WorldContextObject, const FString& RoomId);
180 void RtcEnableAudioPropertiesReport(UObject* WorldContextObject, int Interval);
181 int RtcLeaveRoom(UObject* WorldContextObject, const FString& RoomId);
182 void RtcMuteLocalAudio(UObject* WorldContextObject, ERtcMuteState InRtcMuteState);
183 void RtcPublishRoom(UObject* WorldContextObject, const FString& RoomId);
184 void RtcRoomPauseAllSubscribedStream(UObject* WorldContextObject, const FString& RoomId, ERtcPauseResumeMediaType InPauseResumeMediaType);
185 void RtcRoomResumeAllSubscribedStream(UObject* WorldContextObject, const FString& RoomId, ERtcPauseResumeMediaType InPauseResumeMediaType);
186 void RtcSetAudioPlaybackDevice(UObject* WorldContextObject, ERtcAudioPlaybackDevice InRtcAudioPlaybackDevice);
187 void RtcSetAudioScenario(UObject* WorldContextObject, ERtcAudioScenarioType InRtcAudioScenarioType);
188 void RtcSetCaptureVolume(UObject* WorldContextObject, ERtcStreamIndex InRtcStreamIndex, int InVolume);
189 void RtcSetEarMonitorMode(UObject* WorldContextObject, ERtcEarMonitorMode InRtcEarMonitorMode);
190 void RtcSetEarMonitorVolume(UObject* WorldContextObject, int InVolume);
191 void RtcSetPlaybackVolume(UObject* WorldContextObject, int InVolume);
192 void RtcStartAudioCapture(UObject* WorldContextObject);
193 void RtcStopAudioCapture(UObject* WorldContextObject);
194 void RtcUnPublishRoom(UObject* WorldContextObject, const FString& RoomId);
195 void RtcUpdateToken(UObject* WorldContextObject, const FString& RoomId, const FString& Token);
196
197 //RTC Notify React
198 void OnRtcJoinRoomResult(const FString& RoomId, const FString& UserId, int ErrorCode, int Elapsed, ERtcJoinRoomType InJoinRoomType);
199 void OnRtcLeaveRoomResult(const FString& RoomId);
200 void OnRtcRoomState(int TotalDuration, int UserCount, const FString& RoomId);
201 void OnRtcUserJoinInfo(const FString& UserId, const FString& UserExtra, int Elapsed, const FString& RoomId);
202 void OnRtcUserLeaveInfo(const FString& UserId, ERtcUserLeaveReasonType RtcUserLeaveReasonType, const FString& RoomId);
203 void OnRtcRoomWarn(int Code, const FString& RoomId);
204 void OnRtcRoomError(int Code, const FString& RoomId);
205 void OnRtcMuteState(const FString& UserId, ERtcMuteState RtcMuteState);
206 void OnRtcAudioChangePlaybackDevice(ERtcAudioPlaybackDevice RtcAudioPlaybackDevice);
207 void OnRtcMediaDeviceChangeInfo(const FString& DeviceId, ERtcMediaDeviceType MediaDeciveType, ERtcMediaDeviceState MediaDeviceState, ERtcMediaDeviceError MediaDeviceError);
208 void OnRtcLocalAudioPropertiesReport(TArray<ERtcStreamIndex> StreamIndexs, TArray<int> Volumes);
209 void OnRtcRemoteAudioPropertiesReport(int TotalRemoteVolume, TArray<int> Volumes, const TArray<FString>& RoomIds, const TArray<FString>& UserIds, TArray<ERtcStreamIndex> StreamIndexs);
210 void OnRtcWarn(int MessageCode);
211 void OnRtcError(int MessageCode);
212 void OnRtcConnectStateChanged(const FString& StringMessage);
213 void OnRtcUserStartAudioCapture(const FString& StringMessage);
214 void OnRtcUserStopAudioCapture(const FString& StringMessage);
215
216 //Presence Notify React
217 void OnPresenceJoinIntentReceivedResult(const FString& DeeplinkMessage, const FString& DestinationApiName, const FString& LobbySessionId, const FString& MatchSessionId);
218 void OnPresenceLeavententReceivedResult(const FString& DestinationApiName, const FString& LobbySessionId, const FString& MatchSessionId);
219
220 //ApplicationLifecycle Notify React
221 void OnLaunchIntentChangedResult(const FString& MessageString);
222
223
224 // RTC Notification Delegate
225 UPROPERTY(BlueprintAssignable, Category = "Rtc")
226 FRtcJoinRoomResultDelegate OnRtcJoinRoomResultDelegate;
227
228 UPROPERTY(BlueprintAssignable, Category = "Rtc")
229 FRtcLeaveRoomResultDelegate OnRtcLeaveRoomResultDelegate;
230
231 UPROPERTY(BlueprintAssignable, Category = "Rtc")
232 FRtcRoomStateDelegate OnRtcRoomStateDelegate;
233
234 UPROPERTY(BlueprintAssignable, Category = "Rtc")
235 FRtcUserJoinInfoDelegate OnRtcUserJoinInfoDelegate;
236
237 UPROPERTY(BlueprintAssignable, Category = "Rtc")
238 FRtcUserLeaveInfoDelegate OnRtcUserLeaveInfoDelegate;
239
240 UPROPERTY(BlueprintAssignable, Category = "Rtc")
241 FRtcRoomWarnDelegate OnRtcRoomWarnDelegate;
242
243 UPROPERTY(BlueprintAssignable, Category = "Rtc")
244 FRtcRoomErrorDelegate OnRtcRoomErrorDelegate;
245
246 UPROPERTY(BlueprintAssignable, Category = "Rtc")
247 FRtcRoomMuteStateDelegate OnRtcRoomMuteStateDelegate;
248
249 UPROPERTY(BlueprintAssignable, Category = "Rtc")
250 FRtcAudioChangePlaybackDeviceDelegate OnRtcAudioChangePlaybackDelegate;
251
252 UPROPERTY(BlueprintAssignable, Category = "Rtc")
253 FRtcMediaDeviceChangeInfoDelegate OnRtcMediaDeviceChangeInfoDelegate;
254
255 UPROPERTY(BlueprintAssignable, Category = "Rtc")
256 FRtcLocalAudioPropertiesReportDelegate OnRtcLocalAudioPropertiesReportDelegate;
257
258 UPROPERTY(BlueprintAssignable, Category = "Rtc")
259 FRtcRemoteAudioPropertiesReportDelegate OnRtcRemoteAudioPropertiesReportDelegate;
260
261 UPROPERTY(BlueprintAssignable, Category = "Rtc")
262 FRtcWarnDelegate OnRtcWarnDelegate;
263
264 UPROPERTY(BlueprintAssignable, Category = "Rtc")
265 FRtcErrorDelegate OnRtcErrorDelegate;
266
267 UPROPERTY(BlueprintAssignable, Category = "Rtc")
268 FRtcConnectStateChangedDelegate OnRtcConnectStateChangedDelegate;
269
270 UPROPERTY(BlueprintAssignable, Category = "Rtc")
271 FRtcUserStartAudioCaptureDelegate OnRtcUserStartAudioCaptureDelegate;
272
273 UPROPERTY(BlueprintAssignable, Category = "Rtc")
274 FRtcUserStopAudioCaptureDelegate OnRtcUserStopAudioCaptureDelegate;
275
276
277 // Game Notification Delegate
278 UPROPERTY(BlueprintAssignable, Category = "Game")
279 FOnGameConnectionNotifyDelegate OnGameConnectionNotifyDelegate;
280 UPROPERTY(BlueprintAssignable, Category = "Game")
281 FOnGameRequestFailedNotifyDelegate OnGameRequestFailedNotifyDelegate;
282 UPROPERTY(BlueprintAssignable, Category = "Game")
283 FOnGameStateResetNotifyDelegate OnGameStateResetNotifyDelegate;
284 UPROPERTY(BlueprintAssignable, Category = "Game")
285 FOnMatchmakingCancel2NotifyDelegate OnMatchmakingCancel2NotifyDelegate;
286 UPROPERTY(BlueprintAssignable, Category = "Game")
287 FOnRoomLeaveNotifyDelegate OnRoomLeaveNotifyDelegate;
288 UPROPERTY(BlueprintAssignable, Category = "Game")
289 FOnRoomJoin2NotifyDelegate OnRoomJoin2NotifyDelegate;
290 UPROPERTY(BlueprintAssignable, Category = "Game")
291 FOnRoomSetDescriptionNotifyDelegate OnRoomSetDescriptionNotifyDelegate;
292 UPROPERTY(BlueprintAssignable, Category = "Game")
293 FOnRoomKickUserNotifyDelegate OnRoomKickUserNotifyDelegate;
294 UPROPERTY(BlueprintAssignable, Category = "Game")
295 FOnRoomUpdateOwnerNotifyDelegate OnRoomUpdateOwnerNotifyDelegate;
296 UPROPERTY(BlueprintAssignable, Category = "Game")
297 FOnRoomUpdateDataStoreNotifyDelegate OnRoomUpdateDataStoreNotifyDelegate;
298 UPROPERTY(BlueprintAssignable, Category = "Game")
299 FOnRoomUpdateMembershipLockStatusNotifyDelegate OnRoomUpdateMembershipLockStatusNotifyDelegate;
300 UPROPERTY(BlueprintAssignable, Category = "Game")
301 FOnRoomUpdateNotifyDelegate OnRoomUpdateNotifyDelegate;
302 UPROPERTY(BlueprintAssignable, Category = "Game")
303 FOnRoomInviteAcceptedNotifyDelegate OnRoomInviteAcceptedNotifyDelegate;
304
305 void OnGameConnectionNotification(int Result, bool bWasSuccessful);
306 void OnGameRequestFailedNotification(int Result, bool bWasSuccessful);
307 void OnGameStateResetNotification(bool bWasSuccessful);
308 void OnMatchmakingCancel2Notification(bool bWasSuccessful);
309 void OnRoomLeaveNotification(const FString& RoomID, bool bWasSuccessful);
310 void OnRoomJoin2Notification(const FString& RoomID, bool bWasSuccessful);
311 void OnRoomSetDescriptionNotification(const FString& RoomID, bool bWasSuccessful);
312 void OnRoomKickUserNotification(const FString& RoomID, bool bWasSuccessful);
313 void OnRoomUpdateOwnerNotification(bool bWasSuccessful);
314 void OnRoomUpdateDataStoreNotification(const FString& RoomID, bool bWasSuccessful);
315 void OnRoomUpdateMembershipLockStatusNotification(const FString& RoomID, bool bWasSuccessful);
316 void OnRoomUpdateComplete(const FString& RoomID, bool bWasSuccessful);
317 void OnRoomInviteAcceptedComplete(const FString& RoomID, bool bWasSuccessful);
318
319 // Game Delegate
320 static FPicoManagerOnCreateSessionCompleteDelegate OnCreateSessionCompleteDelegate;
321 static FPicoManagerOnStartSessionCompleteDelegate OnStartSessionCompleteDelegate;
322 static FPicoManagerOnUpdateSessionCompleteDelegate OnUpdateSessionCompleteDelegate;
323 static FPicoManagerOnEndSessionCompleteDelegate OnEndSessionCompleteDelegate;
324 static FPicoManagerOnDestroySessionCompleteDelegate OnDestroySessionCompleteDelegate;
325 static FPicoManagerOnMatchmakingCompleteDelegate OnMatchmakingCompleteDelegate;
326 static FPicoManagerOnCancelMatchmakingCompleteDelegate OnCancelMatchmakingCompleteDelegate;
327 static FPicoManagerOnFindSessionCompleteDelegate OnFindSessionCompleteDelegate;
328 static FPicoManagerOnSingleSessionResultCompleteDelegate OnSingleSessionResultCompleteDelegate;
329 static FPicoManagerOnJoinSessionCompleteDelegate OnJoinSessionCompleteDelegate;
330 // todo 480
331 // DECLARE_MULTICAST_DELEGATE_ThreeParams(FOnFindFriendSessionComplete, int32, bool, const TArray<FOnlineSessionSearchResult>&);
332 // DECLARE_MULTICAST_DELEGATE_FourParams(FOnSessionUserInviteAccepted, const bool, const int32, FUniqueNetIdPtr, const FOnlineSessionSearchResult&);
333 // DECLARE_MULTICAST_DELEGATE_FourParams(FOnSessionInviteReceived, const FUniqueNetId& /*UserId*/, const FUniqueNetId& /*FromId*/, const FString& /*AppId*/, const FOnlineSessionSearchResult& /*InviteResult*/);
334
335 // Leaderboard
336 static FPicoManagerOnReadLeaderboardsCompleteDelegate OnReadLeaderboardsCompleteDelegate;
337
338 // Presence Notification Delegate
339 UPROPERTY(BlueprintAssignable, Category = "Presence")
340 FPresenceJoinIntentReceivedDelegate OnPresenceJoinIntentReceivedDelegate;
341
342 UPROPERTY(BlueprintAssignable, Category = "Presence")
343 FPresenceLeaveIntentReceivedDelegate OnPresenceLeaveIntentReceivedDelegate;
344
345 // ApplicationLifecycle Notification Delegate
346 UPROPERTY(BlueprintAssignable, Category = "ApplicationLifecycle")
347 FApplicationLifecycleStringResultDelegate OnApplicationLifecycleStringResultDelegate;
348
349
350 // Game IOnlineSession
351 bool CreateSession(UObject* WorldContextObject, int HostingPlayerNum, FName SessionName, const FOnlineSessionSettings& NewSessionSettings, FPicoManagerOnCreateSessionCompleteDelegate OnCreateSessionCompleteDelegate);
352 bool StartSession(UObject* WorldContextObject, FName SessionName, FPicoManagerOnStartSessionCompleteDelegate OnStartSessionCompleteDelegate);
353 bool UpdateSession(UObject* WorldContextObject, FName SessionName, FOnlineSessionSettings& UpdatedSessionSettings, FPicoManagerOnUpdateSessionCompleteDelegate OnUpdateSessionCompleteDelegate, bool bShouldRefreshOnlineData = true);
354 bool EndSession(UObject* WorldContextObject, FName SessionName, FPicoManagerOnEndSessionCompleteDelegate OnEndSessionCompleteDelegate);
355 bool DestroySession(UObject* WorldContextObject, FName SessionName, FPicoManagerOnDestroySessionCompleteDelegate OnDestroySessionCompleteDelegate);
356 bool IsPlayerInSession(UObject* WorldContextObject, FName SessionName, const FUniqueNetId& UniqueId);
357#if ENGINE_MAJOR_VERSION > 4
358 bool StartMatchmaking(UObject* WorldContextObject, const TArray< FUniqueNetIdRef >& LocalPlayers, FName SessionName, const FPicoOnlineSessionSettings& NewSessionSettings, FPicoOnlineSessionSearch& SearchSettings, FPicoManagerOnMatchmakingCompleteDelegate OnMatchmakingCompleteDelegate);
359#elif ENGINE_MINOR_VERSION > 26
360 bool StartMatchmaking(UObject* WorldContextObject, const TArray< FUniqueNetIdRef >& LocalPlayers, FName SessionName, const FPicoOnlineSessionSettings& NewSessionSettings, FPicoOnlineSessionSearch& SearchSettings, FPicoManagerOnMatchmakingCompleteDelegate OnMatchmakingCompleteDelegate);
361#elif ENGINE_MINOR_VERSION > 24
362 bool StartMatchmaking(UObject* WorldContextObject, const TArray< TSharedRef<const FUniqueNetId> >& LocalPlayers, FName SessionName, const FPicoOnlineSessionSettings& NewSessionSettings, FPicoOnlineSessionSearch& SearchSettings, FPicoManagerOnMatchmakingCompleteDelegate OnMatchmakingCompleteDelegate);
363#endif
364 bool CancelMatchmaking(UObject* WorldContextObject, int32 SearchingPlayerNum, FName SessionName, FPicoManagerOnCancelMatchmakingCompleteDelegate OnCancelMatchmakingCompleteDelegate);
365 bool FindSessions(UObject* WorldContextObject, int32 SearchingPlayerNum, FPicoOnlineSessionSearch& NewSessionSearch, FPicoManagerOnFindSessionCompleteDelegate OnFindSessionCompleteDelegate);
366 bool FindSessionById(UObject* WorldContextObject, const FUniqueNetId& SearchingUserId, const FUniqueNetId& SessionId, const FUniqueNetId& FriendId, const FPicoManagerOnSingleSessionResultCompleteDelegate& CompletionDelegate);
367 bool JoinSession(UObject* WorldContextObject, int32 PlayerNum, FName SessionName, const FOnlineSessionSearchResult& DesiredSession, const FPicoManagerOnJoinSessionCompleteDelegate& OnJoinSessionCompleteDelegate);
368 void DumpSessionState(UObject* WorldContextObject);
369 EOnlineSessionState::Type GetSessionState(UObject* WorldContextObject, FName SessionName);
370 FNamedOnlineSession* GetNamedSession(UObject* WorldContextObject, FName SessionName);
371 FNamedOnlineSession* AddNamedSession(UObject* WorldContextObject, FName SessionName, const FOnlineSessionSettings& SessionSettings);
372 FNamedOnlineSession* AddNamedSession(UObject* WorldContextObject, FName SessionName, const FOnlineSession& Session);
373 FOnlineSessionSettings* GetSessionSettings(UObject* WorldContextObject, FName SessionName);
374 bool SendSessionInviteToFriend(UObject* WorldContextObject, int32 LocalUserNum, FName SessionName, const FUniqueNetId& Friend);
375
376 // findsessions
377 FPicoOnlineSessionSearch* PicoSessionSearchPtr;
378 TSharedPtr<FOnlineSessionSearch> SessionSearchPtr;
379 FOnlineSessionSettings SessionSettings;
380
381 // tool
382 bool IsInputSessionSearchQueryDataValid(const FPicoOnlineSessionSearch& InputSessionSearch);
383 bool IsInputSessionSettingsDataStoreValid(const FPicoOnlineSessionSettings& UpdatedSessionSettings);
384 void SetOnlineSessionSearch(const FPicoOnlineSessionSearch& InputSessionSearch);
385 FPicoOnlineSessionSettings GetPicoOnlineSessionSettings(const FOnlineSessionSettings& UpdatedSessionSettings);
386 void SetOnlineSessionSettings(const FPicoOnlineSessionSettings& UpdatedSessionSettings);
387 void SetPicoOnlineSessionSearch();
388 FOnlineSessionSettings GetOnlineSessionSettings(const FPicoOnlineSessionSettings& UpdatedSessionSettings);
389 TSharedPtr<FOnlineSessionSearch> GetOnlineSessionSearch(const FPicoOnlineSessionSearch& SessionSearch);
390
391 // Game OnComplete
392 void OnCreateSessionComplete(FName SessionName, bool bWasSuccessful);
393 void OnStartSessionComplete(FName SessionName, bool bWasSuccessful);
394 void OnUpdateSessionComplete(FName SessionName, bool bWasSuccessful);
395 void OnEndSessionComplete(FName SessionName, bool bWasSuccessful);
396 void OnDestroySessionComplete(FName SessionName, bool bWasSuccessful);
397 void OnMatchmakingComplete(FName SessionName, bool bWasSuccessful);
398 void OnCancelMatchmakingComplete(FName SessionName, bool bWasSuccessful);
399 void OnFindSessionComplete(bool Result);
400 void OnFindSessionByIdComplete(int32 LocalUserNum, bool bWasSuccessful, const FOnlineSessionSearchResult& SearchResult);
401 void OnJoinSessionComplete(FName SessionName, EOnJoinSessionCompleteResult::Type Type);
402
403
404 // Leaderboard
405#if ENGINE_MAJOR_VERSION > 4
406 bool ReadLeaderboards(UObject* WorldContextObject, const TArray< FUniqueNetIdRef >& Players, FPicoOnlineLeaderboardRead& PicoReadObject, FPicoManagerOnReadLeaderboardsCompleteDelegate OnReadLeaderboardsCompleteDelegate);
407#elif ENGINE_MINOR_VERSION > 26
408 bool ReadLeaderboards(UObject* WorldContextObject, const TArray< FUniqueNetIdRef >& Players, FPicoOnlineLeaderboardRead& PicoReadObject, FPicoManagerOnReadLeaderboardsCompleteDelegate OnReadLeaderboardsCompleteDelegate);
409#elif ENGINE_MINOR_VERSION > 24
410 bool ReadLeaderboards(UObject* WorldContextObject, const TArray< TSharedRef<const FUniqueNetId> >& Players, FPicoOnlineLeaderboardRead& PicoReadObject, FPicoManagerOnReadLeaderboardsCompleteDelegate OnReadLeaderboardsCompleteDelegate);
411#endif
412
413 bool ReadLeaderboardsForFriends(UObject* WorldContextObject, int32 LocalUserNum, FPicoOnlineLeaderboardRead& PicoReadObject, FPicoManagerOnReadLeaderboardsCompleteDelegate OnReadLeaderboardsCompleteDelegate);
414 bool WriteLeaderboards(UObject* WorldContextObject, const FName& SessionName, const FUniqueNetId& Player, FOnlineLeaderboardWrite& WriteObject);
415 void SetOnlineLeaderboardRead(const FPicoOnlineLeaderboardRead& PicoLeaderboardRead);
416 void RefreshPicoOnlineLeaderboardRead();
417
418
419 // Leaderboard OnComplete
420 void OnReadLeaderboardsComplete(bool bWasSuccessful);
421
422 FPicoOnlineLeaderboardRead* PicoLeaderboardReadPtr;
423 FOnlineLeaderboardReadPtr LeaderboardReadPtr;
424
425
426 // Presence
427 static FOnlineManagerPresenceClearDelegate PresenceClearDelegate;
428 static FOnlineManagerPresenceReadInvitableUserDelegate PresenceReadInvitableUserDelegate;
429 static FOnlineManagerPresenceSetDelegate PresenceSetDelegate;
430 static FOnlineManagerPresenceSetDestinationDelegate PresenceSetDestinationDelegate;
431 static FOnlineManagerPresenceSetIsJoinableDelegate PresenceSetIsJoinableDelegate;
432 static FOnlineManagerPresenceSetLobbySessionDelegate PresenceSetLobbySessionDelegate;
433 static FOnlineManagerPresenceSetMatchSessionDelegate PresenceSetMatchSessionDelegate;
434 static FOnlineManagerPresenceSetExtraDelegate PresenceSetExtraDelegate;
435 static FOnlineManagerPresenceReadSentInvitesDelegate PresenceReadSentInvitesDelegate;
436 static FOnlineManagerPresenceSentInvitesDelegate PresenceSentInvitesDelegate;
437 static FOnlineManagerPresenceGetDestinationsDelegate PresenceGetDestinationsDelegate;
438
439
440
441 bool PresenceClear(UObject* WorldContextObject, FOnlineManagerPresenceClearDelegate InPresenceClearDelegate);
442 void OnPresenceClearComplete(bool bIsSuccessed, const FString& ErrorMessage);
443
444 void ReadInvitableUser(UObject* WorldContextObject, TArray<FString> SuggestedUserList, FOnlineManagerPresenceReadInvitableUserDelegate InReadInvitableUserDelegate);
445 void OnReadInvitableUserComplete(bool bIsSuccessed, const FString& ErrorMessage);
446
447 bool GetInvitableFriendList(UObject* WorldContextObject, TArray<FPicoUserInfo>& OutFriendsList);
448
449 bool PresenceSet(UObject* WorldContextObject, const FString& ApiName, const FString& LobbySessionId, const FString& MatchSessionId, bool bIsJoinable, const FString& Extra, FOnlineManagerPresenceSetDelegate InPresenceSetDelegate);
450 void OnPresenceSetComplete(bool bIsSuccessed, const FString& ErrorMessage);
451
452 bool PresenceSetDestination(UObject* WorldContextObject, const FString& ApiName, FOnlineManagerPresenceSetDestinationDelegate InPresenceSetDestinationDelegate);
453 void OnPresenceSetDestinationComplete(bool bIsSuccessed, const FString& ErrorMessage);
454
455 bool PresenceSetIsJoinable(UObject* WorldContextObject, bool bIsJoinable, FOnlineManagerPresenceSetIsJoinableDelegate InPresenceSetIsJoinableDelegate);
456 void OnPresenceSetIsJoinableComplete(bool bIsSuccessed, const FString& ErrorMessage);
457
458 bool PresenceSetLobbySession(UObject* WorldContextObject, const FString& LobbySession, FOnlineManagerPresenceSetLobbySessionDelegate InPresenceSetLobbySessionDelegate);
459 void OnPresenceSetLobbySessionComplete( bool bIsSuccessed, const FString& ErrorMessage);
460
461 bool PresenceSetMatchSession(UObject* WorldContextObject, const FString& MatchSession, FOnlineManagerPresenceSetMatchSessionDelegate InPresenceSetMatchSessionDelegate);
462 void OnPresenceSetMatchSessionComplete(bool bIsSuccessed, const FString& ErrorMessage);
463
464 bool PresenceSetExtra(UObject* WorldContextObject, const FString& Extra, FOnlineManagerPresenceSetExtraDelegate InPresenceSetExtraDelegate);
465 void OnPresenceSetExtraComplete(bool bIsSuccessed, const FString& ErrorMessage);
466
467 bool PresenceReadSendInvites(UObject* WorldContextObject, FOnlineManagerPresenceReadSentInvitesDelegate InPresenceReadSendInvitesDelegate);
468 void OnPresenceReadSendInvitesComplete(bool bIsSuccessed, const FString& ErrorMessage);
469
470
471 bool PresenceSendInvites(UObject* WorldContextObject, TArray<FString> UserIdArray, FOnlineManagerPresenceSentInvitesDelegate InPresenceSentInvitesDelegate);
472 void OnSendInvitesComplete( bool bIsSuccessed, const FString& ErrorMessage);
473
474 bool GetSendInvitesList(UObject* WorldContextObject, TArray<FPicoApplicationInvite>& OutList);
475
476 bool PresenceGetDestinations(UObject* WorldContextObject, FOnlineManagerPresenceGetDestinationsDelegate InPresenceGetDestinationsDelegate);
477 void OnGetDestinationsComplete(bool bIsSuccessed, const FString& ErrorMessage);
478
479 bool PresenceGetDestinationsList(UObject* WorldContextObject, TArray<FPicoDestination>& OutList);
480
481 // ApplicationInterface
482 static FOnlineManagerLaunchOtherAppDelegate LaunchOtherAppDelegate;
483 static FOnlineManagerLaunchOtherAppByPresenceDelegate LaunchOtherAppByPresenceDelegate;
484 static FOnlineManagerGetVersionDelegate GetVersionDelegate;
485
486 bool LaunchOtherApp(UObject* WorldContextObject, const FString& AppID, const FString& Message, FOnlineManagerLaunchOtherAppDelegate InLaunchOtherAppDelegate);
487 void OnLaunchOtherAppComplete(const FString& Message, bool bIsSuccessed, const FString& ErrorMessage);
488
489 bool GetVersion(UObject* WorldContextObject, FOnlineManagerGetVersionDelegate InGetVersionDelegate);
490 void OnGetVersionComplete(const FString& Message, bool bIsSuccessed, const FString& ErrorMessage);
491
492 bool LaunchOtherAppByPresence(UObject* WorldContextObject, const FString& AppID, const FString& PackageName, const FString& Message, const FString& ApiName, const FString& LobbySessionId, const FString& MatchSessionId, const FString& TrackId, const FString& Extra, FOnlineManagerLaunchOtherAppByPresenceDelegate InLaunchOtherAppByPresenceDelegate);
493 void OnLaunchOtherAppByPresenceComplete(const FString& Message, bool bIsSuccessed, const FString& ErrorMessage);
494
495 // ApplicationLifecycle
496 static FOnlineManagerApplicationLifecycleReadDetailsDelegate ApplicationLifecycleReadDetailsDelegate;
497
498 //bool ReadLaunchDetails(UObject* WorldContextObject, FOnlineManagerApplicationLifecycleReadDetailsDelegate InApplicationLifecycleReadDetailsDelegate);
499 //void OnReadLaunchDetailsComplete(bool bIsSuccessed, const FString& ErrorMessage);
500
501 bool GetLaunchDetails(UObject* WorldContextObject, FLaunchDetails& OutLaunchDetails);
502
503 bool LogDeeplinkResult(UObject* WorldContextObject, const FString& TrackingID, ELaunchResult LaunchResult);
504
505 //
506};
OnlinePicoFriend class inherited from FOnlineFriend(Unreal Engine).
Definition: OnlineFriendsInterfacePico.h:20
Pico Presence interface class.
Definition: PicoPresenceInterface.h:45
Pico RTC interface class.
Definition: RTCPicoUserInterface.h:198