@@ -89,6 +89,8 @@ func _import(source_file, save_path, options, r_platform_variants, r_gen_files):
8989
9090 create_atlas_textures (sheetFolder , sheet , image , r_gen_files )
9191
92+ delete_no_longer_existing_sprite_files (sheetFolder , r_gen_files )
93+
9294 # without this call Godot editor will not refresh its filesystem view
9395 EditorInterface .get_resource_filesystem ().scan_sources ();
9496
@@ -149,3 +151,43 @@ func read_sprite_sheet(fileName):
149151
150152 file .close ()
151153 return dict
154+
155+
156+ func get_all_tres_files_recursive (folder_path : String ) -> PackedStringArray :
157+ var result := PackedStringArray ()
158+ var dir := DirAccess .open (folder_path )
159+
160+ # Get all files in this directory
161+ var files = dir .get_files ()
162+ for file_name in files :
163+ if file_name .ends_with (".tres" ):
164+ result .append (folder_path + "/" + file_name )
165+
166+ # Get all subdirectories and recurse
167+ var subdirs = dir .get_directories ()
168+ for subdir_name in subdirs :
169+ var subdir_path = folder_path + "/" + subdir_name
170+ result .append_array (get_all_tres_files_recursive (subdir_path ))
171+
172+ return result
173+
174+
175+ func delete_no_longer_existing_sprite_files (sheetFolder : String , generated_files : PackedStringArray ) -> void :
176+ # Convert generated_files to a Set for fast lookup
177+ var generated_set := {}
178+ for path in generated_files :
179+ generated_set [path ] = true
180+
181+ var dir := DirAccess .open (sheetFolder )
182+ if dir == null :
183+ printerr ("Failed to open directory for deletion: " + sheetFolder )
184+ return
185+
186+ var existing_files = get_all_tres_files_recursive (sheetFolder )
187+ for file_path in existing_files :
188+ if not generated_set .has (file_path ):
189+ var err = dir .remove (file_path )
190+ if err != OK :
191+ printerr ("Failed to delete obsolete sprite: " + file_path )
192+ else :
193+ print ("Deleted obsolete sprite: " + file_path )
0 commit comments