diff --git a/core/script_language.h b/core/script_language.h index ceaa8624634..bde4d619ab2 100644 --- a/core/script_language.h +++ b/core/script_language.h @@ -129,6 +129,10 @@ public: virtual void notification(int p_notification)=0; + //this is used by script languages that keep a reference counter of their own + //you can make make Ref<> not die when it reaches zero, so deleting the reference + //depends entirely from the script + virtual void refcount_incremented() {} virtual bool refcount_decremented() { return true; } //return true if it can die diff --git a/tools/editor/editor_import_export.cpp b/tools/editor/editor_import_export.cpp index f9b9c0b41c5..357d139c040 100644 --- a/tools/editor/editor_import_export.cpp +++ b/tools/editor/editor_import_export.cpp @@ -861,9 +861,11 @@ Error EditorExportPlatform::export_project_files(EditorExportSaveFunction p_func Ref imd = memnew( ResourceImportMetadata ); //imd->set_editor(); + for (List::Element *F=atlas_images.front();F;F=F->next()) { imd->add_source(EditorImportPlugin::validate_source_path(F->get()),FileAccess::get_md5(F->get())); + } diff --git a/tools/editor/io_plugins/editor_texture_import_plugin.cpp b/tools/editor/io_plugins/editor_texture_import_plugin.cpp index 1fa7a50515e..16ea803da41 100644 --- a/tools/editor/io_plugins/editor_texture_import_plugin.cpp +++ b/tools/editor/io_plugins/editor_texture_import_plugin.cpp @@ -1312,21 +1312,30 @@ Error EditorTextureImportPlugin::import2(const String& p_path, const Ref::Element *E=source_map[i].front();E;E=E->next()) { - String apath = p_path.get_base_dir().plus_file(from->get_source_path(E->get()).get_file().basename()+".atex"); + String apath; + String spath = from->get_source_path(E->get()).get_file(); + + if (p_external) { + apath = p_path.get_base_dir().plus_file(spath.basename()+"."+from->get_source_path(E->get()).md5_text()+".atex"); + } else { + apath = p_path.get_base_dir().plus_file(spath.basename()+".atex"); + } Ref at; if (ResourceCache::has(apath)) { + at = Ref( ResourceCache::get(apath)->cast_to() ); } else { at = Ref( memnew( AtlasTexture ) ); + } at->set_region(region); at->set_margin(margin); at->set_path(apath); atlases[E->get()]=at; - print_line("Atlas Tex: "+apath); + } } if (ResourceCache::has(p_path)) {