Example #1
0
 static ActiveScene()
 {
     _currentEngine   = null;
     _context         = new DataContext();
     _activeTasks     = new List <CancellationTokenSource>();
     _runtimeKeybinds = new Dictionary <KeyAction, Dictionary <int, List <System.Action> > >();
     _viewModel       = null;
 }
Example #2
0
        public static void Run()
        {
            _activeTasks.Clear();
            _context.IsRunning = true;
            RunningChanged?.Invoke(null, new EventArgs());
            Save();
            //Output.Out.AddLine("Saved cached copy of current state: " + _savedState.Length);
            _currentEngine = new EngineJS();
            List <Task> scriptExecution = new List <Task>();

            foreach (Script script in _context.ActiveWorld.World.getChildren(true).Where((x) =>
            {
                return(x.GetType().Equals(typeof(Script)));
            }))
            {
                CancellationTokenSource token = new CancellationTokenSource();
                scriptExecution.Add(new Task((x) =>
                {
                    Thread currentThread = Thread.CurrentThread;
                    using (token.Token.Register(currentThread.Abort))
                    {
                        _currentEngine.Execute(x as Script);
                    }
                }, script, token.Token));
                _activeTasks.Add(token);
            }

            foreach (Task execution in scriptExecution)
            {
                execution.Start();
            }

            Thread mainLoop = new Thread(MainLoop);

            mainLoop.Start();
        }
Example #3
0
 internal void SetExecutionEnvironment(EngineJS engine)
 {
     _executionEnvironment = engine;
 }