Skip to content

Commit 2ed6d12

Browse files
committed
Merge pull request #97363 from reduz/deterministic-gen-suberesources-id
Allow passing UID to importer
2 parents 7464510 + fe34c45 commit 2ed6d12

38 files changed

+54
-41
lines changed

core/io/resource_importer.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ class ResourceImporter : public RefCounted {
148148
virtual void handle_compatibility_options(HashMap<StringName, Variant> &p_import_params) const {}
149149
virtual String get_option_group_file() const { return String(); }
150150

151-
virtual Error import(const String &p_source_file, const String &p_save_path, const HashMap<StringName, Variant> &p_options, List<String> *r_platform_variants, List<String> *r_gen_files = nullptr, Variant *r_metadata = nullptr) = 0;
151+
virtual Error import(ResourceUID::ID p_source_id, const String &p_source_file, const String &p_save_path, const HashMap<StringName, Variant> &p_options, List<String> *r_platform_variants, List<String> *r_gen_files = nullptr, Variant *r_metadata = nullptr) = 0;
152152
virtual bool can_import_threaded() const { return false; }
153153
virtual void import_threaded_begin() {}
154154
virtual void import_threaded_end() {}

core/templates/hashfuncs.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,16 @@ static _FORCE_INLINE_ uint32_t hash_one_uint64(const uint64_t p_int) {
110110
return uint32_t(v);
111111
}
112112

113+
static _FORCE_INLINE_ uint64_t hash64_murmur3_64(uint64_t key, uint64_t seed) {
114+
key ^= seed;
115+
key ^= key >> 33;
116+
key *= 0xff51afd7ed558ccd;
117+
key ^= key >> 33;
118+
key *= 0xc4ceb9fe1a85ec53;
119+
key ^= key >> 33;
120+
return key;
121+
}
122+
113123
#define HASH_MURMUR3_SEED 0x7F07C65
114124
// Murmurhash3 32-bit version.
115125
// All MurmurHash versions are public domain software, and the author disclaims all copyright to their code.

editor/editor_file_system.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2749,13 +2749,17 @@ Error EditorFileSystem::_reimport_file(const String &p_file, const HashMap<Strin
27492749
}
27502750
}
27512751

2752+
if (uid == ResourceUID::INVALID_ID) {
2753+
uid = ResourceUID::get_singleton()->create_id();
2754+
}
2755+
27522756
//finally, perform import!!
27532757
String base_path = ResourceFormatImporter::get_singleton()->get_import_base_path(p_file);
27542758

27552759
List<String> import_variants;
27562760
List<String> gen_files;
27572761
Variant meta;
2758-
Error err = importer->import(p_file, base_path, params, &import_variants, &gen_files, &meta);
2762+
Error err = importer->import(uid, p_file, base_path, params, &import_variants, &gen_files, &meta);
27592763

27602764
// As import is complete, save the .import file.
27612765

@@ -2776,10 +2780,6 @@ Error EditorFileSystem::_reimport_file(const String &p_file, const HashMap<Strin
27762780
f->store_line("type=\"" + importer->get_resource_type() + "\"");
27772781
}
27782782

2779-
if (uid == ResourceUID::INVALID_ID) {
2780-
uid = ResourceUID::get_singleton()->create_id();
2781-
}
2782-
27832783
f->store_line("uid=\"" + ResourceUID::get_singleton()->id_to_text(uid) + "\""); // Store in readable format.
27842784

27852785
if (err == OK) {

editor/import/3d/resource_importer_obj.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -646,7 +646,7 @@ bool ResourceImporterOBJ::get_option_visibility(const String &p_path, const Stri
646646
return true;
647647
}
648648

649-
Error ResourceImporterOBJ::import(const String &p_source_file, const String &p_save_path, const HashMap<StringName, Variant> &p_options, List<String> *r_platform_variants, List<String> *r_gen_files, Variant *r_metadata) {
649+
Error ResourceImporterOBJ::import(ResourceUID::ID p_source_id, const String &p_source_file, const String &p_save_path, const HashMap<StringName, Variant> &p_options, List<String> *r_platform_variants, List<String> *r_gen_files, Variant *r_metadata) {
650650
List<Ref<ImporterMesh>> meshes;
651651

652652
Vector<uint8_t> src_lightmap_cache;

editor/import/3d/resource_importer_obj.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ class ResourceImporterOBJ : public ResourceImporter {
6161
virtual void get_import_options(const String &p_path, List<ImportOption> *r_options, int p_preset = 0) const override;
6262
virtual bool get_option_visibility(const String &p_path, const String &p_option, const HashMap<StringName, Variant> &p_options) const override;
6363

64-
virtual Error import(const String &p_source_file, const String &p_save_path, const HashMap<StringName, Variant> &p_options, List<String> *r_platform_variants, List<String> *r_gen_files = nullptr, Variant *r_metadata = nullptr) override;
64+
virtual Error import(ResourceUID::ID p_source_id, const String &p_source_file, const String &p_save_path, const HashMap<StringName, Variant> &p_options, List<String> *r_platform_variants, List<String> *r_gen_files = nullptr, Variant *r_metadata = nullptr) override;
6565

6666
ResourceImporterOBJ();
6767
};

editor/import/3d/resource_importer_scene.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2872,7 +2872,7 @@ Error ResourceImporterScene::_check_resource_save_paths(const Dictionary &p_data
28722872
return OK;
28732873
}
28742874

2875-
Error ResourceImporterScene::import(const String &p_source_file, const String &p_save_path, const HashMap<StringName, Variant> &p_options, List<String> *r_platform_variants, List<String> *r_gen_files, Variant *r_metadata) {
2875+
Error ResourceImporterScene::import(ResourceUID::ID p_source_id, const String &p_source_file, const String &p_save_path, const HashMap<StringName, Variant> &p_options, List<String> *r_platform_variants, List<String> *r_gen_files, Variant *r_metadata) {
28762876
const String &src_path = p_source_file;
28772877

28782878
Ref<EditorSceneFormatImporter> importer;

editor/import/3d/resource_importer_scene.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,7 @@ class ResourceImporterScene : public ResourceImporter {
299299
void _compress_animations(AnimationPlayer *anim, int p_page_size_kb);
300300

301301
Node *pre_import(const String &p_source_file, const HashMap<StringName, Variant> &p_options);
302-
virtual Error import(const String &p_source_file, const String &p_save_path, const HashMap<StringName, Variant> &p_options, List<String> *r_platform_variants, List<String> *r_gen_files = nullptr, Variant *r_metadata = nullptr) override;
302+
virtual Error import(ResourceUID::ID p_source_id, const String &p_source_file, const String &p_save_path, const HashMap<StringName, Variant> &p_options, List<String> *r_platform_variants, List<String> *r_gen_files = nullptr, Variant *r_metadata = nullptr) override;
303303

304304
virtual bool has_advanced_options() const override;
305305
virtual void show_advanced_options(const String &p_path) override;

editor/import/editor_import_plugin.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ bool EditorImportPlugin::get_option_visibility(const String &p_path, const Strin
163163
ERR_FAIL_V_MSG(false, "Unimplemented _get_option_visibility in add-on.");
164164
}
165165

166-
Error EditorImportPlugin::import(const String &p_source_file, const String &p_save_path, const HashMap<StringName, Variant> &p_options, List<String> *r_platform_variants, List<String> *r_gen_files, Variant *r_metadata) {
166+
Error EditorImportPlugin::import(ResourceUID::ID p_source_id, const String &p_source_file, const String &p_save_path, const HashMap<StringName, Variant> &p_options, List<String> *r_platform_variants, List<String> *r_gen_files, Variant *r_metadata) {
167167
Dictionary options;
168168
TypedArray<String> platform_variants, gen_files;
169169

editor/import/editor_import_plugin.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ class EditorImportPlugin : public ResourceImporter {
6969
virtual int get_import_order() const override;
7070
virtual void get_import_options(const String &p_path, List<ImportOption> *r_options, int p_preset) const override;
7171
virtual bool get_option_visibility(const String &p_path, const String &p_option, const HashMap<StringName, Variant> &p_options) const override;
72-
virtual Error import(const String &p_source_file, const String &p_save_path, const HashMap<StringName, Variant> &p_options, List<String> *r_platform_variants, List<String> *r_gen_files, Variant *r_metadata = nullptr) override;
72+
virtual Error import(ResourceUID::ID p_source_id, const String &p_source_file, const String &p_save_path, const HashMap<StringName, Variant> &p_options, List<String> *r_platform_variants, List<String> *r_gen_files, Variant *r_metadata = nullptr) override;
7373
virtual bool can_import_threaded() const override;
7474
Error append_import_external_resource(const String &p_file, const HashMap<StringName, Variant> &p_custom_options = HashMap<StringName, Variant>(), const String &p_custom_importer = String(), Variant p_generator_parameters = Variant());
7575
};

editor/import/resource_importer_bitmask.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ void ResourceImporterBitMap::get_import_options(const String &p_path, List<Impor
7272
r_options->push_back(ImportOption(PropertyInfo(Variant::FLOAT, "threshold", PROPERTY_HINT_RANGE, "0,1,0.01"), 0.5));
7373
}
7474

75-
Error ResourceImporterBitMap::import(const String &p_source_file, const String &p_save_path, const HashMap<StringName, Variant> &p_options, List<String> *r_platform_variants, List<String> *r_gen_files, Variant *r_metadata) {
75+
Error ResourceImporterBitMap::import(ResourceUID::ID p_source_id, const String &p_source_file, const String &p_save_path, const HashMap<StringName, Variant> &p_options, List<String> *r_platform_variants, List<String> *r_gen_files, Variant *r_metadata) {
7676
int create_from = p_options["create_from"];
7777
float threshold = p_options["threshold"];
7878
Ref<Image> image;

0 commit comments

Comments
 (0)