diff options
| author | Rémi Verschelde <rverschelde@gmail.com> | 2018-12-16 14:26:56 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-12-16 14:26:56 +0100 |
| commit | 9df7ed59fb39e38db30326365adc18afb79903bb (patch) | |
| tree | 59d2220e78fe5295dd6ac4aa5607da6501a96eb6 /modules/gdscript/register_types.cpp | |
| parent | 3914bdb82eafa558bc1512c7cf3c4f77565d0847 (diff) | |
| parent | 065e2670af53ae2f71b78d57f8a217b4539cbbe2 (diff) | |
| download | redot-engine-9df7ed59fb39e38db30326365adc18afb79903bb.tar.gz | |
Merge pull request #19501 from Zylann/custom_loaders
Added basic support for custom resource savers and loaders
Diffstat (limited to 'modules/gdscript/register_types.cpp')
| -rw-r--r-- | modules/gdscript/register_types.cpp | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/modules/gdscript/register_types.cpp b/modules/gdscript/register_types.cpp index 26dcbdcf89..9c4dc0c926 100644 --- a/modules/gdscript/register_types.cpp +++ b/modules/gdscript/register_types.cpp @@ -38,8 +38,8 @@ #include "gdscript_tokenizer.h" GDScriptLanguage *script_language_gd = NULL; -ResourceFormatLoaderGDScript *resource_loader_gd = NULL; -ResourceFormatSaverGDScript *resource_saver_gd = NULL; +Ref<ResourceFormatLoaderGDScript> resource_loader_gd; +Ref<ResourceFormatSaverGDScript> resource_saver_gd; #ifdef TOOLS_ENABLED @@ -87,9 +87,11 @@ void register_gdscript_types() { script_language_gd = memnew(GDScriptLanguage); ScriptServer::register_language(script_language_gd); - resource_loader_gd = memnew(ResourceFormatLoaderGDScript); + + resource_loader_gd.instance(); ResourceLoader::add_resource_format_loader(resource_loader_gd); - resource_saver_gd = memnew(ResourceFormatSaverGDScript); + + resource_saver_gd.instance(); ResourceSaver::add_resource_format_saver(resource_saver_gd); #ifdef TOOLS_ENABLED @@ -104,8 +106,14 @@ void unregister_gdscript_types() { if (script_language_gd) memdelete(script_language_gd); - if (resource_loader_gd) - memdelete(resource_loader_gd); - if (resource_saver_gd) - memdelete(resource_saver_gd); + + if (resource_loader_gd.is_valid()) { + ResourceLoader::remove_resource_format_loader(resource_loader_gd); + resource_loader_gd.unref(); + } + + if (resource_saver_gd.is_valid()) { + ResourceSaver::remove_resource_format_saver(resource_saver_gd); + resource_saver_gd.unref(); + } } |
