diff --git a/Gems/Multiplayer/Code/Source/Editor/MultiplayerEditorConnection.cpp b/Gems/Multiplayer/Code/Source/Editor/MultiplayerEditorConnection.cpp index e5f7ed4a68..2fdd29c542 100644 --- a/Gems/Multiplayer/Code/Source/Editor/MultiplayerEditorConnection.cpp +++ b/Gems/Multiplayer/Code/Source/Editor/MultiplayerEditorConnection.cpp @@ -27,12 +27,10 @@ namespace Multiplayer { using namespace AzNetworking; - static AZStd::vector buffer; - static AZ::IO::ByteContainerStream> s_byteStream(&buffer); - AZ_CVAR(bool, editorsv_isDedicated, false, nullptr, AZ::ConsoleFunctorFlags::DontReplicate, "Whether to init as a server expecting data from an Editor. Do not modify unless you're sure of what you're doing."); MultiplayerEditorConnection::MultiplayerEditorConnection() + : m_byteStream(&m_buffer) { m_networkEditorInterface = AZ::Interface::Get()->CreateNetworkInterface( AZ::Name(MPEditorInterfaceName), ProtocolType::Tcp, TrustZone::ExternalClientToServer, *this); @@ -59,31 +57,31 @@ namespace Multiplayer if (!packet.GetLastUpdate()) { // More packets are expected, flush this to the buffer - s_byteStream.Write(TcpPacketEncodingBuffer::GetCapacity(), reinterpret_cast(packet.ModifyAssetData().GetBuffer())); + m_byteStream.Write(TcpPacketEncodingBuffer::GetCapacity(), reinterpret_cast(packet.ModifyAssetData().GetBuffer())); } else { // This is the last expected packet, flush it to the buffer - s_byteStream.Write(packet.GetAssetData().GetSize(), reinterpret_cast(packet.ModifyAssetData().GetBuffer())); + m_byteStream.Write(packet.GetAssetData().GetSize(), reinterpret_cast(packet.ModifyAssetData().GetBuffer())); // Read all assets out of the buffer - s_byteStream.Seek(0, AZ::IO::GenericStream::SeekMode::ST_SEEK_BEGIN); + m_byteStream.Seek(0, AZ::IO::GenericStream::SeekMode::ST_SEEK_BEGIN); AZStd::vector> assetData; - while (s_byteStream.GetCurPos() < s_byteStream.GetLength()) + while (m_byteStream.GetCurPos() < m_byteStream.GetLength()) { AZ::Data::AssetId assetId; AZ::Data::AssetLoadBehavior assetLoadBehavior; uint32_t hintSize; AZStd::string assetHint; - s_byteStream.Read(sizeof(AZ::Data::AssetId), reinterpret_cast(&assetId)); - s_byteStream.Read(sizeof(AZ::Data::AssetLoadBehavior), reinterpret_cast(&assetLoadBehavior)); - s_byteStream.Read(sizeof(uint32_t), reinterpret_cast(&hintSize)); + m_byteStream.Read(sizeof(AZ::Data::AssetId), reinterpret_cast(&assetId)); + m_byteStream.Read(sizeof(AZ::Data::AssetLoadBehavior), reinterpret_cast(&assetLoadBehavior)); + m_byteStream.Read(sizeof(uint32_t), reinterpret_cast(&hintSize)); assetHint.resize(hintSize); - s_byteStream.Read(hintSize, assetHint.data()); + m_byteStream.Read(hintSize, assetHint.data()); - size_t assetSize = s_byteStream.GetCurPos(); - AZ::Data::AssetData* assetDatum = AZ::Utils::LoadObjectFromStream(s_byteStream, nullptr); - assetSize = s_byteStream.GetCurPos() - assetSize; + size_t assetSize = m_byteStream.GetCurPos(); + AZ::Data::AssetData* assetDatum = AZ::Utils::LoadObjectFromStream(m_byteStream, nullptr); + assetSize = m_byteStream.GetCurPos() - assetSize; AZ::Data::Asset asset = AZ::Data::Asset(assetId, assetDatum, assetLoadBehavior); asset.SetHint(assetHint); @@ -101,8 +99,8 @@ namespace Multiplayer } // Now that we've deserialized, clear the byte stream - s_byteStream.Seek(0, AZ::IO::GenericStream::SeekMode::ST_SEEK_BEGIN); - s_byteStream.Truncate(); + m_byteStream.Seek(0, AZ::IO::GenericStream::SeekMode::ST_SEEK_BEGIN); + m_byteStream.Truncate(); // Load the level via the root spawnable that was registered AZ::CVarFixedString loadLevelString = "LoadLevel Root.spawnable"; diff --git a/Gems/Multiplayer/Code/Source/Editor/MultiplayerEditorConnection.h b/Gems/Multiplayer/Code/Source/Editor/MultiplayerEditorConnection.h index 3621e3aee6..d559651080 100644 --- a/Gems/Multiplayer/Code/Source/Editor/MultiplayerEditorConnection.h +++ b/Gems/Multiplayer/Code/Source/Editor/MultiplayerEditorConnection.h @@ -51,5 +51,7 @@ namespace Multiplayer private: AzNetworking::INetworkInterface* m_networkEditorInterface = nullptr; + AZStd::vector m_buffer; + AZ::IO::ByteContainerStream> m_byteStream; }; }