diff --git a/CHANGES.md b/CHANGES.md index 33035d2fe..336139f3d 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -10,6 +10,7 @@ - Added a constructor overload for `Cesium3DTilesSelection::ITwinCesiumCuratedContentLoaderFactory` to override the iTwin Cesium Curated Content base URL. This makes it possible to connect to alternate servers (e.g., staging, QA, mock servers). - Added `ViewUpdateResult::tileScreenSpaceErrorThisFrame`, which stores the screen space errors computed for tiles in `tilesToRenderThisFrame`. +- Added `CesiumGltf::ExtensionExtPrimitiveVoxels::MODE`, representing the primitive mode constant used by the extension. ##### Fixes :wrench: diff --git a/CesiumGltf/generated/include/CesiumGltf/ExtensionExtPrimitiveVoxels.h b/CesiumGltf/generated/include/CesiumGltf/ExtensionExtPrimitiveVoxelsSpec.h similarity index 88% rename from CesiumGltf/generated/include/CesiumGltf/ExtensionExtPrimitiveVoxels.h rename to CesiumGltf/generated/include/CesiumGltf/ExtensionExtPrimitiveVoxelsSpec.h index f7c97a0c2..1e020243b 100644 --- a/CesiumGltf/generated/include/CesiumGltf/ExtensionExtPrimitiveVoxels.h +++ b/CesiumGltf/generated/include/CesiumGltf/ExtensionExtPrimitiveVoxelsSpec.h @@ -17,7 +17,7 @@ namespace CesiumGltf { * @brief `EXT_primitive_voxels` extension for a primitive in a glTF model to * indicate voxel-based volumetric data */ -struct CESIUMGLTF_API ExtensionExtPrimitiveVoxels final +struct CESIUMGLTF_API ExtensionExtPrimitiveVoxelsSpec : public CesiumUtility::ExtensibleObject { /** * @brief The original name of this type. @@ -60,7 +60,7 @@ struct CESIUMGLTF_API ExtensionExtPrimitiveVoxels final */ int64_t getSizeBytes() const { int64_t accum = 0; - accum += int64_t(sizeof(ExtensionExtPrimitiveVoxels)); + accum += int64_t(sizeof(ExtensionExtPrimitiveVoxelsSpec)); accum += CesiumUtility::ExtensibleObject::getSizeBytes() - int64_t(sizeof(CesiumUtility::ExtensibleObject)); accum += int64_t(sizeof(int64_t) * this->dimensions.capacity()); @@ -77,5 +77,12 @@ struct CESIUMGLTF_API ExtensionExtPrimitiveVoxels final } return accum; } + +protected: + /** + * @brief This class is not meant to be instantiated directly. Use {@link ExtensionExtPrimitiveVoxels} instead. + */ + ExtensionExtPrimitiveVoxelsSpec() = default; + friend struct ExtensionExtPrimitiveVoxels; }; } // namespace CesiumGltf diff --git a/CesiumGltf/include/CesiumGltf/ExtensionExtPrimitiveVoxels.h b/CesiumGltf/include/CesiumGltf/ExtensionExtPrimitiveVoxels.h new file mode 100644 index 000000000..7aa7aaf86 --- /dev/null +++ b/CesiumGltf/include/CesiumGltf/ExtensionExtPrimitiveVoxels.h @@ -0,0 +1,19 @@ +#pragma once + +#include + +namespace CesiumGltf { + +/** @copydoc ExtensionExtPrimitiveVoxelsSpec */ +struct CESIUMGLTF_API ExtensionExtPrimitiveVoxels final + : public ExtensionExtPrimitiveVoxelsSpec { + /** + * @brief The constant used to indicate a voxel primitive in \ref + * CesiumGltf::MeshPrimitive::mode. + */ + static constexpr int32_t MODE = 2147483647; + + ExtensionExtPrimitiveVoxels() = default; +}; + +} // namespace CesiumGltf diff --git a/tools/generate-classes/glTF.json b/tools/generate-classes/glTF.json index 4aab30d7f..bf2bd558b 100644 --- a/tools/generate-classes/glTF.json +++ b/tools/generate-classes/glTF.json @@ -162,7 +162,8 @@ "overrideName": "ExtensionExtImplicitCylinderRegion" }, "EXT_primitive_voxels glTF Mesh Primitive extension": { - "overrideName": "ExtensionExtPrimitiveVoxels" + "overrideName": "ExtensionExtPrimitiveVoxels", + "toBeInherited": true }, "KHR_gaussian_splatting glTF Mesh Primitive Extension": { "overrideName": "ExtensionKhrGaussianSplatting",