MCPcopy Create free account
hub / github.com/TheForceEngine/TheForceEngine / serialize

Function serialize

TheForceEngine/TFE_ForceScript/forceScript.cpp:317–649  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

315 };
316
317 void serialize(Stream* stream)
318 {
319 if (serialization_getVersion() < SaveVersionLevelScriptV1)
320 {
321 return;
322 }
323 initSerliazableTypes();
324
325 s32 moduleCount = serialization_getMode() == SMODE_WRITE ? (s32)s_modules.size() : 0;
326 s32 scriptThreadCount = serialization_getMode() == SMODE_WRITE ? (s32)s_scriptThreads.size() : 0;
327 s32 freeThreadCount = serialization_getMode() == SMODE_WRITE ? (s32)s_freeThreads.size() : 0;
328 SERIALIZE(SaveVersionLevelScriptV1, moduleCount, 0);
329 SERIALIZE(SaveVersionLevelScriptV1, scriptThreadCount, 0);
330 SERIALIZE(SaveVersionLevelScriptV1, freeThreadCount, 0);
331
332 /////////////////////////////////////////////////////////
333 // Serialize Script Modules
334 /////////////////////////////////////////////////////////
335 std::vector<ModuleDef> modDef;
336 if (serialization_getMode() == SMODE_READ)
337 {
338 modDef.resize(moduleCount);
339 }
340 else
341 {
342 modDef = s_modules;
343 }
344
345 std::string nameStr, nameSpaceStr;
346 for (s32 m = 0; m < moduleCount; m++)
347 {
348 ModuleDef* curModDef = &modDef[m];
349
350 SERIALIZE_STRING(SaveVersionLevelScriptV1, curModDef->name);
351 SERIALIZE_STRING(SaveVersionLevelScriptV1, curModDef->path);
352 SERIALIZE(SaveVersionLevelScriptV1, curModDef->allowReadFromArchive, false);
353 SERIALIZE(SaveVersionLevelScriptV1, curModDef->accessMask, 0);
354
355 u32 globalCount = 0;
356 if (serialization_getMode() == SMODE_READ)
357 {
358 curModDef->mod = (asIScriptModule*)createModule(curModDef->name.c_str(), curModDef->path.c_str(), curModDef->allowReadFromArchive, curModDef->accessMask);
359 }
360 else
361 {
362 globalCount = curModDef->mod->GetGlobalVarCount();
363 }
364 asIScriptModule* mod = curModDef->mod;
365 SERIALIZE(SaveVersionLevelScriptV1, globalCount, 0);
366
367 for (u32 g = 0; g < globalCount; g++)
368 {
369 s32 typeId = 0;
370 if (serialization_getMode() == SMODE_WRITE)
371 {
372 const char* name;
373 const char* nameSpace;
374 mod->GetGlobalVar(g, &name, &nameSpace, &typeId);

Callers

nothing calls this directly

Calls 15

serialization_getVersionFunction · 0.85
initSerliazableTypesFunction · 0.85
serialization_getModeFunction · 0.85
createModuleFunction · 0.85
serializeVariableFunction · 0.85
logWriteFunction · 0.85
c_strMethod · 0.80
GetGlobalVarCountMethod · 0.80
GetGlobalVarMethod · 0.80
GetAddressOfGlobalVarMethod · 0.80
dataMethod · 0.80

Tested by

no test coverage detected