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/mono/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/mono/register_types.cpp')
| -rw-r--r-- | modules/mono/register_types.cpp | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/modules/mono/register_types.cpp b/modules/mono/register_types.cpp index f6cb143e8e..9ee7a0b5c4 100644 --- a/modules/mono/register_types.cpp +++ b/modules/mono/register_types.cpp @@ -35,8 +35,8 @@ #include "csharp_script.h" CSharpLanguage *script_language_cs = NULL; -ResourceFormatLoaderCSharpScript *resource_loader_cs = NULL; -ResourceFormatSaverCSharpScript *resource_saver_cs = NULL; +Ref<ResourceFormatLoaderCSharpScript> resource_loader_cs; +Ref<ResourceFormatSaverCSharpScript> resource_saver_cs; _GodotSharp *_godotsharp = NULL; @@ -52,9 +52,10 @@ void register_mono_types() { script_language_cs->set_language_index(ScriptServer::get_language_count()); ScriptServer::register_language(script_language_cs); - resource_loader_cs = memnew(ResourceFormatLoaderCSharpScript); + resource_loader_cs.instance(); ResourceLoader::add_resource_format_loader(resource_loader_cs); - resource_saver_cs = memnew(ResourceFormatSaverCSharpScript); + + resource_saver_cs.instance(); ResourceSaver::add_resource_format_saver(resource_saver_cs); } @@ -63,10 +64,16 @@ void unregister_mono_types() { if (script_language_cs) memdelete(script_language_cs); - if (resource_loader_cs) - memdelete(resource_loader_cs); - if (resource_saver_cs) - memdelete(resource_saver_cs); + + if (resource_loader_cs.is_valid()) { + ResourceLoader::remove_resource_format_loader(resource_loader_cs); + resource_loader_cs.unref(); + } + + if (resource_saver_cs.is_valid()) { + ResourceSaver::remove_resource_format_saver(resource_saver_cs); + resource_saver_cs.unref(); + } if (_godotsharp) memdelete(_godotsharp); |
