static ActiveScene() { _currentEngine = null; _context = new DataContext(); _activeTasks = new List <CancellationTokenSource>(); _runtimeKeybinds = new Dictionary <KeyAction, Dictionary <int, List <System.Action> > >(); _viewModel = null; }
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(); }
internal void SetExecutionEnvironment(EngineJS engine) { _executionEnvironment = engine; }