MCPcopy Create free account
hub / github.com/SakuraEngine/SakuraEngine / ImportAsset

Method ImportAsset

modules/tools/tool_core/src/asset/cook_system.cpp:489–514  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

487}
488
489SAssetRecord* 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}
515SAssetRecord* SCookSystemImpl::GetAssetRecord(const skr_guid_t& guid)
516{
517 auto iter = assets.find(guid);

Callers 1

compile_projectFunction · 0.80

Calls 9

memsetFunction · 0.85
GetAssetPathMethod · 0.80
loadFunction · 0.50
ReadFunction · 0.50
moveFunction · 0.50
stringMethod · 0.45
iterateMethod · 0.45
errorMethod · 0.45
insertMethod · 0.45

Tested by

no test coverage detected