예제 #1
0
 public static void Initialize()
 {
     ScriptFolder = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Scripts");
     //CompileAsync();
     lock (SynchronizeLock)
     {
         var typeScripts = Assembly.GetExecutingAssembly().GetTypes()
                           .Where(t => t.IsSubclassOf(typeof(Script)));
         foreach (var t in typeScripts)
         {
             RegistrationQueue.Enqueue(t);
         }
     }
 }
예제 #2
0
        public static void Pulse()
        {
            lock (SynchronizeLock)
            {
                while (RegistrationQueue.Count > 0)
                {
                    Register(RegistrationQueue.Dequeue());
                }

                foreach (var script in Scripts)
                {
                    CurrentScript = script;
                    script.Tick();
                }

                CurrentScript = null;
            }
        }
예제 #3
0
        private static void AnalyzeAssembly(Assembly asm)
        {
            Log.WriteLine("Analyzing compiled assembly {0}", asm.FullName);

            var types = asm.GetTypes();

            Log.WriteLine("Found {0} types", types.Length);
            lock (SynchronizeLock)
            {
                foreach (var type in types)
                {
                    if (!type.IsClass || !type.IsSubclassOf(typeof(Script)))
                    {
                        Log.WriteLine("Ignoring {0}", type.Name);
                        continue;
                    }

                    RegistrationQueue.Enqueue(type);
                }
            }
        }
예제 #4
0
        public static void Pulse()
        {
            if (!Manager.IsInGame)
            {
                return;
            }

            lock (SynchronizeLock)
            {
                while (RegistrationQueue.Count > 0)
                {
                    Register(RegistrationQueue.Dequeue());
                }

                foreach (var script in ScriptPool)
                {
                    CurrentScript = script;
                    script.Tick();
                }

                CurrentScript = null;
            }
        }