diff options
author | Marc Gilleron <marc.gilleron@gmail.com> | 2022-02-16 00:55:13 +0000 |
---|---|---|
committer | Marc Gilleron <marc.gilleron@gmail.com> | 2022-02-16 00:55:13 +0000 |
commit | 722945be61f78bfc5ca12d1ddd6c57108dac0f26 (patch) | |
tree | 9f55bda898512cbd4b74e92dfd89efaeb16659fc /core/io/resource_format_binary.cpp | |
parent | d02db6306ebcb57296dece3e8d990ae188b39aad (diff) | |
download | redot-engine-722945be61f78bfc5ca12d1ddd6c57108dac0f26.tar.gz |
Fix loading of binary resources with 64-bit floats
Diffstat (limited to 'core/io/resource_format_binary.cpp')
-rw-r--r-- | core/io/resource_format_binary.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/core/io/resource_format_binary.cpp b/core/io/resource_format_binary.cpp index ed58b4be7b..d25f51548e 100644 --- a/core/io/resource_format_binary.cpp +++ b/core/io/resource_format_binary.cpp @@ -901,6 +901,7 @@ void ResourceLoaderBinary::open(FileAccess *p_f, bool p_no_resources, bool p_kee if (flags & ResourceFormatSaverBinaryInstance::FORMAT_FLAG_UIDS) { using_uids = true; } + f->real_is_double = (flags & ResourceFormatSaverBinaryInstance::FORMAT_FLAG_REAL_T_IS_DOUBLE) != 0; if (using_uids) { uid = f->get_64(); @@ -1902,7 +1903,13 @@ Error ResourceFormatSaverBinaryInstance::save(const String &p_path, const RES &p save_unicode_string(f, p_resource->get_class()); f->store_64(0); //offset to import metadata - f->store_32(FORMAT_FLAG_NAMED_SCENE_IDS | FORMAT_FLAG_UIDS); + { + uint32_t format_flags = FORMAT_FLAG_NAMED_SCENE_IDS | FORMAT_FLAG_UIDS; +#ifdef REAL_T_IS_DOUBLE + format_flags |= FORMAT_FLAG_REAL_T_IS_DOUBLE; +#endif + f->store_32(format_flags); + } ResourceUID::ID uid = ResourceSaver::get_resource_id_for_path(p_path, true); f->store_64(uid); for (int i = 0; i < ResourceFormatSaverBinaryInstance::RESERVED_FIELDS; i++) { |