diff options
Diffstat (limited to 'source/client')
-rw-r--r-- | source/client/StarClientApplication.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/source/client/StarClientApplication.cpp b/source/client/StarClientApplication.cpp index 8dfd110..f7ab21b 100644 --- a/source/client/StarClientApplication.cpp +++ b/source/client/StarClientApplication.cpp @@ -16,7 +16,7 @@ #include "StarRootLoader.hpp" #include "StarInput.hpp" #include "StarVoice.hpp" - +#include "StarCurve25519.hpp" #include "StarInterfaceLuaBindings.hpp" #include "StarInputLuaBindings.hpp" @@ -855,9 +855,8 @@ void ClientApplication::updateRunning() { m_voice->setInput(m_input->bindHeld("opensb", "pushToTalk")); DataStreamBuffer voiceData; voiceData.setByteOrder(ByteOrder::LittleEndian); - voiceData.writeBytes(VoiceBroadcastPrefix.utf8Bytes()); + //voiceData.writeBytes(VoiceBroadcastPrefix.utf8Bytes()); transmitting with SE compat for now bool needstoSendVoice = m_voice->send(voiceData, 5000); - m_universeClient->update(); if (checkDisconnection()) @@ -881,8 +880,13 @@ void ClientApplication::updateRunning() { } if (worldClient->inWorld()) { - if (needstoSendVoice) - worldClient->sendSecretBroadcast(StringView(voiceData.ptr(), voiceData.size())); + if (needstoSendVoice) { + auto signature = Curve25519::sign(voiceData.ptr(), voiceData.size()); + std::string_view signatureView((char*)signature.data(), signature.size()); + std::string_view audioDataView(voiceData.ptr(), voiceData.size()); + auto broadcast = strf("data\0voice\0{}{}"s, signatureView, audioDataView); + worldClient->sendSecretBroadcast(broadcast, true); + } m_voice->setLocalSpeaker(worldClient->connection()); } worldClient->setInteractiveHighlightMode(isActionTaken(InterfaceAction::ShowLabels)); |