Переглянути джерело

PCKPacker: Fix first file being written mis-aligned

nikitalita 1 місяць тому
батько
коміт
6e823b4b14
2 змінених файлів з 12 додано та 0 видалено
  1. 6 0
      core/io/pck_packer.cpp
  2. 6 0
      editor/export/editor_export_platform.cpp

+ 6 - 0
core/io/pck_packer.cpp

@@ -111,6 +111,12 @@ Error PCKPacker::pck_start(const String &p_pck_path, int p_alignment, const Stri
 		file->store_32(0); // Reserved.
 	}
 
+	// Align for first file.
+	int pad = _get_pad(alignment, file->get_position());
+	for (int i = 0; i < pad; i++) {
+		file->store_8(0);
+	}
+
 	file_base = file->get_position();
 	file->seek(file_base_ofs);
 	file->store_64(file_base); // Update files base.

+ 6 - 0
editor/export/editor_export_platform.cpp

@@ -1966,6 +1966,12 @@ Error EditorExportPlatform::save_pack(const Ref<EditorExportPreset> &p_preset, b
 		f->store_32(0); // Reserved.
 	}
 
+	// Align for first file.
+	int file_padding = _get_pad(PCK_PADDING, f->get_position());
+	for (int i = 0; i < file_padding; i++) {
+		f->store_8(0);
+	}
+
 	uint64_t file_base = f->get_position();
 	f->seek(file_base_ofs);
 	f->store_64(file_base - pck_start_pos); // Update files base.