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

This commit is contained in:
Juan Linietsky 2016-06-21 20:51:41 -03:00
parent d57b09e47b
commit 3edf66477a
3 changed files with 17 additions and 2 deletions

View file

@ -129,6 +129,10 @@ public:
virtual void notification(int p_notification)=0; 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 void refcount_incremented() {}
virtual bool refcount_decremented() { return true; } //return true if it can die virtual bool refcount_decremented() { return true; } //return true if it can die

View file

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

View file

@ -1312,21 +1312,30 @@ Error EditorTextureImportPlugin::import2(const String& p_path, const Ref<Resourc
ERR_CONTINUE( !source_map.has(i) ); ERR_CONTINUE( !source_map.has(i) );
for (List<int>::Element *E=source_map[i].front();E;E=E->next()) { 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; Ref<AtlasTexture> at;
if (ResourceCache::has(apath)) { if (ResourceCache::has(apath)) {
at = Ref<AtlasTexture>( ResourceCache::get(apath)->cast_to<AtlasTexture>() ); at = Ref<AtlasTexture>( ResourceCache::get(apath)->cast_to<AtlasTexture>() );
} else { } else {
at = Ref<AtlasTexture>( memnew( AtlasTexture ) ); at = Ref<AtlasTexture>( memnew( AtlasTexture ) );
} }
at->set_region(region); at->set_region(region);
at->set_margin(margin); at->set_margin(margin);
at->set_path(apath); at->set_path(apath);
atlases[E->get()]=at; atlases[E->get()]=at;
print_line("Atlas Tex: "+apath);
} }
} }
if (ResourceCache::has(p_path)) { if (ResourceCache::has(p_path)) {