Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions com.unity.netcode.gameobjects/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ Additional documentation and release notes are available at [Multiplayer Documen

### Changed

- Improve performance of `CreateObjectMessage`. (#3800)
- First pass of CoreCLR engine API changes. (#3799)
- Changed when a server is disconnecting a client with a reason it now defers the complete transport disconnect sequence until the end of the frame after the server's transport has sent all pending outbound messages. (#3786)
- Improve performance of `NetworkTransformState`. (#3770)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,62 +32,17 @@ internal struct CreateObjectMessage : INetworkMessage
private const byte k_UpdateObservers = 0x02;
private const byte k_UpdateNewObservers = 0x04;


private byte m_CreateObjectMessageTypeFlags;

internal bool IncludesSerializedObject
{
get
{
return GetFlag(k_IncludesSerializedObject);
}

set
{
SetFlag(value, k_IncludesSerializedObject);
}
}

internal bool UpdateObservers
{
get
{
return GetFlag(k_UpdateObservers);
}

set
{
SetFlag(value, k_UpdateObservers);
}
}

internal bool UpdateNewObservers
{
get
{
return GetFlag(k_UpdateNewObservers);
}

set
{
SetFlag(value, k_UpdateNewObservers);
}
}

private bool GetFlag(int flag)
{
return (m_CreateObjectMessageTypeFlags & flag) != 0;
}

private void SetFlag(bool set, byte flag)
{
if (set) { m_CreateObjectMessageTypeFlags = (byte)(m_CreateObjectMessageTypeFlags | flag); }
else { m_CreateObjectMessageTypeFlags = (byte)(m_CreateObjectMessageTypeFlags & ~flag); }
}
internal bool IncludesSerializedObject;
internal bool UpdateObservers;
internal bool UpdateNewObservers;

public void Serialize(FastBufferWriter writer, int targetVersion)
{
writer.WriteValueSafe(m_CreateObjectMessageTypeFlags);
byte bitset = 0x00;
if (IncludesSerializedObject) { bitset |= k_IncludesSerializedObject; }
if (UpdateObservers) { bitset |= k_UpdateObservers; }
if (UpdateNewObservers) { bitset |= k_UpdateNewObservers; }
writer.WriteByteSafe(bitset);

if (UpdateObservers)
{
Expand Down Expand Up @@ -125,7 +80,11 @@ public bool Deserialize(FastBufferReader reader, ref NetworkContext context, int
return false;
}

reader.ReadValueSafe(out m_CreateObjectMessageTypeFlags);
reader.ReadByteSafe(out byte bitset);
IncludesSerializedObject = (bitset & k_IncludesSerializedObject) != 0;
UpdateObservers = (bitset & k_UpdateObservers) != 0;
UpdateNewObservers = (bitset & k_UpdateNewObservers) != 0;

if (UpdateObservers)
{
var length = 0;
Expand Down