Add support for using INetworkSerializable on custom structure in C++ for networking

This commit is contained in:
Wojtek Figat
2023-03-14 00:02:47 +01:00
parent 7950c0d9d7
commit eece05c118
2 changed files with 31 additions and 0 deletions

View File

@@ -1,6 +1,7 @@
// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved.
#include "NetworkStream.h"
#include "INetworkSerializable.h"
NetworkStream::NetworkStream(const SpawnParams& params)
: ScriptingObject(params)
@@ -47,6 +48,26 @@ void NetworkStream::Initialize(byte* buffer, uint32 length)
_allocated = false;
}
void NetworkStream::Read(INetworkSerializable& obj)
{
obj.Deserialize(this);
}
void NetworkStream::Read(INetworkSerializable* obj)
{
obj->Deserialize(this);
}
void NetworkStream::Write(INetworkSerializable& obj)
{
obj.Serialize(this);
}
void NetworkStream::Write(INetworkSerializable* obj)
{
obj->Serialize(this);
}
void NetworkStream::Flush()
{
// Nothing to do

View File

@@ -6,6 +6,8 @@
#include "Engine/Serialization/ReadStream.h"
#include "Engine/Serialization/WriteStream.h"
class INetworkSerializable;
/// <summary>
/// Objects and values serialization stream for sending data over network. Uses memory buffer for both read and write operations.
/// </summary>
@@ -62,6 +64,14 @@ public:
ReadBytes(data, bytes);
}
using ReadStream::Read;
void Read(INetworkSerializable& obj);
void Read(INetworkSerializable* obj);
using WriteStream::Write;
void Write(INetworkSerializable& obj);
void Write(INetworkSerializable* obj);
public:
// [Stream]
void Flush() override;