private void DataGrid_AddingNewItem(object sender, AddingNewItemEventArgs e)
        {
            var itemList = (sender as DataGrid).ItemsSource as IList <UndertaleExtensionFunction>;
            int lastItem = itemList.Count;

            UndertaleExtensionFunction obj = new UndertaleExtensionFunction()
            {
                Name      = (Application.Current.MainWindow as MainWindow).Data.Strings.MakeString($"new_extension_function_{lastItem}"),
                ExtName   = (Application.Current.MainWindow as MainWindow).Data.Strings.MakeString($"new_extension_function_{lastItem}_ext"),
                RetType   = UndertaleExtensionVarType.Double,
                Arguments = new UndertaleSimpleList <UndertaleExtensionFunctionArg>(),
                Kind      = 11, // ???
                ID        = (Application.Current.MainWindow as MainWindow).Data.ExtensionFindLastId()
            };

            e.NewItem = obj;
        }
    public static UndertaleExtensionFunction DefineExtensionFunction(this IList <UndertaleExtensionFunction> extfuncs, IList <UndertaleFunction> funcs, IList <UndertaleString> strg, uint id, uint kind, string name, UndertaleExtensionVarType rettype, string extname, params UndertaleExtensionVarType[] args)
    {
        var func = new UndertaleExtensionFunction()
        {
            ID      = id,
            Name    = strg.MakeString(name),
            ExtName = strg.MakeString(extname),
            Kind    = kind,
            RetType = rettype
        };

        foreach (var a in args)
        {
            func.Arguments.Add(new UndertaleExtensionFunctionArg()
            {
                Type = a
            });
        }
        extfuncs.Add(func);
        funcs.EnsureDefined(name, strg);
        return(func);
    }