Skip to content
Merged
Changes from 3 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
Original file line number Diff line number Diff line change
Expand Up @@ -28,66 +28,39 @@ internal struct CreateObjectMessage : INetworkMessage
// to clients that already have the NetworkObject spawned
internal ulong NetworkObjectId;


private const byte k_IncludesSerializedObject = 0x01;
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);
}
internal bool IncludesSerializedObject;
internal bool UpdateObservers;
internal bool UpdateNewObservers;

set
{
SetFlag(value, k_UpdateNewObservers);
}
}

private bool GetFlag(int flag)
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal uint GetBitsetRepresentation()
Comment thread
noellie-velez marked this conversation as resolved.
Outdated
{
return (m_CreateObjectMessageTypeFlags & flag) != 0;
uint bitset = 0;
if (IncludesSerializedObject) { bitset |= k_IncludesSerializedObject; }
if (UpdateObservers) { bitset |= k_UpdateObservers; }
if (UpdateNewObservers) { bitset |= k_UpdateNewObservers; }
return bitset;
}

private void SetFlag(bool set, byte flag)
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal void SetStateFromBitset(uint bitset)
{
if (set) { m_CreateObjectMessageTypeFlags = (byte)(m_CreateObjectMessageTypeFlags | flag); }
else { m_CreateObjectMessageTypeFlags = (byte)(m_CreateObjectMessageTypeFlags & ~flag); }
IncludesSerializedObject = (bitset & k_IncludesSerializedObject) != 0;
UpdateObservers = (bitset & k_UpdateObservers) != 0;
UpdateNewObservers = (bitset & k_UpdateNewObservers) != 0;
}

public void Serialize(FastBufferWriter writer, int targetVersion)
{
writer.WriteValueSafe(m_CreateObjectMessageTypeFlags);
uint getBitsetRepresentation = GetBitsetRepresentation();
writer.WriteValueSafe(getBitsetRepresentation);

if (UpdateObservers)
{
Expand Down Expand Up @@ -126,6 +99,8 @@ public bool Deserialize(FastBufferReader reader, ref NetworkContext context, int
}

reader.ReadValueSafe(out m_CreateObjectMessageTypeFlags);
SetStateFromBitset(m_CreateObjectMessageTypeFlags);

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