Fix bugs in C# codegen for network data serialization

This commit is contained in:
Wojtek Figat
2023-06-30 10:38:08 +02:00
parent 8c006f6e11
commit d5100373be

View File

@@ -780,7 +780,7 @@ namespace Flax.Build.Plugins
private static void GenerateCallINetworkSerializable(ref DotnetContext context, TypeDefinition type, string name, MethodDefinition method)
{
var m = new MethodDefinition(name, MethodAttributes.Public | MethodAttributes.HideBySig, context.VoidType);
m.Parameters.Add(new ParameterDefinition("stream", ParameterAttributes.None, context.NetworkStreamType));
m.Parameters.Add(new ParameterDefinition("stream", ParameterAttributes.None, type.Module.ImportReference(context.NetworkStreamType)));
ILProcessor il = m.Body.GetILProcessor();
il.Emit(OpCodes.Nop);
il.Emit(OpCodes.Ldarg_0);
@@ -1304,7 +1304,10 @@ namespace Flax.Build.Plugins
il.Emit(jmp4);
valueContext.Load(ref il);
il.Emit(OpCodes.Ldloc, varStart + 1); // idx
il.Emit(OpCodes.Ldelem_Ref);
if (elementType.IsValueType)
il.Emit(OpCodes.Ldelem_Any, elementType);
else
il.Emit(OpCodes.Ldelem_Ref);
il.Emit(OpCodes.Stloc, varStart + 2); // <elementType>
// Serialize item value