| 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); |
nothing calls this directly
no test coverage detected