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));
        }
Exemple #3
0
        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));
        }
Exemple #4
0
        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));
        }