From d5100373be5ad999626b4f26130b067f9773ec4b Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Fri, 30 Jun 2023 10:38:08 +0200 Subject: [PATCH] Fix bugs in C# codegen for network data serialization --- Source/Tools/Flax.Build/Build/Plugins/NetworkingPlugin.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Source/Tools/Flax.Build/Build/Plugins/NetworkingPlugin.cs b/Source/Tools/Flax.Build/Build/Plugins/NetworkingPlugin.cs index d76fc43cc..d646a81cd 100644 --- a/Source/Tools/Flax.Build/Build/Plugins/NetworkingPlugin.cs +++ b/Source/Tools/Flax.Build/Build/Plugins/NetworkingPlugin.cs @@ -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); // // Serialize item value