Skip to content

Commit 087a2f7

Browse files
committed
ClientRpc properly assigned InvokePermission
Assigning ClientRpc.InvokePermission in the constructor was incorrect. Since we can check if it is a ClientRpc easily, I just do that in ILPP
1 parent d4f3fec commit 087a2f7

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed

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

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1440,6 +1440,8 @@ private void ProcessNetworkBehaviour(TypeDefinition typeDefinition, string[] ass
14401440
callMethod = callMethod.MakeGeneric(genericTypes.ToArray());
14411441
}
14421442

1443+
var isClientRpc = rpcAttribute.AttributeType.FullName == CodeGenHelpers.ClientRpcAttribute_FullName;
1444+
14431445
var invokePermission = RpcInvokePermission.Anyone;
14441446

14451447
foreach (var attrField in rpcAttribute.Fields)
@@ -1455,7 +1457,12 @@ private void ProcessNetworkBehaviour(TypeDefinition typeDefinition, string[] ass
14551457
}
14561458
}
14571459

1458-
// __registerRpc(RpcMethodId, HandleFunc, methodName);
1460+
if (isClientRpc)
1461+
{
1462+
invokePermission = RpcInvokePermission.Server;
1463+
}
1464+
1465+
// __registerRpc(RpcMethodId, HandleFunc, invokePermission, methodName);
14591466
instructions.Add(processor.Create(OpCodes.Ldarg_0));
14601467
instructions.Add(processor.Create(OpCodes.Ldc_I4, unchecked((int)rpcMethodId)));
14611468
instructions.Add(processor.Create(OpCodes.Ldnull));
@@ -2892,7 +2899,7 @@ private MethodDefinition GenerateStaticHandler(MethodDefinition methodDefinition
28922899
var processor = rpcHandler.Body.GetILProcessor();
28932900

28942901
var isServerRpc = rpcAttribute.AttributeType.FullName == CodeGenHelpers.ServerRpcAttribute_FullName;
2895-
var isCientRpc = rpcAttribute.AttributeType.FullName == CodeGenHelpers.ClientRpcAttribute_FullName;
2902+
var isClientRpc = rpcAttribute.AttributeType.FullName == CodeGenHelpers.ClientRpcAttribute_FullName;
28962903
var isGenericRpc = rpcAttribute.AttributeType.FullName == CodeGenHelpers.RpcAttribute_FullName;
28972904
var invokePermission = RpcInvokePermission.Anyone;
28982905
foreach (var attrField in rpcAttribute.Fields)
@@ -2908,6 +2915,12 @@ private MethodDefinition GenerateStaticHandler(MethodDefinition methodDefinition
29082915
}
29092916
}
29102917

2918+
// legacy ClientRpc should always be RpcInvokePermission.Server
2919+
if (isClientRpc)
2920+
{
2921+
invokePermission = RpcInvokePermission.Server;
2922+
}
2923+
29112924
rpcHandler.Body.InitLocals = true;
29122925
// NetworkManager networkManager;
29132926
rpcHandler.Body.Variables.Add(new VariableDefinition(m_NetworkManager_TypeRef));

com.unity.netcode.gameobjects/Runtime/Messaging/RpcAttributes.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,6 @@ public class ClientRpcAttribute : RpcAttribute
150150
/// </summary>
151151
public ClientRpcAttribute() : base(SendTo.NotServer)
152152
{
153-
InvokePermission = RpcInvokePermission.Server;
154153
}
155154
}
156155
}

0 commit comments

Comments
 (0)