3#include <Cesium3DTiles/Subtree.h>
4#include <CesiumAsync/Future.h>
5#include <CesiumAsync/IAssetAccessor.h>
53 uint32_t levelsInSubtree,
69 uint32_t levelsInSubtree,
70 bool setTilesAvailable)
noexcept;
92 uint32_t levelsInSubtree,
94 const std::shared_ptr<CesiumAsync::IAssetAccessor>& pAssetAccessor,
95 const std::shared_ptr<spdlog::logger>& pLogger,
96 const std::string& subtreeUrl,
97 const std::vector<CesiumAsync::IAssetAccessor::THeader>& requestHeaders);
127 std::variant<SubtreeConstantAvailability, SubtreeBufferViewAvailability>;
146 uint32_t levelsInSubtree,
149 std::vector<AvailabilityView>&& contentAvailability,
184 uint32_t relativeTileLevel,
185 uint64_t relativeTileMortonId)
const noexcept;
197 bool isAvailable)
noexcept;
209 bool isAvailable)
noexcept;
222 uint32_t relativeTileLevel,
223 uint64_t relativeTileMortonId,
224 bool isAvailable)
noexcept;
237 uint64_t contentId)
const noexcept;
250 uint64_t contentId)
const noexcept;
263 uint32_t relativeTileLevel,
264 uint64_t relativeTileMortonId,
265 uint64_t contentId)
const noexcept;
280 bool isAvailable)
noexcept;
295 bool isAvailable)
noexcept;
310 uint32_t relativeTileLevel,
311 uint64_t relativeTileMortonId,
313 bool isAvailable)
noexcept;
373 bool isAvailable)
noexcept;
390 bool isAvailable)
noexcept;
405 uint64_t relativeSubtreeMortonId,
406 bool isAvailable)
noexcept;
412 return this->_subtree;
417 uint32_t relativeTileLevel,
418 uint64_t relativeTileMortonId,
421 uint32_t relativeTileLevel,
422 uint64_t relativeTileMortonId,
425 bool isAvailable)
noexcept;
427 bool isAvailableUsingBufferView(
428 uint64_t numOfTilesFromRootToParentLevel,
429 uint64_t relativeTileMortonId,
431 void setAvailableUsingBufferView(
432 uint64_t numOfTilesFromRootToParentLevel,
433 uint64_t relativeTileMortonId,
435 bool isAvailable)
noexcept;
437 void updateAvailabilityViews();
439 void convertConstantAvailabilityToBitstream(
441 uint64_t numberOfTiles,
446 uint32_t _levelsInSubtree;
448 uint32_t _childCount;
451 std::vector<AvailabilityView> _contentAvailability;
void setSubtreeAvailable(const CesiumGeometry::OctreeTileID &thisSubtreeID, const CesiumGeometry::OctreeTileID &setSubtreeID, bool isAvailable) noexcept
Sets the availability state of the child octree rooted at the given tile.
static CesiumAsync::Future< std::optional< SubtreeAvailability > > loadSubtree(ImplicitTileSubdivisionScheme subdivisionScheme, uint32_t levelsInSubtree, const CesiumAsync::AsyncSystem &asyncSystem, const std::shared_ptr< CesiumAsync::IAssetAccessor > &pAssetAccessor, const std::shared_ptr< spdlog::logger > &pLogger, const std::string &subtreeUrl, const std::vector< CesiumAsync::IAssetAccessor::THeader > &requestHeaders)
Asynchronously loads a subtree from a URL. The resource downloaded from the URL may be either a JSON ...
SubtreeAvailability(ImplicitTileSubdivisionScheme subdivisionScheme, uint32_t levelsInSubtree, AvailabilityView tileAvailability, AvailabilityView subtreeAvailability, std::vector< AvailabilityView > &&contentAvailability, Cesium3DTiles::Subtree &&subtree)
Constructs a new instance.
bool isTileAvailable(uint32_t relativeTileLevel, uint64_t relativeTileMortonId) const noexcept
Determines if a given tile in the subtree is available.
std::variant< SubtreeConstantAvailability, SubtreeBufferViewAvailability > AvailabilityView
A mechanism for accessing availability information. It may be a constant value, or it may be read fro...
bool isContentAvailable(const CesiumGeometry::OctreeTileID &subtreeId, const CesiumGeometry::OctreeTileID &tileId, uint64_t contentId) const noexcept
Determines if content for a given tile in the octree is available.
void setTileAvailable(const CesiumGeometry::OctreeTileID &subtreeId, const CesiumGeometry::OctreeTileID &tileId, bool isAvailable) noexcept
Sets the availability state of a given tile in the octree.
bool isSubtreeAvailable(uint64_t relativeSubtreeMortonId) const noexcept
Determines if the subtree rooted at the given tile is available.
bool isTileAvailable(const CesiumGeometry::OctreeTileID &subtreeId, const CesiumGeometry::OctreeTileID &tileId) const noexcept
Determines if a given tile in the octree is available.
void setContentAvailable(const CesiumGeometry::OctreeTileID &subtreeId, const CesiumGeometry::OctreeTileID &tileId, uint64_t contentId, bool isAvailable) noexcept
Sets the availability state of the content for a given tile in the octree.
bool isContentAvailable(const CesiumGeometry::QuadtreeTileID &subtreeId, const CesiumGeometry::QuadtreeTileID &tileId, uint64_t contentId) const noexcept
Determines if content for a given tile in the quadtree is available.
static std::optional< SubtreeAvailability > fromSubtree(ImplicitTileSubdivisionScheme subdivisionScheme, uint32_t levelsInSubtree, Cesium3DTiles::Subtree &&subtree) noexcept
Creates an instance from a Subtree.
bool isContentAvailable(uint32_t relativeTileLevel, uint64_t relativeTileMortonId, uint64_t contentId) const noexcept
Determines if content for a given tile in the subtree is available.
void setContentAvailable(uint32_t relativeTileLevel, uint64_t relativeTileMortonId, uint64_t contentId, bool isAvailable) noexcept
Sets the availability state of the content for a given tile in the subtree.
bool isTileAvailable(const CesiumGeometry::QuadtreeTileID &subtreeId, const CesiumGeometry::QuadtreeTileID &tileId) const noexcept
Determines if a given tile in the quadtree is available.
void setTileAvailable(const CesiumGeometry::QuadtreeTileID &subtreeId, const CesiumGeometry::QuadtreeTileID &tileId, bool isAvailable) noexcept
Sets the availability state of a given tile in the quadtree.
void setContentAvailable(const CesiumGeometry::QuadtreeTileID &subtreeId, const CesiumGeometry::QuadtreeTileID &tileId, uint64_t contentId, bool isAvailable) noexcept
Sets the availability state of the content for a given tile in the quadtree.
void setSubtreeAvailable(const CesiumGeometry::QuadtreeTileID &thisSubtreeID, const CesiumGeometry::QuadtreeTileID &setSubtreeID, bool isAvailable) noexcept
Sets the availability state of the child quadtree rooted at the given tile.
static std::optional< SubtreeAvailability > createEmpty(ImplicitTileSubdivisionScheme subdivisionScheme, uint32_t levelsInSubtree, bool setTilesAvailable) noexcept
Creates an empty instance with the specified tile availability. All content and subtrees are initiall...
bool isSubtreeAvailable(const CesiumGeometry::QuadtreeTileID &thisSubtreeID, const CesiumGeometry::QuadtreeTileID &checkSubtreeID) const noexcept
Determines if the subtree rooted at the given tile is available.
const Cesium3DTiles::Subtree & getSubtree() const noexcept
Gets the subtree that this instance queries and modifies.
bool isSubtreeAvailable(const CesiumGeometry::OctreeTileID &thisSubtreeID, const CesiumGeometry::OctreeTileID &checkSubtreeID) const noexcept
Determines if the subtree rooted at the given tile is available.
void setSubtreeAvailable(uint64_t relativeSubtreeMortonId, bool isAvailable) noexcept
Sets the availability state of the child subtree rooted at the given tile.
void setTileAvailable(uint32_t relativeTileLevel, uint64_t relativeTileMortonId, bool isAvailable) noexcept
Sets the availability state of a given tile in the subtree.
A system for managing asynchronous requests and tasks.
A value that will be available in the future, as produced by AsyncSystem.
Classes that support loading and converting 3D Tiles tile content.
ImplicitTileSubdivisionScheme
Indicates how an implicit tile is subdivided.
@ Octree
Implicit tiles are divided into eight children, forming an octree.
@ Quadtree
Implicit tiles are divided into four children, forming a quadree.
Classes for using 3D Tiles.
Basic geometry classes for Cesium.
An AvailabilityView that accesses availability information from a bitstream.
std::span< std::byte > view
The buffer from which to read and write availability information.
An AvailibilityView that indicates that either all tiles are available or all tiles are unavailable.
bool constant
True if all tiles are availabile, false if all tiles are unavailable.
An object describing the availability of a set of elements.
This object allows a tile to be implicitly subdivided. Tile and content availability and metadata is ...
An object describing the availability of tiles and content in a subtree, as well as availability of c...
A structure serving as a unique identifier for a node in an octree.
Uniquely identifies a node in a quadtree.