|
46 | 46 | #include <resource_retriever/retriever.h> |
47 | 47 | #endif |
48 | 48 |
|
| 49 | +#if __has_include(<resource_retriever/resource.hpp>) |
| 50 | +#define NEW_RESOURCE_RETRIEVER |
| 51 | +#endif |
| 52 | + |
49 | 53 | #include <assimp/scene.h> |
50 | 54 | #include <assimp/Importer.hpp> |
51 | 55 | #include <assimp/postprocess.h> |
@@ -267,24 +271,40 @@ Mesh* createMeshFromBinary(const char* buffer, std::size_t size, const Eigen::Ve |
267 | 271 | Mesh* createMeshFromResource(const std::string& resource, const Eigen::Vector3d& scale) |
268 | 272 | { |
269 | 273 | resource_retriever::Retriever retriever; |
| 274 | +#ifdef NEW_RESOURCE_RETRIEVER |
| 275 | + resource_retriever::ResourceSharedPtr res; |
| 276 | +#else |
270 | 277 | resource_retriever::MemoryResource res; |
| 278 | +#endif |
271 | 279 | try |
272 | 280 | { |
| 281 | +#ifdef NEW_RESOURCE_RETRIEVER |
| 282 | + res = retriever.get_shared(resource); |
| 283 | +#else |
273 | 284 | res = retriever.get(resource); |
| 285 | +#endif |
274 | 286 | } |
275 | 287 | catch (resource_retriever::Exception& e) |
276 | 288 | { |
277 | 289 | CONSOLE_BRIDGE_logError("%s", e.what()); |
278 | 290 | return nullptr; |
279 | 291 | } |
280 | 292 |
|
| 293 | +#ifdef NEW_RESOURCE_RETRIEVER |
| 294 | + if (res->data.empty()) |
| 295 | +#else |
281 | 296 | if (res.size == 0) |
| 297 | +#endif |
282 | 298 | { |
283 | 299 | CONSOLE_BRIDGE_logWarn("Retrieved empty mesh for resource '%s'", resource.c_str()); |
284 | 300 | return nullptr; |
285 | 301 | } |
286 | 302 |
|
| 303 | +#ifdef NEW_RESOURCE_RETRIEVER |
| 304 | + Mesh* m = createMeshFromBinary(reinterpret_cast<const char*>(res->data.data()), res->data.size(), scale, resource); |
| 305 | +#else |
287 | 306 | Mesh* m = createMeshFromBinary(reinterpret_cast<const char*>(res.data.get()), res.size, scale, resource); |
| 307 | +#endif |
288 | 308 | if (!m) |
289 | 309 | { |
290 | 310 | CONSOLE_BRIDGE_logWarn("Assimp reports no scene in %s.", resource.c_str()); |
|
0 commit comments