3#include "SteamBeaconGameInstance.h"
9#include "VivoxGameInstance.generated.h"
11#define VIVOX_ALLOW_EDITOR 0
12#define VIVOX_ALLOW_PROD 1
15#define VIVOX_ENABLED ((WITH_EDITOR && VIVOX_ALLOW_EDITOR) || (!WITH_EDITOR && VIVOX_ALLOW_PROD)) && 1
74 bool IsValid() {
return !SessionName.Equals(
"Invalid"); }
85 virtual void Init()
override;
86 virtual void Shutdown()
override;
87 void OnClientTravel(
const FString& PendingURL, ETravelType TravelType,
bool bIsSeamlessTravel);
89 virtual const FString GetPlatformAccountID();
91 UFUNCTION(BlueprintPure)
92 static FString GetVivoxSafeName(
const FString BaseName);
93 UFUNCTION(BlueprintPure)
94 static FString GetVivoxSafePlayerName(
const FString BaseName);
95 UFUNCTION(BlueprintPure)
96 static APlayerState* GetPlayerStateByVivoxName(
const UObject* WorldContextObject, UPARAM(ref)
const FString& ID);
97 UFUNCTION(BlueprintPure, Category =
"VOIP")
98 float GetParticipantVolume()
const;
99 UFUNCTION(BlueprintPure)
100 bool IsUsingPushToTalk()
const {
return bUsingPushToTalk; };
101 UFUNCTION(BlueprintCallable, Category =
"VOIP")
102 void UpdateParticipantVolume(const
float Volume);
103 UFUNCTION(BlueprintCallable, Category = "VOIP")
104 void UpdatePushToTalk(const
bool bNewPushToTalk);
106 UPROPERTY(BlueprintAssignable)
107 FParticipantUpdated OnParticipantUpdated;
109 bool bUsingPushToTalk = false;
114 virtual bool Exec(UWorld* InWorld,
const TCHAR* Cmd, FOutputDevice& Out = *GLog)
override;
117 virtual void InitBeaconHost()
override;
118 virtual void InitBeaconClient(
const FOnlineSessionSearchResult& DesiredHost)
override;
119 virtual void InitBeaconClientForServerPlayer()
override;
121 void BindLoginSessionHandlers(
bool DoBind, ILoginSession& LoginSession);
122 void BindChannelSessionHandlers(
bool DoBind, IChannelSession& ChannelSession);
124 VivoxCoreError Initialize(
int logLevel);
127 VivoxCoreError Login(
const FString& PlayerName);
130 void ReJoinVoiceChannels();
131 void ReJoinLastKnownSquadChannel();
132 void RejoinPartyVoiceChannel();
133 VivoxCoreError JoinVoiceChannels(FString OnlineSessionId, int32 TeamNum = -1);
134 VivoxCoreError JoinVoiceChannels(FString OnlineSessionId, int32 TeamNum,
bool bUseOpenMic);
135 VivoxCoreError Join(ChannelType Type,
bool IsOpenMic, FString ChannelName);
136 VivoxCoreError MultiChanPushToTalk(
bool PTTKeyPressed);
139 void Update3DPosition(APawn* Pawn);
142 void OnLoginSessionStateChanged(LoginState State);
143 void OnChannelParticipantAdded(
const IParticipant& Participant);
144 void OnChannelParticipantRemoved(
const IParticipant& Participant);
145 void OnChannelParticipantUpdated(
const IParticipant& Participant);
146 void OnChannelAudioStateChanged(
const IChannelConnectionState& State);
147 void OnChannelTextStateChanged(
const IChannelConnectionState& State);
148 void OnChannelTextMessageReceived(
const IChannelTextMessage& Message);
150 virtual bool IsInitialized();
151 virtual bool IsLoggedIn();
155 virtual void OnPlayerStateEvent(ASteamBeaconPlayerState* InPlayerState)
override;
157 virtual void OnSteamBeaconHostConnectionFailureEvent()
override;
160 bool ChangeSoundClassVolume(
float Volume,
const FSoftObjectPath& SoundClassPath);
170 TSharedPtr<IChannelSession> GetChannelSessionForRoster();
174 static bool bCleanedUp;
175 FTimerHandle DelayDummyHandle;
176 FTimerHandle RejoinSquadTimerHandle;
177 FVivoxCoreModule* VivoxModule;
178 FString LoggedInPlayerName;
179 ChannelId ConnectedPositionalChannel;
185 TMap<FString, FString> KnownParticipants = TMap<FString, FString>();
188 bool Get3DValuesAreDirty()
const;
189 void Clear3DValuesAreDirty();
DEFINE_LOG_CATEGORY_STATIC(LogVivoxGameInstance, Log, All)
DECLARE_DYNAMIC_MULTICAST_DELEGATE_ThreeParams(FParticipantUpdated, bool, bIsSelf, const FString &, PlayerName, bool, bIsSpeaking)
Definition: ProjectXPlayerState.h:238
Definition: VivoxGameInstance.h:29
const T & GetValue() const
Definition: VivoxGameInstance.h:36
CachedProperty(T value)
Definition: VivoxGameInstance.h:31
void SetValue(const T &value)
Definition: VivoxGameInstance.h:40
void SetDirty(bool value)
Definition: VivoxGameInstance.h:47
bool m_dirty
Definition: VivoxGameInstance.h:55
T m_value
Definition: VivoxGameInstance.h:56
bool IsDirty() const
Definition: VivoxGameInstance.h:51
Definition: VivoxGameInstance.h:79
bool bLoggedIn
Definition: VivoxGameInstance.h:167
bool bInitializing
Definition: VivoxGameInstance.h:166
FVoiceChannelInfo PartyVoiceChannel
Definition: VivoxGameInstance.h:171
bool bInitialized
Definition: VivoxGameInstance.h:165
bool bRelogging
Definition: VivoxGameInstance.h:169
bool bLoggingIn
Definition: VivoxGameInstance.h:168
IClient * VivoxVoiceClient
Definition: VivoxGameInstance.h:163
AccountId LoggedInAccountID
Definition: VivoxGameInstance.h:164
Definition: VivoxGameInstance.h:22
static void GenerateClientLoginToken(const ILoginSession &LoginSession, FString &OutToken)
Definition: VivoxGameInstance.cpp:32
static void GenerateClientJoinToken(const IChannelSession &ChannelSession, FString &OutToken)
Definition: VivoxGameInstance.cpp:41
Definition: VivoxGameInstance.h:66