private void OnRun(object sender, RoutedEventArgs e) { //ButtonStart.IsEnabled = false; //ButtonStop.IsEnabled = true; if (engine != null) { ///engine.Stop(); /// engine = null; } engine = new ExecutionEnvironment(); PlayScreen.Children.Clear(); controls.Clear(); CurrentEnviroment.Game.Instances.Clear(); allEnvs.Clear(); engine.RegisterValue("$$Player", this); foreach (Sprite sp in CurrentEnviroment.Game.Sprites) { CurrentEnviroment.Game.Instances.Add(new Instance(sp), sp); ExecutionEnvironment playEnv = new ExecutionEnvironment(engine); allEnvs.Add(sp, playEnv); playEnv.RegisterValue("$$INSTANCE$$", sp); playEnv.Execute(sp); foreach (var f in sp.Handlers) { if (f is StartEventHandler) { new Thread(() => { f.Execute(playEnv); }).Start(); } } } }