3#include <Cesium3DTilesSelection/Library.h>
4#include <Cesium3DTilesSelection/LoadedTileEnumerator.h>
5#include <Cesium3DTilesSelection/RasterOverlayCollection.h>
6#include <Cesium3DTilesSelection/SampleHeightResult.h>
7#include <Cesium3DTilesSelection/Tile.h>
8#include <Cesium3DTilesSelection/TilesetContentLoader.h>
9#include <Cesium3DTilesSelection/TilesetContentLoaderFactory.h>
10#include <Cesium3DTilesSelection/TilesetExternals.h>
11#include <Cesium3DTilesSelection/TilesetLoadFailureDetails.h>
12#include <Cesium3DTilesSelection/TilesetOptions.h>
13#include <Cesium3DTilesSelection/TilesetViewGroup.h>
14#include <Cesium3DTilesSelection/ViewState.h>
15#include <Cesium3DTilesSelection/ViewUpdateResult.h>
16#include <CesiumAsync/AsyncSystem.h>
17#include <CesiumUtility/IntrusivePointer.h>
19#include <rapidjson/fwd.h>
28class TilesetContentManager;
30class TilesetHeightQuery;
31struct TilesetHeightRequest;
42class CESIUM3DTILESSELECTION_API
Tileset final {
54 std::unique_ptr<TilesetContentLoader>&& pCustomLoader,
55 std::unique_ptr<Tile>&& pRootTile,
66 const std::string& url,
83 const std::string& ionAccessToken,
85 const std::string& ionAssetEndpointUrl =
"https://api.cesium.com/");
164 return this->_externals;
172 return this->_asyncSystem;
177 return this->_asyncSystem;
192 return this->_options.ellipsoid;
197 return this->_options.ellipsoid;
233 [[deprecated(
"Instead of `tileset.updateViewOffline(...)`, call "
234 "`tileset.updateViewGroupOffline(tileset.getDefaultViewGroup(), "
253 [[deprecated(
"Instead of `tileset.updateView(...)`, call "
254 "`tileset.updateViewGroup(tileset.getDefaultViewGroup(), ...)` "
296 const
std::function<
void(const
Tile& tile)>& callback) const;
405 float deltaTime = 0.0f);
479 struct TraversalDetails {
487 bool allAreRenderable =
true;
498 bool anyWereRenderedLastFrame =
false;
518 uint32_t notYetRenderableCount = 0;
521 TraversalDetails _renderLeaf(
527 TraversalDetails _renderInnerTile(
532 bool _kickDescendantsAndRenderTile(
536 TraversalDetails& traversalDetails,
537 size_t firstRenderedDescendantIndex,
544 TraversalDetails _visitTile(
548 bool ancestorMeetsSse,
556 bool shouldVisit =
true;
564 const TilesetFrameState& frameState,
565 bool cullWithChildrenBounds,
566 CullResult& cullResult);
568 const TilesetFrameState& frameState,
569 const std::vector<double>& distances,
570 CullResult& cullResult);
572 const std::vector<ViewState>& frustums,
574 const std::vector<double>& distances)
const noexcept;
575 bool _meetsSseThreshold(
double sse,
bool culled)
const noexcept;
577 TraversalDetails _visitTileIfNeeded(
578 const TilesetFrameState& frameState,
580 bool ancestorMeetsSse,
582 ViewUpdateResult& result);
583 TraversalDetails _visitVisibleChildrenNearToFar(
584 const TilesetFrameState& frameState,
586 bool ancestorMeetsSse,
588 ViewUpdateResult& result);
606 bool _loadAndRenderAdditiveRefinedTile(
607 const TilesetFrameState& frameState,
609 ViewUpdateResult& result,
614 void _unloadCachedTiles(
double timeBudget)
noexcept;
616 void _updateLodTransitions(
617 const TilesetFrameState& frameState,
619 ViewUpdateResult& result)
const noexcept;
621 TilesetExternals _externals;
624 TilesetOptions _options;
628 std::vector<double> _distances;
632 std::vector<const TileOcclusionRendererProxy*> _childOcclusionProxies;
635 _pTilesetContentManager;
637 std::list<TilesetHeightRequest> _heightRequests;
639 TilesetViewGroup _defaultViewGroup;
641 void addTileToLoadQueue(
642 const TilesetFrameState& frameState,
644 TileLoadPriorityGroup priorityGroup,
647 static TraversalDetails createTraversalDetailsForSingleTile(
648 const TilesetFrameState& frameState,
A "virtual collection" that allows enumeration through the loaded tiles in a subtree rooted at a give...
A collection of CesiumRasterOverlays::RasterOverlay instances that are associated with a Tileset.
The base class for something that requests loading of specific tiles from a 3D Tiles Tileset.
A factory to create a tileset loader.
External interfaces used by a Tileset.
Captures information about the current frame during a call to Tileset::updateViewGroup.
Contains assets that are potentially shared across multiple Tilesets.
Represents a group of views that collectively select tiles from a particular Tileset.
Tileset(const TilesetExternals &externals, TilesetContentLoaderFactory &&loaderFactory, const TilesetOptions &options=TilesetOptions())
Constructs a new instance with the given TilesetContentLoaderFactory.
void setShowCreditsOnScreen(bool showCreditsOnScreen) noexcept
Sets whether or not the tileset's credits should be shown on screen.
CesiumGeospatial::Ellipsoid & getEllipsoid() noexcept
Gets the CesiumGeospatial::Ellipsoid used by this tileset.
LoadedConstTileEnumerator loadedTiles() const
Gets an object that can be used to enumerate the loaded tiles of this tileset.
Tileset(const TilesetExternals &externals, int64_t ionAssetID, const std::string &ionAccessToken, const TilesetOptions &options=TilesetOptions(), const std::string &ionAssetEndpointUrl="https://api.cesium.com/")
Constructs a new instance with the given asset ID on Cesium ion.
Tileset(const TilesetExternals &externals, const std::string &url, const TilesetOptions &options=TilesetOptions())
Constructs a new instance with a given tileset.json URL.
CesiumAsync::AsyncSystem & getAsyncSystem() noexcept
Returns the CesiumAsync::AsyncSystem that is used for dispatching asynchronous tasks.
CesiumAsync::Future< SampleHeightResult > sampleHeightMostDetailed(const std::vector< CesiumGeospatial::Cartographic > &positions)
Initiates an asynchronous query for the height of this tileset at a list of cartographic positions (l...
const TilesetOptions & getOptions() const noexcept
Gets the TilesetOptions of this tileset.
const TilesetExternals & getExternals() const noexcept
Gets the TilesetExternals that summarize the external interfaces used by this tileset.
const CesiumUtility::CreditSource & getCreditSource() const noexcept
Gets the CesiumUtility::CreditSource that identifies this tileset's credits with the CesiumUtility::C...
const CesiumAsync::AsyncSystem & getAsyncSystem() const noexcept
Returns the CesiumAsync::AsyncSystem that is used for dispatching asynchronous tasks.
void loadTiles()
Loads the tiles that are currently deemed the most important, across all height queries and TilesetVi...
int32_t getNumberOfTilesLoaded() const
Gets the total number of tiles that are currently loaded.
CesiumAsync::SharedFuture< void > & getAsyncDestructionCompleteEvent()
A future that resolves when this Tileset has been destroyed (i.e. its destructor has been called) and...
CesiumAsync::SharedFuture< void > & getRootTileAvailableEvent()
A future that resolves when the details of the root tile of this tileset are available....
void registerLoadRequester(TileLoadRequester &requester)
Registers a tile load requester with this Tileset. Registered tile load requesters get to influence w...
TilesetViewGroup & getDefaultViewGroup()
Gets the default view group that is used when calling updateView.
float computeLoadProgress() noexcept
Gets the percentage of tiles that had been loaded for the default view group as of the last time it w...
const ViewUpdateResult & updateViewOffline(const std::vector< ViewState > &frustums)
Updates this view but waits for all tiles that meet sse to finish loading and ready to be rendered be...
int64_t getTotalDataBytes() const noexcept
Gets the total number of bytes of tile and raster overlay data that are currently loaded.
TilesetOptions & getOptions() noexcept
Gets the TilesetOptions of this tileset.
std::optional< CesiumUtility::Credit > getUserCredit() const noexcept
Gets the CesiumUtility::Credit created from TilesetOptions::credit, if any.
void forEachLoadedTile(const std::function< void(const Tile &tile)> &callback) const
Invokes a function for each tile that is currently loaded.
const TilesetMetadata * getMetadata(const Tile *pTile=nullptr) const
Gets the TilesetMetadata associated with the main or external tileset.json that contains a given tile...
const ViewUpdateResult & updateView(const std::vector< ViewState > &frustums, float deltaTime=0.0f)
Updates this view, returning the set of tiles to render in this view.
const ViewUpdateResult & updateViewGroup(TilesetViewGroup &viewGroup, const std::vector< ViewState > &frustums, float deltaTime=0.0f)
Updates a view group, returning the set of tiles to render in this view.
const CesiumGeospatial::Ellipsoid & getEllipsoid() const
Gets the CesiumGeospatial::Ellipsoid used by this tileset.
~Tileset() noexcept
Destroys this tileset.
Tileset(const TilesetExternals &externals, std::unique_ptr< TilesetContentLoader > &&pCustomLoader, std::unique_ptr< Tile > &&pRootTile, const TilesetOptions &options=TilesetOptions())
Constructs a new instance with a given custom tileset loader.
bool waitForAllLoadsToComplete(double maximumWaitTimeInMilliseconds)
Waits until no tile loads are in progress. This function must be called from the main thread,...
const Tile * getRootTile() const noexcept
Gets the root tile of this tileset.
const std::vector< CesiumUtility::Credit > & getTilesetCredits() const noexcept
Get tileset credits.
RasterOverlayCollection & getOverlays() noexcept
Returns the RasterOverlayCollection of this tileset.
CesiumAsync::Future< const TilesetMetadata * > loadMetadata()
Asynchronously loads the metadata associated with the main tileset.json.
const ViewUpdateResult & updateViewGroupOffline(TilesetViewGroup &viewGroup, const std::vector< ViewState > &frustums)
Updates a view group, returning the set of tiles to render in this view. Unlike updateViewGroup,...
TilesetExternals & getExternals() noexcept
Gets the TilesetExternals that summarize the external interfaces used by this tileset.
TilesetSharedAssetSystem & getSharedAssetSystem() noexcept
Returns the TilesetSharedAssetSystem of this tileset.
The state of the view that is used during the traversal of a tileset.
Reports the results of Tileset::updateViewGroup.
A system for managing asynchronous requests and tasks.
A quadratic surface defined in Cartesian coordinates.
A smart pointer that calls addReference and releaseReference on the controlled object.
Classes that implement the 3D Tiles standard.
TileOcclusionState
The occlusion state of a tile as reported by the renderer proxy.
Classes that support asynchronous operations.
Classes for geospatial computations in Cesium.
Utility classes for Cesium.
The result of sampling heights with Tileset::sampleHeightMostDetailed.
Additional options for configuring a Tileset.
A checkpoint within this view group's load queue.