Skip to content

Commit

Permalink
fix: fixing rpc return values for unity 2021.2 (#1000)
Browse files Browse the repository at this point in the history
making Skeleton method static and adding the behaviour as the first arg.

Previously method was an instance method,. and behaviour was assumed to be first arg, this seemed to work in older versions of unity but has broken in 2021.2 when the method has a return value
  • Loading branch information
James-Frowen committed Dec 4, 2021
1 parent 13e8780 commit a6ee5e8
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions Assets/Mirage/Weaver/Processors/ServerRpcProcessor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -176,19 +176,21 @@ private void CallSendServerRpc(MethodDefinition md, ILProcessor worker)
MethodDefinition GenerateSkeleton(MethodDefinition method, MethodDefinition userCodeFunc, ValueSerializer[] paramSerializers)
{
MethodDefinition cmd = method.DeclaringType.AddMethod(SkeletonPrefix + method.Name,
MethodAttributes.Family | MethodAttributes.HideBySig,
MethodAttributes.Family | MethodAttributes.HideBySig | MethodAttributes.Static,
userCodeFunc.ReturnType);

_ = cmd.AddParam(method.DeclaringType, "behaviour");
ParameterDefinition readerParameter = cmd.AddParam<NetworkReader>("reader");
ParameterDefinition senderParameter = cmd.AddParam<INetworkPlayer>("senderConnection");
_ = cmd.AddParam<int>("replyId");


ILProcessor worker = cmd.Body.GetILProcessor();

// setup for reader
// load `behaviour.`
worker.Append(worker.Create(OpCodes.Ldarg_0));

// read and load args
ReadArguments(method, worker, readerParameter, senderParameter, false, paramSerializers);

// invoke actual ServerRpc function
Expand Down

0 comments on commit a6ee5e8

Please sign in to comment.