public static void Process(ModuleDefinition moduleDef) { DateTime startTime = DateTime.Now; // replace all field access with property access for syncvars CodePass.ForEachInstruction(moduleDef, WeavedMethods, ProcessInstruction); Console.WriteLine(" ProcessSitesModule " + moduleDef.Name + " elapsed time:" + (DateTime.Now - startTime)); }
static void ProcessAssemblyClasses(AssemblyDefinition CurrentAssembly, AssemblyDefinition assembly) { foreach (TypeDefinition klass in assembly.MainModule.Types) { // extension methods only live in static classes // static classes are represented as sealed and abstract if (klass.IsAbstract && klass.IsSealed) { LoadDeclaredWriters(CurrentAssembly, klass); LoadDeclaredReaders(CurrentAssembly, klass); } } // Generate readers and writers // find all the Send<> and Register<> calls and generate // readers and writers for them. CodePass.ForEachInstruction(assembly.MainModule, (md, instr) => GenerateReadersWriters(CurrentAssembly.MainModule, instr)); }
void ProcessAssemblyClasses() { var types = new List <TypeDefinition>(module.Types); foreach (TypeDefinition klass in types) { // extension methods only live in static classes // static classes are represented as sealed and abstract if (klass.IsAbstract && klass.IsSealed) { LoadDeclaredWriters(klass); LoadDeclaredReaders(klass); } } // Generate readers and writers // find all the Send<> and Register<> calls and generate // readers and writers for them. CodePass.ForEachInstruction(module, (md, instr, sequencePoint) => GenerateReadersWriters(instr, sequencePoint)); }
public static void Process(ModuleDefinition moduleDef) { DateTime startTime = DateTime.Now; bool weavedMethods(MethodDefinition md) => md.Name != ".cctor" && md.Name != NetworkBehaviourProcessor.ProcessedFunctionName && !md.Name.StartsWith(Weaver.InvokeRpcPrefix) && !md.IsConstructor; // replace all field access with property access for syncvars CodePass.ForEachInstruction(moduleDef, weavedMethods, ProcessInstruction); if (Weaver.WeaveLists.generateContainerClass != null) { moduleDef.Types.Add(Weaver.WeaveLists.generateContainerClass); } Console.WriteLine(" ProcessSitesModule " + moduleDef.Name + " elapsed time:" + (DateTime.Now - startTime)); }