Browse Source

Fixed error using the same atlas rect for all images, closes #4139

Juan Linietsky 9 years ago
parent
commit
3edf66477a

+ 4 - 0
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
 

+ 2 - 0
tools/editor/editor_import_export.cpp

@@ -861,9 +861,11 @@ Error EditorExportPlatform::export_project_files(EditorExportSaveFunction p_func
 			Ref<ResourceImportMetadata> imd = memnew( ResourceImportMetadata );
 			//imd->set_editor();
 
+
 			for (List<StringName>::Element *F=atlas_images.front();F;F=F->next()) {
 
 				imd->add_source(EditorImportPlugin::validate_source_path(F->get()),FileAccess::get_md5(F->get()));
+
 			}
 
 

+ 11 - 2
tools/editor/io_plugins/editor_texture_import_plugin.cpp

@@ -1312,21 +1312,30 @@ Error EditorTextureImportPlugin::import2(const String& p_path, const Ref<Resourc
 			ERR_CONTINUE( !source_map.has(i) );
 			for (List<int>::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<AtlasTexture> at;
 
 				if (ResourceCache::has(apath)) {
+
 					at = Ref<AtlasTexture>( ResourceCache::get(apath)->cast_to<AtlasTexture>() );
 				} else {
 
 					at = Ref<AtlasTexture>( 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)) {