| 384 | } |
| 385 | |
| 386 | CesiumGltf::ExtensionKhrGaussianSplattingCompressionSpz2* |
| 387 | getAndMaybeConvertSpzExtension( |
| 388 | CesiumGltfReader::GltfReaderResult& readGltf, |
| 389 | CesiumGltf::MeshPrimitive& primitive, |
| 390 | CesiumGltf::ExtensionKhrGaussianSplatting& splatting) { |
| 391 | |
| 392 | // Check for the real thing. |
| 393 | CesiumGltf::ExtensionKhrGaussianSplattingCompressionSpz2* pSpz = |
| 394 | splatting.getExtension< |
| 395 | CesiumGltf::ExtensionKhrGaussianSplattingCompressionSpz2>(); |
| 396 | if (pSpz) { |
| 397 | return pSpz; |
| 398 | } |
| 399 | |
| 400 | // Check for the old versions. |
| 401 | const CesiumUtility::JsonValue* pKhrSpz = |
| 402 | primitive.getGenericExtension(ALTERNATE_EXT_NAME1); |
| 403 | if (pKhrSpz != nullptr) { |
| 404 | CesiumGltf::ExtensionKhrGaussianSplattingCompressionSpz2* pResult = |
| 405 | addExtensionFromJsonValue( |
| 406 | ALTERNATE_EXT_NAME1, |
| 407 | readGltf, |
| 408 | splatting, |
| 409 | *pKhrSpz); |
| 410 | primitive.extensions.erase(ALTERNATE_EXT_NAME1); |
| 411 | return pResult; |
| 412 | } |
| 413 | |
| 414 | const CesiumUtility::JsonValue* pSpzNoVersion = |
| 415 | splatting.getGenericExtension(ALTERNATE_EXT_NAME2); |
| 416 | if (pSpzNoVersion != nullptr) { |
| 417 | CesiumGltf::ExtensionKhrGaussianSplattingCompressionSpz2* pResult = |
| 418 | addExtensionFromJsonValue( |
| 419 | ALTERNATE_EXT_NAME2, |
| 420 | readGltf, |
| 421 | splatting, |
| 422 | *pSpzNoVersion); |
| 423 | primitive.extensions.erase(ALTERNATE_EXT_NAME2); |
| 424 | return pResult; |
| 425 | } |
| 426 | |
| 427 | return nullptr; |
| 428 | } |
| 429 | } // namespace |
| 430 | |
| 431 | void decodeSpz(CesiumGltfReader::GltfReaderResult& readGltf) { |
no test coverage detected