From 1ffc9fa742940f75a3fb4a808058001ab4b9b5a5 Mon Sep 17 00:00:00 2001 From: "M. Fatih MAR" Date: Thu, 17 Jun 2021 03:44:53 +0100 Subject: [PATCH] refactor: move RpcMethodId serialization from ILPP to Core --- .../Editor/CodeGen/NetworkBehaviourILPP.cs | 74 +++++++++---------- .../Runtime/Core/NetworkBehaviour.cs | 10 ++- .../Runtime/Core/NetworkManager.cs | 9 +-- .../Messaging/RpcQueue/RpcQueueContainer.cs | 1 + .../Tests/Runtime/MultiInstance.meta | 3 - .../MultiInstanceHelpers.cs.meta | 3 - .../Runtime/MultiInstance/RPCTests.cs.meta | 3 - .../MultiInstanceHelpers.cs | 0 .../Runtime/MultiInstanceHelpers.cs.meta | 11 +++ .../RPCTests.cs => RpcTests.cs} | 60 +++++++-------- .../Tests/Runtime/RpcTests.cs.meta | 11 +++ testproject/Assets/Scripts.meta | 8 ++ .../Assets/Tests/Runtime/RpcTestsAutomated.cs | 2 +- 13 files changed, 109 insertions(+), 86 deletions(-) delete mode 100644 com.unity.multiplayer.mlapi/Tests/Runtime/MultiInstance.meta delete mode 100644 com.unity.multiplayer.mlapi/Tests/Runtime/MultiInstance/MultiInstanceHelpers.cs.meta delete mode 100644 com.unity.multiplayer.mlapi/Tests/Runtime/MultiInstance/RPCTests.cs.meta rename com.unity.multiplayer.mlapi/Tests/Runtime/{MultiInstance => }/MultiInstanceHelpers.cs (100%) create mode 100644 com.unity.multiplayer.mlapi/Tests/Runtime/MultiInstanceHelpers.cs.meta rename com.unity.multiplayer.mlapi/Tests/Runtime/{MultiInstance/RPCTests.cs => RpcTests.cs} (66%) create mode 100644 com.unity.multiplayer.mlapi/Tests/Runtime/RpcTests.cs.meta create mode 100644 testproject/Assets/Scripts.meta diff --git a/com.unity.multiplayer.mlapi/Editor/CodeGen/NetworkBehaviourILPP.cs b/com.unity.multiplayer.mlapi/Editor/CodeGen/NetworkBehaviourILPP.cs index 2e37e6cd40..33d9bfcd00 100644 --- a/com.unity.multiplayer.mlapi/Editor/CodeGen/NetworkBehaviourILPP.cs +++ b/com.unity.multiplayer.mlapi/Editor/CodeGen/NetworkBehaviourILPP.cs @@ -522,32 +522,32 @@ private bool ImportReferences(ModuleDefinition moduleDefinition) private void ProcessNetworkBehaviour(TypeDefinition typeDefinition, string[] assemblyDefines) { - var rpcHandlers = new List<(uint RpcHash, MethodDefinition RpcHandler)>(); - var rpcNames = new List<(uint RpcHash, string RpcName)>(); + var rpcHandlers = new List<(uint RpcMethodId, MethodDefinition RpcHandler)>(); + var rpcNames = new List<(uint RpcMethodId, string RpcMethodName)>(); bool isEditorOrDevelopment = assemblyDefines.Contains("UNITY_EDITOR") || assemblyDefines.Contains("DEVELOPMENT_BUILD"); foreach (var methodDefinition in typeDefinition.Methods) { - var rpcAttribute = CheckAndGetRPCAttribute(methodDefinition); + var rpcAttribute = CheckAndGetRpcAttribute(methodDefinition); if (rpcAttribute == null) { continue; } - var methodDefHash = methodDefinition.Hash(); - if (methodDefHash == 0) + var rpcMethodId = methodDefinition.Hash(); + if (rpcMethodId == 0) { continue; } - InjectWriteAndCallBlocks(methodDefinition, rpcAttribute, methodDefHash); + InjectWriteAndCallBlocks(methodDefinition, rpcAttribute, rpcMethodId); - rpcHandlers.Add((methodDefHash, GenerateStaticHandler(methodDefinition, rpcAttribute))); + rpcHandlers.Add((rpcMethodId, GenerateStaticHandler(methodDefinition, rpcAttribute))); if (isEditorOrDevelopment) { - rpcNames.Add((methodDefHash, methodDefinition.Name)); + rpcNames.Add((rpcMethodId, methodDefinition.Name)); } } @@ -570,25 +570,25 @@ private void ProcessNetworkBehaviour(TypeDefinition typeDefinition, string[] ass var instructions = new List(); var processor = staticCtorMethodDef.Body.GetILProcessor(); - foreach (var (rpcHash, rpcHandler) in rpcHandlers) + foreach (var (rpcMethodId, rpcHandler) in rpcHandlers) { typeDefinition.Methods.Add(rpcHandler); - // NetworkManager.__rpc_func_table.Add(RpcHash, HandleFunc); + // NetworkManager.__rpc_func_table.Add(RpcMethodId, HandleFunc); instructions.Add(processor.Create(OpCodes.Ldsfld, m_NetworkManager_rpc_func_table_FieldRef)); - instructions.Add(processor.Create(OpCodes.Ldc_I4, unchecked((int)rpcHash))); + instructions.Add(processor.Create(OpCodes.Ldc_I4, unchecked((int)rpcMethodId))); instructions.Add(processor.Create(OpCodes.Ldnull)); instructions.Add(processor.Create(OpCodes.Ldftn, rpcHandler)); instructions.Add(processor.Create(OpCodes.Newobj, m_NetworkHandlerDelegateCtor_MethodRef)); instructions.Add(processor.Create(OpCodes.Call, m_NetworkManager_rpc_func_table_Add_MethodRef)); } - foreach (var (rpcHash, rpcName) in rpcNames) + foreach (var (rpcMethodId, rpcMethodName) in rpcNames) { - // NetworkManager.__rpc_name_table.Add(RpcHash, RpcName); + // NetworkManager.__rpc_name_table.Add(RpcMethodId, RpcMethodName); instructions.Add(processor.Create(OpCodes.Ldsfld, m_NetworkManager_rpc_name_table_FieldRef)); - instructions.Add(processor.Create(OpCodes.Ldc_I4, unchecked((int)rpcHash))); - instructions.Add(processor.Create(OpCodes.Ldstr, rpcName)); + instructions.Add(processor.Create(OpCodes.Ldc_I4, unchecked((int)rpcMethodId))); + instructions.Add(processor.Create(OpCodes.Ldstr, rpcMethodName)); instructions.Add(processor.Create(OpCodes.Call, m_NetworkManager_rpc_name_table_Add_MethodRef)); } @@ -597,7 +597,7 @@ private void ProcessNetworkBehaviour(TypeDefinition typeDefinition, string[] ass } } - private CustomAttribute CheckAndGetRPCAttribute(MethodDefinition methodDefinition) + private CustomAttribute CheckAndGetRpcAttribute(MethodDefinition methodDefinition) { CustomAttribute rpcAttribute = null; bool isServerRpc = false; @@ -693,7 +693,7 @@ private CustomAttribute CheckAndGetRPCAttribute(MethodDefinition methodDefinitio return rpcAttribute; } - private void InjectWriteAndCallBlocks(MethodDefinition methodDefinition, CustomAttribute rpcAttribute, uint methodDefHash) + private void InjectWriteAndCallBlocks(MethodDefinition methodDefinition, CustomAttribute rpcAttribute, uint rpcMethodId) { var typeSystem = methodDefinition.Module.TypeSystem; var instructions = new List(); @@ -727,15 +727,11 @@ private void InjectWriteAndCallBlocks(MethodDefinition methodDefinition, CustomA // NetworkSerializer serializer; methodDefinition.Body.Variables.Add(new VariableDefinition(m_NetworkSerializer_TypeRef)); int serializerLocIdx = methodDefinition.Body.Variables.Count - 1; - // uint methodHash; - methodDefinition.Body.Variables.Add(new VariableDefinition(typeSystem.UInt32)); - int methodHashLocIdx = methodDefinition.Body.Variables.Count - 1; // XXXRpcParams if (!hasRpcParams) { methodDefinition.Body.Variables.Add(new VariableDefinition(isServerRpc ? m_ServerRpcParams_TypeRef : m_ClientRpcParams_TypeRef)); } - int rpcParamsIdx = !hasRpcParams ? methodDefinition.Body.Variables.Count - 1 : -1; { @@ -784,8 +780,8 @@ private void InjectWriteAndCallBlocks(MethodDefinition methodDefinition, CustomA instructions.Add(beginInstr); - // var serializer = BeginSendServerRpc(serverRpcParams, rpcDelivery) -> ServerRpc - // var serializer = BeginSendClientRpc(clientRpcParams, rpcDelivery) -> ClientRpc + // var serializer = BeginSendServerRpc(rpcMethodId, serverRpcParams, rpcDelivery) -> ServerRpc + // var serializer = BeginSendClientRpc(rpcMethodId, clientRpcParams, rpcDelivery) -> ClientRpc if (isServerRpc) { // ServerRpc @@ -826,9 +822,12 @@ private void InjectWriteAndCallBlocks(MethodDefinition methodDefinition, CustomA instructions.Add(roLastInstr); } - // var serializer = BeginSendServerRpc(serverRpcParams, rpcDelivery); + // var serializer = BeginSendServerRpc(rpcMethodId, serverRpcParams, rpcDelivery); instructions.Add(processor.Create(OpCodes.Ldarg_0)); + // rpcMethodId + instructions.Add(processor.Create(OpCodes.Ldc_I4, unchecked((int)rpcMethodId))); + // rpcParams instructions.Add(hasRpcParams ? processor.Create(OpCodes.Ldarg, paramCount) : processor.Create(OpCodes.Ldloc, rpcParamsIdx)); @@ -842,9 +841,12 @@ private void InjectWriteAndCallBlocks(MethodDefinition methodDefinition, CustomA else { // ClientRpc - // var serializer = BeginSendClientRpc(clientRpcParams, rpcDelivery); + // var serializer = BeginSendClientRpc(rpcMethodId, clientRpcParams, rpcDelivery); instructions.Add(processor.Create(OpCodes.Ldarg_0)); + // rpcMethodId + instructions.Add(processor.Create(OpCodes.Ldc_I4, unchecked((int)rpcMethodId))); + // rpcParams instructions.Add(hasRpcParams ? processor.Create(OpCodes.Ldarg, paramCount) : processor.Create(OpCodes.Ldloc, rpcParamsIdx)); @@ -860,14 +862,6 @@ private void InjectWriteAndCallBlocks(MethodDefinition methodDefinition, CustomA instructions.Add(processor.Create(OpCodes.Ldloc, serializerLocIdx)); instructions.Add(processor.Create(OpCodes.Brfalse, endInstr)); - // methodHash = methodDefHash - instructions.Add(processor.Create(OpCodes.Ldc_I4, unchecked((int)methodDefHash))); - instructions.Add(processor.Create(OpCodes.Stloc, methodHashLocIdx)); - // serializer.Serialize(ref methodHash); // NetworkMethodId - instructions.Add(processor.Create(OpCodes.Ldloc, serializerLocIdx)); - instructions.Add(processor.Create(OpCodes.Ldloca, methodHashLocIdx)); - instructions.Add(processor.Create(OpCodes.Callvirt, m_NetworkSerializer_SerializeUint_MethodRef)); - // write method parameters into stream for (int paramIndex = 0; paramIndex < paramCount; ++paramIndex) { @@ -1645,17 +1639,20 @@ private void InjectWriteAndCallBlocks(MethodDefinition methodDefinition, CustomA instructions.Add(endInstr); - // EndSendServerRpc(serializer, serverRpcParams, rpcDelivery) -> ServerRpc - // EndSendClientRpc(serializer, clientRpcParams, rpcDelivery) -> ClientRpc + // EndSendServerRpc(serializer, rpcMethodId, serverRpcParams, rpcDelivery) -> ServerRpc + // EndSendClientRpc(serializer, rpcMethodId, clientRpcParams, rpcDelivery) -> ClientRpc if (isServerRpc) { // ServerRpc - // EndSendServerRpc(serializer, serverRpcParams, rpcDelivery); + // EndSendServerRpc(serializer, rpcMethodId, serverRpcParams, rpcDelivery); instructions.Add(processor.Create(OpCodes.Ldarg_0)); // serializer instructions.Add(processor.Create(OpCodes.Ldloc, serializerLocIdx)); + // rpcMethodId + instructions.Add(processor.Create(OpCodes.Ldc_I4, unchecked((int)rpcMethodId))); + if (hasRpcParams) { // rpcParams @@ -1676,12 +1673,15 @@ private void InjectWriteAndCallBlocks(MethodDefinition methodDefinition, CustomA else { // ClientRpc - // EndSendClientRpc(serializer, clientRpcParams, rpcDelivery); + // EndSendClientRpc(serializer, rpcMethodId, clientRpcParams, rpcDelivery); instructions.Add(processor.Create(OpCodes.Ldarg_0)); // serializer instructions.Add(processor.Create(OpCodes.Ldloc, serializerLocIdx)); + // rpcMethodId + instructions.Add(processor.Create(OpCodes.Ldc_I4, unchecked((int)rpcMethodId))); + if (hasRpcParams) { // rpcParams diff --git a/com.unity.multiplayer.mlapi/Runtime/Core/NetworkBehaviour.cs b/com.unity.multiplayer.mlapi/Runtime/Core/NetworkBehaviour.cs index 8a6c34ef17..30a17eed7f 100644 --- a/com.unity.multiplayer.mlapi/Runtime/Core/NetworkBehaviour.cs +++ b/com.unity.multiplayer.mlapi/Runtime/Core/NetworkBehaviour.cs @@ -42,7 +42,7 @@ internal enum __RpcExecStage #pragma warning disable IDE1006 // disable naming rule violation check // RuntimeAccessModifiersILPP will make this `protected` - internal NetworkSerializer __beginSendServerRpc(ServerRpcParams serverRpcParams, RpcDelivery rpcDelivery) + internal NetworkSerializer __beginSendServerRpc(uint rpcMethodId, ServerRpcParams serverRpcParams, RpcDelivery rpcDelivery) #pragma warning restore IDE1006 // restore naming rule violation check { PooledNetworkWriter writer; @@ -73,6 +73,7 @@ internal NetworkSerializer __beginSendServerRpc(ServerRpcParams serverRpcParams, writer.WriteUInt64Packed(NetworkObjectId); // NetworkObjectId writer.WriteUInt16Packed(NetworkBehaviourId); // NetworkBehaviourId + writer.WriteUInt32Packed(rpcMethodId); // NetworkRpcMethodId writer.WriteByte((byte)serverRpcParams.Send.UpdateStage); // NetworkUpdateStage return writer.Serializer; @@ -80,7 +81,7 @@ internal NetworkSerializer __beginSendServerRpc(ServerRpcParams serverRpcParams, #pragma warning disable IDE1006 // disable naming rule violation check // RuntimeAccessModifiersILPP will make this `protected` - internal void __endSendServerRpc(NetworkSerializer serializer, ServerRpcParams serverRpcParams, RpcDelivery rpcDelivery) + internal void __endSendServerRpc(NetworkSerializer serializer, uint rpcMethodId, ServerRpcParams serverRpcParams, RpcDelivery rpcDelivery) #pragma warning restore IDE1006 // restore naming rule violation check { if (serializer == null) @@ -101,7 +102,7 @@ internal void __endSendServerRpc(NetworkSerializer serializer, ServerRpcParams s #pragma warning disable IDE1006 // disable naming rule violation check // RuntimeAccessModifiersILPP will make this `protected` - internal NetworkSerializer __beginSendClientRpc(ClientRpcParams clientRpcParams, RpcDelivery rpcDelivery) + internal NetworkSerializer __beginSendClientRpc(uint rpcMethodId, ClientRpcParams clientRpcParams, RpcDelivery rpcDelivery) #pragma warning restore IDE1006 // restore naming rule violation check { PooledNetworkWriter writer; @@ -164,6 +165,7 @@ internal NetworkSerializer __beginSendClientRpc(ClientRpcParams clientRpcParams, writer.WriteUInt64Packed(NetworkObjectId); // NetworkObjectId writer.WriteUInt16Packed(NetworkBehaviourId); // NetworkBehaviourId + writer.WriteUInt32Packed(rpcMethodId); // NetworkRpcMethodId writer.WriteByte((byte)clientRpcParams.Send.UpdateStage); // NetworkUpdateStage return writer.Serializer; @@ -171,7 +173,7 @@ internal NetworkSerializer __beginSendClientRpc(ClientRpcParams clientRpcParams, #pragma warning disable IDE1006 // disable naming rule violation check // RuntimeAccessModifiersILPP will make this `protected` - internal void __endSendClientRpc(NetworkSerializer serializer, ClientRpcParams clientRpcParams, RpcDelivery rpcDelivery) + internal void __endSendClientRpc(NetworkSerializer serializer, uint rpcMethodId, ClientRpcParams clientRpcParams, RpcDelivery rpcDelivery) #pragma warning restore IDE1006 // restore naming rule violation check { if (serializer == null) diff --git a/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs b/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs index 03bbf3eae0..3d15a9b716 100644 --- a/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs +++ b/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs @@ -318,7 +318,7 @@ private void OnValidate() } } } - } + } } #endif @@ -1356,7 +1356,6 @@ private void ReceiveCallback(NetworkBuffer messageBuffer, RpcQueueContainer.Queu } /// - /// InvokeRPC /// Called when an inbound queued RPC is invoked /// /// frame queue item to invoke @@ -1367,10 +1366,10 @@ internal void InvokeRpc(RpcFrameQueueItem queueItem) #endif var networkObjectId = queueItem.NetworkReader.ReadUInt64Packed(); var networkBehaviourId = queueItem.NetworkReader.ReadUInt16Packed(); + var networkRpcMethodId = queueItem.NetworkReader.ReadUInt32Packed(); var networkUpdateStage = queueItem.NetworkReader.ReadByteDirect(); - var networkMethodId = queueItem.NetworkReader.ReadUInt32Packed(); - if (__rpc_func_table.ContainsKey(networkMethodId)) + if (__rpc_func_table.ContainsKey(networkRpcMethodId)) { if (!SpawnManager.SpawnedObjects.ContainsKey(networkObjectId)) { @@ -1409,7 +1408,7 @@ internal void InvokeRpc(RpcFrameQueueItem queueItem) break; } - __rpc_func_table[networkMethodId](networkBehaviour, new NetworkSerializer(queueItem.NetworkReader), rpcParams); + __rpc_func_table[networkRpcMethodId](networkBehaviour, new NetworkSerializer(queueItem.NetworkReader), rpcParams); } #if DEVELOPMENT_BUILD || UNITY_EDITOR diff --git a/com.unity.multiplayer.mlapi/Runtime/Messaging/RpcQueue/RpcQueueContainer.cs b/com.unity.multiplayer.mlapi/Runtime/Messaging/RpcQueue/RpcQueueContainer.cs index 0f896ef170..9f280365ab 100644 --- a/com.unity.multiplayer.mlapi/Runtime/Messaging/RpcQueue/RpcQueueContainer.cs +++ b/com.unity.multiplayer.mlapi/Runtime/Messaging/RpcQueue/RpcQueueContainer.cs @@ -273,6 +273,7 @@ internal void AddQueueItemToInboundFrame(QueueItemType qItemType, float timeStam { var longValue = reader.ReadUInt64Packed(); // NetworkObjectId (temporary, we reset position just below) var shortValue = reader.ReadUInt16Packed(); // NetworkBehaviourId (temporary, we reset position just below) + var intValue = reader.ReadUInt32Packed(); // NetworkRpcMethodId (temporary, we reset position just below) updateStage = (NetworkUpdateStage)reader.ReadByteDirect(); } diff --git a/com.unity.multiplayer.mlapi/Tests/Runtime/MultiInstance.meta b/com.unity.multiplayer.mlapi/Tests/Runtime/MultiInstance.meta deleted file mode 100644 index 990f0da88f..0000000000 --- a/com.unity.multiplayer.mlapi/Tests/Runtime/MultiInstance.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 2df2070ea49a4fc7bfa4db287fc66674 -timeCreated: 1620145216 \ No newline at end of file diff --git a/com.unity.multiplayer.mlapi/Tests/Runtime/MultiInstance/MultiInstanceHelpers.cs.meta b/com.unity.multiplayer.mlapi/Tests/Runtime/MultiInstance/MultiInstanceHelpers.cs.meta deleted file mode 100644 index 741fa2a175..0000000000 --- a/com.unity.multiplayer.mlapi/Tests/Runtime/MultiInstance/MultiInstanceHelpers.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: cd86b2a4d2ba44c5b4914380829c258f -timeCreated: 1620145246 \ No newline at end of file diff --git a/com.unity.multiplayer.mlapi/Tests/Runtime/MultiInstance/RPCTests.cs.meta b/com.unity.multiplayer.mlapi/Tests/Runtime/MultiInstance/RPCTests.cs.meta deleted file mode 100644 index ea8e4244f7..0000000000 --- a/com.unity.multiplayer.mlapi/Tests/Runtime/MultiInstance/RPCTests.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: c35d7e9c4eb641be8e4a2105d78fa117 -timeCreated: 1620145147 \ No newline at end of file diff --git a/com.unity.multiplayer.mlapi/Tests/Runtime/MultiInstance/MultiInstanceHelpers.cs b/com.unity.multiplayer.mlapi/Tests/Runtime/MultiInstanceHelpers.cs similarity index 100% rename from com.unity.multiplayer.mlapi/Tests/Runtime/MultiInstance/MultiInstanceHelpers.cs rename to com.unity.multiplayer.mlapi/Tests/Runtime/MultiInstanceHelpers.cs diff --git a/com.unity.multiplayer.mlapi/Tests/Runtime/MultiInstanceHelpers.cs.meta b/com.unity.multiplayer.mlapi/Tests/Runtime/MultiInstanceHelpers.cs.meta new file mode 100644 index 0000000000..37a6b3738f --- /dev/null +++ b/com.unity.multiplayer.mlapi/Tests/Runtime/MultiInstanceHelpers.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a1c62160e3e5b4489b2143fc21b56e55 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.multiplayer.mlapi/Tests/Runtime/MultiInstance/RPCTests.cs b/com.unity.multiplayer.mlapi/Tests/Runtime/RpcTests.cs similarity index 66% rename from com.unity.multiplayer.mlapi/Tests/Runtime/MultiInstance/RPCTests.cs rename to com.unity.multiplayer.mlapi/Tests/Runtime/RpcTests.cs index 73493e3687..804d2006b5 100644 --- a/com.unity.multiplayer.mlapi/Tests/Runtime/MultiInstance/RPCTests.cs +++ b/com.unity.multiplayer.mlapi/Tests/Runtime/RpcTests.cs @@ -8,28 +8,28 @@ namespace MLAPI.RuntimeTests { - public class RPCTests + public class RpcTests { - public class RPCTestNetworkBehaviour : NetworkBehaviour + public class RpcTestNB : NetworkBehaviour { - public event Action OnServer_RPC; - public event Action OnClient_RPC; + public event Action OnServer_Rpc; + public event Action OnClient_Rpc; [ServerRpc] public void MyServerRpc() { - OnServer_RPC(); + OnServer_Rpc(); } [ClientRpc] public void MyClientRpc() { - OnClient_RPC(); + OnClient_Rpc(); } } [UnityTest] - public IEnumerator TestRPCs() + public IEnumerator TestRpcs() { // Create multiple NetworkManager instances if (!MultiInstanceHelpers.Create(1, out NetworkManager server, out NetworkManager[] clients)) @@ -49,7 +49,7 @@ public IEnumerator TestRPCs() // Create playerPrefab var playerPrefab = new GameObject("Player"); NetworkObject networkObject = playerPrefab.AddComponent(); - playerPrefab.AddComponent(); + playerPrefab.AddComponent(); // Make it a prefab MultiInstanceHelpers.MakeNetworkedObjectTestPrefab(networkObject); @@ -84,47 +84,47 @@ public IEnumerator TestRPCs() yield return MultiInstanceHelpers.Run(MultiInstanceHelpers.GetNetworkObjectByRepresentation((x => x.IsPlayerObject && x.OwnerClientId == clients[0].LocalClientId), clients[0], clientClientPlayerResult)); // Setup state - bool hasReceivedServerRPC = false; - bool hasReceivedClientRPCRemotely = false; - bool hasReceivedClientRPCLocally = false; + bool hasReceivedServerRpc = false; + bool hasReceivedClientRpcRemotely = false; + bool hasReceivedClientRpcLocally = false; - clientClientPlayerResult.Result.GetComponent().OnClient_RPC += () => + clientClientPlayerResult.Result.GetComponent().OnClient_Rpc += () => { - Debug.Log("ClientRPC received on client object"); - hasReceivedClientRPCRemotely = true; + Debug.Log("ClientRpc received on client object"); + hasReceivedClientRpcRemotely = true; }; - clientClientPlayerResult.Result.GetComponent().OnServer_RPC += () => + clientClientPlayerResult.Result.GetComponent().OnServer_Rpc += () => { // The RPC invoked locally. (Weaver failure?) - Assert.Fail("ServerRPC invoked locally. Weaver failure?"); + Assert.Fail("ServerRpc invoked locally. Weaver failure?"); }; - serverClientPlayerResult.Result.GetComponent().OnServer_RPC += () => + serverClientPlayerResult.Result.GetComponent().OnServer_Rpc += () => { - Debug.Log("ServerRPC received on server object"); - hasReceivedServerRPC = true; + Debug.Log("ServerRpc received on server object"); + hasReceivedServerRpc = true; }; - serverClientPlayerResult.Result.GetComponent().OnClient_RPC += () => + serverClientPlayerResult.Result.GetComponent().OnClient_Rpc += () => { // The RPC invoked locally. (Weaver failure?) - Debug.Log("ClientRPC received on server object"); - hasReceivedClientRPCLocally = true; + Debug.Log("ClientRpc received on server object"); + hasReceivedClientRpcLocally = true; }; - // Send ServerRPC - clientClientPlayerResult.Result.GetComponent().MyServerRpc(); + // Send ServerRpc + clientClientPlayerResult.Result.GetComponent().MyServerRpc(); - // Send ClientRPC - serverClientPlayerResult.Result.GetComponent().MyClientRpc(); + // Send ClientRpc + serverClientPlayerResult.Result.GetComponent().MyClientRpc(); // Wait for RPCs to be received - yield return MultiInstanceHelpers.Run(MultiInstanceHelpers.WaitForCondition(() => hasReceivedServerRPC && hasReceivedClientRPCLocally && hasReceivedClientRPCRemotely)); + yield return MultiInstanceHelpers.Run(MultiInstanceHelpers.WaitForCondition(() => hasReceivedServerRpc && hasReceivedClientRpcLocally && hasReceivedClientRpcRemotely)); - Assert.True(hasReceivedServerRPC, "ServerRPC was not received"); - Assert.True(hasReceivedClientRPCLocally, "ClientRPC was not locally received on the server"); - Assert.True(hasReceivedClientRPCRemotely, "ClientRPC was not remotely received on the client"); + Assert.True(hasReceivedServerRpc, "ServerRpc was not received"); + Assert.True(hasReceivedClientRpcLocally, "ClientRpc was not locally received on the server"); + Assert.True(hasReceivedClientRpcRemotely, "ClientRpc was not remotely received on the client"); // Cleanup MultiInstanceHelpers.Destroy(); diff --git a/com.unity.multiplayer.mlapi/Tests/Runtime/RpcTests.cs.meta b/com.unity.multiplayer.mlapi/Tests/Runtime/RpcTests.cs.meta new file mode 100644 index 0000000000..02e7960092 --- /dev/null +++ b/com.unity.multiplayer.mlapi/Tests/Runtime/RpcTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 46681ff78c6154f87acf5e1cccbfc0e1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Scripts.meta b/testproject/Assets/Scripts.meta new file mode 100644 index 0000000000..fbdac1c07d --- /dev/null +++ b/testproject/Assets/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7d4cd8efbd22842fb88268393e9d06a2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Tests/Runtime/RpcTestsAutomated.cs b/testproject/Assets/Tests/Runtime/RpcTestsAutomated.cs index e018e5ae29..191dfa0168 100644 --- a/testproject/Assets/Tests/Runtime/RpcTestsAutomated.cs +++ b/testproject/Assets/Tests/Runtime/RpcTestsAutomated.cs @@ -10,7 +10,7 @@ namespace TestProject.RuntimeTests { - public class RPCTestsAutomated + public class RpcTestsAutomated { private bool m_TimedOut; private int m_MaxFrames;