static*/
| 152 | } |
| 153 | |
| 154 | /*static*/ CesiumAsync::Future<std::optional<SubtreeAvailability>> |
| 155 | SubtreeAvailability::loadSubtree( |
| 156 | ImplicitTileSubdivisionScheme subdivisionScheme, |
| 157 | uint32_t levelsInSubtree, |
| 158 | const CesiumAsync::AsyncSystem& asyncSystem, |
| 159 | const std::shared_ptr<CesiumAsync::IAssetAccessor>& pAssetAccessor, |
| 160 | const std::shared_ptr<spdlog::logger>& pLogger, |
| 161 | const std::string& subtreeUrl, |
| 162 | const std::vector<CesiumAsync::IAssetAccessor::THeader>& requestHeaders) { |
| 163 | auto pReader = std::make_shared<SubtreeFileReader>(); |
| 164 | return pReader->load(asyncSystem, pAssetAccessor, subtreeUrl, requestHeaders) |
| 165 | .thenInMainThread( |
| 166 | [pLogger, subtreeUrl, subdivisionScheme, levelsInSubtree, pReader]( |
| 167 | ReadJsonResult<Subtree>&& subtree) |
| 168 | -> std::optional<SubtreeAvailability> { |
| 169 | if (!subtree.errors.empty()) { |
| 170 | SPDLOG_LOGGER_ERROR( |
| 171 | pLogger, |
| 172 | "Errors while loading subtree from {}:\n- {}", |
| 173 | subtreeUrl, |
| 174 | CesiumUtility::joinToString(subtree.errors, "\n- ")); |
| 175 | } |
| 176 | if (!subtree.warnings.empty()) { |
| 177 | SPDLOG_LOGGER_WARN( |
| 178 | pLogger, |
| 179 | "Warnings while loading subtree from {}:\n- {}", |
| 180 | subtreeUrl, |
| 181 | CesiumUtility::joinToString(subtree.warnings, "\n- ")); |
| 182 | } |
| 183 | |
| 184 | if (!subtree.value) { |
| 185 | return std::nullopt; |
| 186 | } |
| 187 | |
| 188 | return SubtreeAvailability::fromSubtree( |
| 189 | subdivisionScheme, |
| 190 | levelsInSubtree, |
| 191 | std::move(*subtree.value)); |
| 192 | }); |
| 193 | } |
| 194 | |
| 195 | SubtreeAvailability::SubtreeAvailability( |
| 196 | ImplicitTileSubdivisionScheme subdivisionScheme, |
nothing calls this directly
no test coverage detected