| 309 | } |
| 310 | |
| 311 | void Root::fullyLoad() { |
| 312 | auto workerPool = WorkerPool("Root::fullyLoad", RootLoadThreads); |
| 313 | List<WorkerPoolHandle> loaders; |
| 314 | |
| 315 | loaders.reserve(40); |
| 316 | |
| 317 | loaders.append(workerPool.addWork(swallow(bind(&Root::assets, this)))); |
| 318 | loaders.append(workerPool.addWork(swallow(bind(&Root::configuration, this)))); |
| 319 | loaders.append(workerPool.addWork(swallow(bind(&Root::codexDatabase, this)))); |
| 320 | loaders.append(workerPool.addWork(swallow(bind(&Root::behaviorDatabase, this)))); |
| 321 | loaders.append(workerPool.addWork(swallow(bind(&Root::techDatabase, this)))); |
| 322 | loaders.append(workerPool.addWork(swallow(bind(&Root::aiDatabase, this)))); |
| 323 | loaders.append(workerPool.addWork(swallow(bind(&Root::questTemplateDatabase, this)))); |
| 324 | loaders.append(workerPool.addWork(swallow(bind(&Root::emoteProcessor, this)))); |
| 325 | loaders.append(workerPool.addWork(swallow(bind(&Root::terrainDatabase, this)))); |
| 326 | loaders.append(workerPool.addWork(swallow(bind(&Root::particleDatabase, this)))); |
| 327 | loaders.append(workerPool.addWork(swallow(bind(&Root::versioningDatabase, this)))); |
| 328 | loaders.append(workerPool.addWork(swallow(bind(&Root::functionDatabase, this)))); |
| 329 | loaders.append(workerPool.addWork(swallow(bind(&Root::imageMetadataDatabase, this)))); |
| 330 | loaders.append(workerPool.addWork(swallow(bind(&Root::tenantDatabase, this)))); |
| 331 | loaders.append(workerPool.addWork(swallow(bind(&Root::nameGenerator, this)))); |
| 332 | loaders.append(workerPool.addWork(swallow(bind(&Root::danceDatabase, this)))); |
| 333 | loaders.append(workerPool.addWork(swallow(bind(&Root::spawnTypeDatabase, this)))); |
| 334 | loaders.append(workerPool.addWork(swallow(bind(&Root::radioMessageDatabase, this)))); |
| 335 | loaders.append(workerPool.addWork(swallow(bind(&Root::collectionDatabase, this)))); |
| 336 | loaders.append(workerPool.addWork(swallow(bind(&Root::statisticsDatabase, this)))); |
| 337 | loaders.append(workerPool.addWork(swallow(bind(&Root::speciesDatabase, this)))); |
| 338 | loaders.append(workerPool.addWork(swallow(bind(&Root::projectileDatabase, this)))); |
| 339 | loaders.append(workerPool.addWork(swallow(bind(&Root::stagehandDatabase, this)))); |
| 340 | loaders.append(workerPool.addWork(swallow(bind(&Root::damageDatabase, this)))); |
| 341 | loaders.append(workerPool.addWork(swallow(bind(&Root::effectSourceDatabase, this)))); |
| 342 | loaders.append(workerPool.addWork(swallow(bind(&Root::statusEffectDatabase, this)))); |
| 343 | loaders.append(workerPool.addWork(swallow(bind(&Root::treasureDatabase, this)))); |
| 344 | loaders.append(workerPool.addWork(swallow(bind(&Root::materialDatabase, this)))); |
| 345 | loaders.append(workerPool.addWork(swallow(bind(&Root::objectDatabase, this)))); |
| 346 | loaders.append(workerPool.addWork(swallow(bind(&Root::npcDatabase, this)))); |
| 347 | loaders.append(workerPool.addWork(swallow(bind(&Root::plantDatabase, this)))); |
| 348 | loaders.append(workerPool.addWork(swallow(bind(&Root::itemDatabase, this)))); |
| 349 | loaders.append(workerPool.addWork(swallow(bind(&Root::monsterDatabase, this)))); |
| 350 | loaders.append(workerPool.addWork(swallow(bind(&Root::vehicleDatabase, this)))); |
| 351 | loaders.append(workerPool.addWork(swallow(bind(&Root::playerFactory, this)))); |
| 352 | loaders.append(workerPool.addWork(swallow(bind(&Root::entityFactory, this)))); |
| 353 | loaders.append(workerPool.addWork(swallow(bind(&Root::biomeDatabase, this)))); |
| 354 | loaders.append(workerPool.addWork(swallow(bind(&Root::liquidsDatabase, this)))); |
| 355 | loaders.append(workerPool.addWork(swallow(bind(&Root::dungeonDefinitions, this)))); |
| 356 | loaders.append(workerPool.addWork(swallow(bind(&Root::tilesetDatabase, this)))); |
| 357 | |
| 358 | auto startSeconds = Time::monotonicTime(); |
| 359 | for (auto& loader : loaders) |
| 360 | loader.finish(); |
| 361 | Logger::info("Root: Loaded everything in {} seconds", Time::monotonicTime() - startSeconds); |
| 362 | |
| 363 | { |
| 364 | MutexLocker locker(m_assetsMutex); |
| 365 | if (m_assets) |
| 366 | m_assets->clearCache(); |
| 367 | } |
| 368 | } |
no test coverage detected