private void UpdateScriptTypes()
        {
            DataTable DT = new DataTable();

            DT.Columns.Add("Type", typeof(string));
            DT.Columns.Add("Interface", typeof(string));

            if (LoadedScripts.SelectedRows.Count > 0)
            {
                string N = LoadedScripts.SelectedRows[0].Cells[0].Value.ToString();

                if (Pinball.Scripts.Any(sc => sc.File.FullName == N))
                {
                    Script S = Pinball.Scripts[N];

                    if (S.Assembly != null)
                    {
                        foreach (Type T in S.Assembly.GetTypes().Where(t => typeof(IEffect).IsAssignableFrom(t) && !t.IsAbstract))
                        {
                            DT.Rows.Add(T.Name, "IEffect");
                        }

                        foreach (Type T in S.Assembly.GetTypes().Where(t => typeof(IToy).IsAssignableFrom(t) && !t.IsAbstract))
                        {
                            DT.Rows.Add(T.Name, "IToy");
                        }
                    }
                }
            }



            ScriptTypes.ClearSelection();
            ScriptTypes.Columns.Clear();
            ScriptTypes.AutoGenerateColumns = true;
            ScriptTypes.DataSource          = DT;
            ScriptTypes.Refresh();
            ScriptTypes.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);

            UpdateTypeXml();
        }