This commonly occurs when files are copied outside of the editor and don't get new UIDs.
Restricting this warning to first_scan since it's we want to exclude the case of files being moved after initial load which is harder to handle.
Addresses https://github.com/godotengine/godot-proposals/discussions/8949
* Replaces `find(...) != -1` with `contains` for `String`
* Replaces `find(...) == -1` with `!contains` for `String`
* Replaces `find(...) != -1` with `has` for containers
* Replaces `find(...) == -1` with `!has` for containers
1. Extracted texture paths in `GLTFDocument::_parse_image_save_image` at the project root started with res:/// which broke cache invalidation
2. md5 hashes were not being written to generator_parameters for new imports, which led Godot to think the file was manually created.
3. `EditorFileSystem::reimport_append` must emit the `resources_reimported` signal in order for the resource cache to be updated.
We might need better UX to handle this in EditorFileDialog, showing the
directories as greyed out with a tooltip, but for now this silences a warning
that users have no control over.
We keep the warning only in the initial project scan.
Limit the maxsplit to `8` to get complete `deps`.
`deps` caches the return value of `ResourceLoader::get_dependencies()`,
which is also separated by "::".
"::" is quite popular as a splitter.
Prevents recursion when importing files due to the ill nature of EditorProgress.
The progress dialog will have to be entirely rewritten after 4.0 is out due to it being a constant source of bugs.
In the meantime, this fixes the problem.
Fixes#53871. Supersedes #73159.
* Add API: `EditorFileSystem::reimport_append(path)`, thread safe, what can be used from importers when they generate new files within the import process.
* Added a `remap.gen_param` custom value to .import files, which can be used by importers to store data needed to generate this file again or not.
This API is added to allow the GLTF2 importer to properly extract png files as textures.