Added basic support for custom resource savers and loaders
This commit is contained in:
parent
ca28c455bf
commit
065e2670af
77 changed files with 1102 additions and 145 deletions
|
|
@ -500,6 +500,7 @@ public:
|
|||
};
|
||||
|
||||
class ResourceFormatLoaderGDScript : public ResourceFormatLoader {
|
||||
GDCLASS(ResourceFormatLoaderGDScript, ResourceFormatLoader)
|
||||
public:
|
||||
virtual RES load(const String &p_path, const String &p_original_path = "", Error *r_error = NULL);
|
||||
virtual void get_recognized_extensions(List<String> *p_extensions) const;
|
||||
|
|
@ -508,6 +509,7 @@ public:
|
|||
};
|
||||
|
||||
class ResourceFormatSaverGDScript : public ResourceFormatSaver {
|
||||
GDCLASS(ResourceFormatSaverGDScript, ResourceFormatSaver)
|
||||
public:
|
||||
virtual Error save(const String &p_path, const RES &p_resource, uint32_t p_flags = 0);
|
||||
virtual void get_recognized_extensions(const RES &p_resource, List<String> *p_extensions) const;
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue