MCPcopy Create free account
hub / github.com/Illation/ETEngine / CookCompiledPackage

Function CookCompiledPackage

Engine/source/EtCooker/mainCooker.cpp:158–212  ·  view source on GitHub ↗

--------------------- CookCompiledPackage Writes the package with compiled data that ends up as a generated source file. - this includes the file for the asset database

Source from the content-addressed store, hash-verified

156// - this includes the file for the asset database
157//
158void CookCompiledPackage(std::string const& dbBase,
159 std::string const& outPath,
160 std::string const& resName,
161 core::AssetDatabase& db,
162 std::string const& engineDbBase,
163 core::AssetDatabase& engineDb)
164{
165 // Create a package writer - all file paths will be written relative to our database directory
166 PackageWriter packageWriter;
167 std::vector<uint8> packageData;
168
169 // serialize the asset database to a temporary file
170 static std::string const s_TempPath("temp");
171 std::string const dbName(core::ResourceManager::s_DatabasePath);
172 std::string const tempDbFullPath = s_TempPath + std::string("/") + dbName;
173
174 // Ensure the generated file directory exists
175 core::Directory* tempDir = new core::Directory(s_TempPath, nullptr, true);
176
177 core::AssetDatabase mergeDb(false);
178 mergeDb.Merge(db);
179 mergeDb.Merge(engineDb);
180 if (!core::serialization::SerializeToFile(tempDbFullPath, mergeDb))
181 {
182 LOG(FS("CookCompiledPackage > Failed to serialize asset database to '%s'", tempDbFullPath.c_str()), core::LogLevel::Error);
183 }
184
185 // load the asset database from the temporary file and add it to the package
186 core::File* dbFile = new core::File(dbName, tempDir);
187 packageWriter.AddFile(dbFile, dbFile->GetPath(), core::E_CompressionType::Store);
188
189 // add the boot config
190 core::File* cfgFile = new core::File(dbBase + fw::BootConfig::s_FileName, nullptr);
191 packageWriter.AddFile(cfgFile, dbBase, core::E_CompressionType::Store);
192
193 // add all other compiled files to the package
194 static core::HashString const s_CompiledPackageId;
195 AddPackageToWriter(s_CompiledPackageId, dbBase, packageWriter, db);
196 AddPackageToWriter(s_CompiledPackageId, engineDbBase, packageWriter, engineDb);
197
198 // write our package
199 packageWriter.Write(packageData);
200
201 // Generate source file
202 GenerateCompilableResource(packageData, resName, outPath);
203
204 // cleanup
205 packageWriter.RemoveFile(dbFile);
206 if (!tempDir->Delete())
207 {
208 LOG("CookCompiledPackage > Failed to clean up temporary file directory!", core::LogLevel::Error);
209 delete tempDir;
210 }
211 tempDir = nullptr;
212}
213
214//---------------------
215// CookCompiledPackage

Callers 1

RunCookerFunction · 0.85

Calls 8

AddPackageToWriterFunction · 0.85
AddFileMethod · 0.80
GetPathMethod · 0.80
RemoveFileMethod · 0.80
DeleteMethod · 0.80
MergeMethod · 0.45
WriteMethod · 0.45

Tested by

no test coverage detected