// This file was generated by generate-classes. // DO NOT EDIT THIS FILE! #pragma once #include #include #include namespace Cesium3DTiles { /** * @brief A bounding volume that encloses a tile or its content. At least one * bounding volume property is required. Bounding volumes include `box`, * `region`, or `sphere`. */ struct CESIUM3DTILES_API BoundingVolume final : public CesiumUtility::ExtensibleObject { /** * @brief The original name of this type. */ static constexpr const char* TypeName = "BoundingVolume"; /** * @brief An array of 12 numbers that define an oriented bounding box. The * first three elements define the x, y, and z values for the center of the * box. The next three elements (with indices 3, 4, and 5) define the x axis * direction and half-length. The next three elements (indices 6, 7, and 8) * define the y axis direction and half-length. The last three elements * (indices 9, 10, and 11) define the z axis direction and half-length. */ std::vector box; /** * @brief An array of six numbers that define a bounding geographic region in * EPSG:4979 coordinates with the order [west, south, east, north, minimum * height, maximum height]. Longitudes and latitudes are in radians. The range * for latitudes is [-PI/2,PI/2]. The range for longitudes is [-PI,PI]. The * value that is given as the 'south' of the region shall not be larger than * the value for the 'north' of the region. The heights are in meters above * (or below) the WGS84 ellipsoid. The 'minimum height' shall not be larger * than the 'maximum height'. */ std::vector region; /** * @brief An array of four numbers that define a bounding sphere. The first * three elements define the x, y, and z values for the center of the sphere. * The last element (with index 3) defines the radius in meters. The radius * shall not be negative. */ std::vector sphere; /** * @brief Calculates the size in bytes of this object, including the contents * of all collections, pointers, and strings. This will NOT include the size * of any extensions attached to the object. Calling this method may be slow * as it requires traversing the object's entire structure. */ int64_t getSizeBytes() const { int64_t accum = 0; accum += int64_t(sizeof(BoundingVolume)); accum += CesiumUtility::ExtensibleObject::getSizeBytes() - int64_t(sizeof(CesiumUtility::ExtensibleObject)); accum += int64_t(sizeof(double) * this->box.capacity()); accum += int64_t(sizeof(double) * this->region.capacity()); accum += int64_t(sizeof(double) * this->sphere.capacity()); return accum; } }; } // namespace Cesium3DTiles