void universeFileLoaded(Lumix::FS::IFile& file, bool success) { ASSERT(success); if (!success) return; ASSERT(file.getBuffer()); Lumix::InputBlob blob(file.getBuffer(), (int)file.size()); #pragma pack(1) struct Header { Lumix::uint32 magic; int version; Lumix::uint32 hash; Lumix::uint32 engine_hash; }; #pragma pack() Header header; blob.read(header); if (Lumix::crc32((const uint8_t*)blob.getData() + sizeof(header), blob.getSize() - sizeof(header)) != header.hash) { Lumix::g_log_error.log("App") << "Universe corrupted"; return; } m_universe->resetScenes(); bool deserialize_succeeded = m_engine->deserialize(*m_universe, blob); if (!deserialize_succeeded) { Lumix::g_log_error.log("App") << "Failed to deserialize universe"; } }
void universeFileLoaded(Lumix::FS::IFile& file, bool success, Lumix::FS::FileSystem& fs) { ASSERT(success); if (success) { ASSERT(file.getBuffer()); Lumix::InputBlob blob(file.getBuffer(), file.size()); uint32_t hash = 0; blob.read(hash); uint32_t engine_hash = 0; blob.read(engine_hash); if (Lumix::crc32((const uint8_t*)blob.getData() + sizeof(hash), blob.getSize() - sizeof(hash)) != hash) { ASSERT(false); return; } bool deserialize_succeeded = m_engine->deserialize(*m_universe_context, blob); m_is_test_universe_loaded = true; ASSERT(deserialize_succeeded); } fs.close(file); }
void startupScriptLoaded(Lumix::FS::IFile& file, bool success) { if (!success) { Lumix::g_log_error.log("App") << "Could not open " << m_startup_script_path; return; } m_engine->runScript((const char*)file.getBuffer(), (int)file.size(), m_startup_script_path); }