Skip to content

Commit 26f6311

Browse files
committed
Optimization
1 parent 73e9963 commit 26f6311

File tree

1 file changed

+19
-48
lines changed

1 file changed

+19
-48
lines changed

com.unity.netcode.gameobjects/Runtime/Messaging/Messages/CreateObjectMessage.cs

Lines changed: 19 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -29,68 +29,38 @@ internal struct CreateObjectMessage : INetworkMessage
2929
internal ulong NetworkObjectId;
3030

3131

32-
//TODO Replace all bytes by boolean field
3332
private const byte k_IncludesSerializedObject = 0x01;
3433
private const byte k_UpdateObservers = 0x02;
3534
private const byte k_UpdateNewObservers = 0x04;
3635

37-
3836
private byte m_CreateObjectMessageTypeFlags;
3937

40-
internal bool IncludesSerializedObject
41-
{
42-
get
43-
{
44-
return GetFlag(k_IncludesSerializedObject);
45-
}
46-
47-
set
48-
{
49-
SetFlag(value, k_IncludesSerializedObject);
50-
}
51-
}
52-
53-
internal bool UpdateObservers
54-
{
55-
get
56-
{
57-
return GetFlag(k_UpdateObservers);
58-
}
38+
internal bool IncludesSerializedObject;
39+
internal bool UpdateObservers;
40+
internal bool UpdateNewObservers;
5941

60-
set
61-
{
62-
SetFlag(value, k_UpdateObservers);
63-
}
64-
}
65-
66-
internal bool UpdateNewObservers
67-
{
68-
get
69-
{
70-
return GetFlag(k_UpdateNewObservers);
71-
}
72-
73-
set
74-
{
75-
SetFlag(value, k_UpdateNewObservers);
76-
}
77-
}
78-
79-
private bool GetFlag(int flag)
42+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
43+
internal uint GetBitsetRepresentation()
8044
{
81-
return (m_CreateObjectMessageTypeFlags & flag) != 0;
45+
uint bitset = 0;
46+
if (IncludesSerializedObject) { bitset |= k_IncludesSerializedObject; }
47+
if (UpdateObservers) { bitset |= k_UpdateObservers; }
48+
if (UpdateNewObservers) { bitset |= k_UpdateNewObservers; }
49+
return bitset;
8250
}
8351

84-
private void SetFlag(bool set, byte flag)
52+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
53+
internal void SetStateFromBitset(uint bitset)
8554
{
86-
if (set) { m_CreateObjectMessageTypeFlags = (byte)(m_CreateObjectMessageTypeFlags | flag); }
87-
else { m_CreateObjectMessageTypeFlags = (byte)(m_CreateObjectMessageTypeFlags & ~flag); }
55+
IncludesSerializedObject = (bitset & k_IncludesSerializedObject) != 0;
56+
UpdateObservers = (bitset & k_UpdateObservers) != 0;
57+
UpdateNewObservers = (bitset & k_UpdateNewObservers) != 0;
8858
}
8959

9060
public void Serialize(FastBufferWriter writer, int targetVersion)
9161
{
92-
// TODO Create a byte, see Landed PR, set all the values and then write
93-
writer.WriteValueSafe(m_CreateObjectMessageTypeFlags);
62+
uint getBitsetRepresentation = GetBitsetRepresentation();
63+
writer.WriteValueSafe(getBitsetRepresentation);
9464

9565
if (UpdateObservers)
9666
{
@@ -128,8 +98,9 @@ public bool Deserialize(FastBufferReader reader, ref NetworkContext context, int
12898
return false;
12999
}
130100

131-
// TODO Read a byte, if bool returned
132101
reader.ReadValueSafe(out m_CreateObjectMessageTypeFlags);
102+
SetStateFromBitset(m_CreateObjectMessageTypeFlags);
103+
133104
if (UpdateObservers)
134105
{
135106
var length = 0;

0 commit comments

Comments
 (0)