public void Process() { if (m_td.HasGenericParameters) { Weaver.fail = true; Log.Error("NetworkBehaviour " + m_td.Name + " cannot have generic parameters"); return; } Weaver.DLog(m_td, "Process Start"); MarkAsProcessed(m_td); SyncVarProcessor.ProcessSyncVars(m_td, m_SyncVars, m_SyncObjects, m_SyncVarNetIds); Weaver.ResetRecursionCount(); ProcessMethods(); SyncEventProcessor.ProcessEvents(m_td, m_Events, m_EventInvocationFuncs); if (Weaver.fail) { return; } GenerateConstants(); Weaver.ResetRecursionCount(); GenerateSerialization(); if (Weaver.fail) { return; } GenerateDeSerialization(); Weaver.DLog(m_td, "Process Done"); }
public void Process() { // find item type var gt = (GenericInstanceType)m_TypeDef.BaseType; if (gt.GenericArguments.Count == 0) { Weaver.fail = true; Log.Error("SyncListStructProcessor no generic args"); return; } m_ItemType = Weaver.scriptDef.MainModule.ImportReference(gt.GenericArguments[0]); Weaver.DLog(m_TypeDef, "SyncListStructProcessor Start item:" + m_ItemType.FullName); Weaver.ResetRecursionCount(); var writeItemFunc = GenerateSerialization(); if (Weaver.fail) { return; } var readItemFunc = GenerateDeserialization(); if (readItemFunc == null || writeItemFunc == null) { return; } GenerateReadFunc(readItemFunc); GenerateWriteFunc(writeItemFunc); Weaver.DLog(m_TypeDef, "SyncListStructProcessor Done"); }
public static void Process(TypeDefinition td) { // find item type GenericInstanceType gt = (GenericInstanceType)td.BaseType; if (gt.GenericArguments.Count == 0) { Weaver.Error("SyncListStructProcessor no generic args"); return; } TypeReference itemType = Weaver.CurrentAssembly.MainModule.ImportReference(gt.GenericArguments[0]); Weaver.DLog(td, "SyncListStructProcessor Start item:" + itemType.FullName); Weaver.ResetRecursionCount(); MethodReference writeItemFunc = GenerateSerialization(td, itemType); if (Weaver.WeavingFailed) { return; } MethodReference readItemFunc = GenerateDeserialization(td, itemType); if (readItemFunc == null || writeItemFunc == null) { return; } Weaver.DLog(td, "SyncListStructProcessor Done"); }
public static void Process(TypeDefinition td) { Weaver.DLog(td, "MessageClassProcessor Start"); Weaver.ResetRecursionCount(); GenerateSerialization(td); if (Weaver.WeavingFailed) { return; } GenerateDeSerialization(td); Weaver.DLog(td, "MessageClassProcessor Done"); }
public void Process() { Weaver.DLog(m_td, "MessageClassProcessor Start"); Weaver.ResetRecursionCount(); GenerateSerialization(); if (Weaver.fail) { return; } GenerateDeSerialization(); Weaver.DLog(m_td, "MessageClassProcessor Done"); }
void ProcessMethods() { HashSet <string> names = new HashSet <string>(); // find command and RPC functions foreach (MethodDefinition md in m_td.Methods) { Weaver.ResetRecursionCount(); foreach (CustomAttribute ca in md.CustomAttributes) { if (ca.AttributeType.FullName == Weaver.CommandType.FullName) { if (!CommandProcessor.ProcessMethodsValidateCommand(m_td, md, ca)) { return; } if (names.Contains(md.Name)) { Log.Error("Duplicate Command name [" + m_td.FullName + ":" + md.Name + "]"); Weaver.fail = true; return; } names.Add(md.Name); m_Cmds.Add(md); MethodDefinition cmdFunc = CommandProcessor.ProcessCommandInvoke(m_td, md); if (cmdFunc != null) { m_CmdInvocationFuncs.Add(cmdFunc); } MethodDefinition cmdCallFunc = CommandProcessor.ProcessCommandCall(m_td, md, ca); if (cmdCallFunc != null) { m_CmdCallFuncs.Add(cmdCallFunc); Weaver.lists.replaceMethods[md.FullName] = cmdCallFunc; } break; } if (ca.AttributeType.FullName == Weaver.TargetRpcType.FullName) { if (!TargetRpcProcessor.ProcessMethodsValidateTargetRpc(m_td, md, ca)) { return; } if (names.Contains(md.Name)) { Log.Error("Duplicate Target Rpc name [" + m_td.FullName + ":" + md.Name + "]"); Weaver.fail = true; return; } names.Add(md.Name); m_TargetRpcs.Add(md); MethodDefinition rpcFunc = TargetRpcProcessor.ProcessTargetRpcInvoke(m_td, md); if (rpcFunc != null) { m_TargetRpcInvocationFuncs.Add(rpcFunc); } MethodDefinition rpcCallFunc = TargetRpcProcessor.ProcessTargetRpcCall(m_td, md, ca); if (rpcCallFunc != null) { m_TargetRpcCallFuncs.Add(rpcCallFunc); Weaver.lists.replaceMethods[md.FullName] = rpcCallFunc; } break; } if (ca.AttributeType.FullName == Weaver.ClientRpcType.FullName) { if (!RpcProcessor.ProcessMethodsValidateRpc(m_td, md, ca)) { return; } if (names.Contains(md.Name)) { Log.Error("Duplicate ClientRpc name [" + m_td.FullName + ":" + md.Name + "]"); Weaver.fail = true; return; } names.Add(md.Name); m_Rpcs.Add(md); MethodDefinition rpcFunc = RpcProcessor.ProcessRpcInvoke(m_td, md); if (rpcFunc != null) { m_RpcInvocationFuncs.Add(rpcFunc); } MethodDefinition rpcCallFunc = RpcProcessor.ProcessRpcCall(m_td, md, ca); if (rpcCallFunc != null) { m_RpcCallFuncs.Add(rpcCallFunc); Weaver.lists.replaceMethods[md.FullName] = rpcCallFunc; } break; } } } // cmds foreach (MethodDefinition md in m_CmdInvocationFuncs) { m_td.Methods.Add(md); } foreach (MethodDefinition md in m_CmdCallFuncs) { m_td.Methods.Add(md); } // rpcs foreach (MethodDefinition md in m_RpcInvocationFuncs) { m_td.Methods.Add(md); } foreach (MethodDefinition md in m_TargetRpcInvocationFuncs) { m_td.Methods.Add(md); } foreach (MethodDefinition md in m_RpcCallFuncs) { m_td.Methods.Add(md); } foreach (MethodDefinition md in m_TargetRpcCallFuncs) { m_td.Methods.Add(md); } }