Skip to content

Commit 05ea731

Browse files
rucchoNoelStephensUnity
authored andcommitted
fixed serialization method resolution for non-by-ref first parameter
1 parent 2041f7e commit 05ea731

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

com.unity.netcode.gameobjects/Editor/CodeGen/NetworkBehaviourILPP.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -993,12 +993,17 @@ private bool ImportReferences(ModuleDefinition moduleDefinition, string[] assemb
993993

994994
var parameters = method.Parameters;
995995

996-
if (parameters.Count != 2 || parameters[0].ParameterType is not ByReferenceType firstParameterType)
996+
if (parameters.Count != 2)
997997
{
998998
continue;
999999
}
10001000

1001-
if (firstParameterType.ElementType.FullName != m_FastBufferWriter_TypeRef.FullName && firstParameterType.ElementType.FullName != m_FastBufferReader_TypeRef.FullName)
1001+
var firstParameterType = parameters[0].ParameterType;
1002+
1003+
// ReadValueSafe() and WriteValueSafe() can use both by-ref and non-by-ref type for the first parameter type
1004+
var firstParameterElementType = firstParameterType is ByReferenceType byRefType ? byRefType.ElementType : firstParameterType;
1005+
1006+
if (firstParameterElementType.FullName != m_FastBufferWriter_TypeRef.FullName && firstParameterElementType.FullName != m_FastBufferReader_TypeRef.FullName)
10021007
{
10031008
continue;
10041009
}
@@ -1011,6 +1016,7 @@ private bool ImportReferences(ModuleDefinition moduleDefinition, string[] assemb
10111016
attr.Constructor.Resolve() == extensionConstructor.Resolve())
10121017
{
10131018
isExtension = true;
1019+
break;
10141020
}
10151021
}
10161022

0 commit comments

Comments
 (0)