Skip to content

Commit 252e884

Browse files
committed
Handle each type individually
1 parent de0145c commit 252e884

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

Reactor/Networking/Serialization/MessageSerializer.cs

+10-7
Original file line numberDiff line numberDiff line change
@@ -91,12 +91,13 @@ public static void Serialize(this MessageWriter writer, object @object)
9191
case Vector2 i:
9292
writer.Write(i);
9393
break;
94-
case Enum i:
95-
writer.WritePacked(Convert.ToInt32(i, CultureInfo.InvariantCulture));
96-
break;
9794
case string i:
9895
writer.Write(i);
9996
break;
97+
case Enum i:
98+
var underlyingValue = Convert.ChangeType(i, Enum.GetUnderlyingType(i.GetType()), CultureInfo.InvariantCulture);
99+
Serialize(writer, underlyingValue);
100+
break;
100101
default:
101102
var converter = FindConverter(@object.GetType());
102103
if (converter != null)
@@ -157,14 +158,16 @@ public static object Deserialize(this MessageReader reader, Type objectType)
157158
return reader.ReadVector2();
158159
}
159160

160-
if (objectType.IsEnum)
161+
if (objectType == typeof(string))
161162
{
162-
return Enum.ToObject(objectType, reader.ReadPackedInt32());
163+
return reader.ReadString();
163164
}
164165

165-
if (objectType == typeof(string))
166+
if (objectType.IsEnum)
166167
{
167-
return reader.ReadString();
168+
var underlyingType = Enum.GetUnderlyingType(objectType);
169+
var underlyingValue = Deserialize(reader, underlyingType);
170+
return Enum.ToObject(objectType, underlyingValue);
168171
}
169172

170173
var converter = FindConverter(objectType);

0 commit comments

Comments
 (0)