summaryrefslogtreecommitdiffstats
path: root/modules/gdscript/register_types.cpp
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2018-12-16 14:26:56 +0100
committerGitHub <noreply@github.com>2018-12-16 14:26:56 +0100
commit9df7ed59fb39e38db30326365adc18afb79903bb (patch)
tree59d2220e78fe5295dd6ac4aa5607da6501a96eb6 /modules/gdscript/register_types.cpp
parent3914bdb82eafa558bc1512c7cf3c4f77565d0847 (diff)
parent065e2670af53ae2f71b78d57f8a217b4539cbbe2 (diff)
downloadredot-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.cpp24
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();
+ }
}