| 487 | } |
| 488 | |
| 489 | SAssetRecord* SCookSystemImpl::ImportAsset(SProject* project, skr::filesystem::path path) |
| 490 | { |
| 491 | SkrZoneScoped; |
| 492 | std::error_code ec = {}; |
| 493 | auto record = SkrNew<SAssetRecord>(); |
| 494 | // TODO: replace file load with skr api |
| 495 | record->meta = simdjson::padded_string::load(path.string()).value_unsafe(); |
| 496 | simdjson::ondemand::parser parser; |
| 497 | auto doc = parser.iterate(record->meta); |
| 498 | skr::json::Read(doc["guid"].value_unsafe(), record->guid); |
| 499 | auto otype = doc["type"]; |
| 500 | if (otype.error() == simdjson::SUCCESS) |
| 501 | skr::json::Read(std::move(otype).value_unsafe(), record->type); |
| 502 | else |
| 503 | std::memset(&record->type, 0, sizeof(skr_guid_t)); |
| 504 | auto ctype = doc["cookerType"]; |
| 505 | if (ctype.error() == simdjson::SUCCESS) |
| 506 | skr::json::Read(std::move(ctype).value_unsafe(), record->cooker); |
| 507 | else |
| 508 | std::memset(&record->cooker, 0, sizeof(skr_guid_t)); |
| 509 | record->path = skr::filesystem::relative(path, project->GetAssetPath()); |
| 510 | record->project = project; |
| 511 | SMutexLock lock(assetMutex); |
| 512 | assets.insert(std::make_pair(record->guid, record)); |
| 513 | return record; |
| 514 | } |
| 515 | SAssetRecord* SCookSystemImpl::GetAssetRecord(const skr_guid_t& guid) |
| 516 | { |
| 517 | auto iter = assets.find(guid); |
no test coverage detected