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

Function compile_project

modules/tools/resource_compiler/main.cpp:120–177  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

118}
119
120int compile_project(skd::SProject* project)
121{
122 auto& system = *skd::asset::GetCookSystem();
123 InitializeResourceSystem(*project);
124 std::error_code ec = {};
125 skr::filesystem::recursive_directory_iterator iter(project->GetAssetPath(), ec);
126 //----- scan project directory
127 skr::stl_vector<skr::filesystem::path> paths;
128 while (iter != end(iter))
129 {
130 if (iter->is_regular_file(ec) && IsAsset(iter->path()))
131 {
132 paths.push_back(*iter);
133 SKR_LOG_FMT_DEBUG(u8"{}", iter->path().u8string().c_str());
134 }
135 iter.increment(ec);
136 }
137 SKR_LOG_INFO(u8"Project dir scan finished.");
138 //----- import project assets (guid & type & path)
139 {
140 using iter_t = typename decltype(paths)::iterator;
141 skr::parallel_for(paths.begin(), paths.end(), 20,
142 [&](iter_t begin, iter_t end) {
143 SkrZoneScopedN("Import");
144 for (auto i = begin; i != end; ++i)
145 system.ImportAsset(project, *i);
146 });
147 }
148 SKR_LOG_INFO(u8"Project asset import finished.");
149 skr::filesystem::create_directories(project->GetOutputPath(), ec);
150 skr::filesystem::create_directories(project->GetDependencyPath(), ec);
151 //----- schedule cook tasks (checking dependencies)
152 {
153 system.ParallelForEachAsset(1,
154 [&](skr::span<skd::asset::SAssetRecord*> assets) {
155 SkrZoneScopedN("Cook");
156 for (auto asset : assets)
157 {
158 system.EnsureCooked(asset->guid);
159 }
160 });
161 }
162 SKR_LOG_INFO(u8"Project asset import finished.");
163 auto resource_system = skr::resource::GetResourceSystem();
164 skr::task::schedule([&]
165 {
166 system.WaitForAll();
167 resource_system->Quit();
168 }, nullptr);
169 resource_system->Update();
170 //----- wait
171 while (!system.AllCompleted() && resource_system->WaitRequest())
172 {
173 resource_system->Update();
174 }
175 DestroyResourceSystem(*project);
176 return 0;
177}

Callers 1

compile_allFunction · 0.85

Calls 15

GetCookSystemFunction · 0.85
InitializeResourceSystemFunction · 0.85
IsAssetFunction · 0.85
parallel_forFunction · 0.85
GetResourceSystemFunction · 0.85
DestroyResourceSystemFunction · 0.85
GetAssetPathMethod · 0.80
ImportAssetMethod · 0.80
GetOutputPathMethod · 0.80
ParallelForEachAssetMethod · 0.80
EnsureCookedMethod · 0.80
WaitForAllMethod · 0.80

Tested by

no test coverage detected