cesium-native 0.64.0
Loading...
Searching...
No Matches
TileContent.h
1#pragma once
2
3#include <Cesium3DTilesSelection/GltfModifierState.h>
4#include <Cesium3DTilesSelection/Library.h>
5#include <Cesium3DTilesSelection/TilesetMetadata.h>
6#include <CesiumGeospatial/Projection.h>
7#include <CesiumGltf/Model.h>
8#include <CesiumRasterOverlays/RasterOverlayDetails.h>
9#include <CesiumUtility/CreditSystem.h>
10#include <CesiumUtility/ExtensibleObject.h>
11
12#include <memory>
13#include <variant>
14#include <vector>
15
16namespace Cesium3DTilesSelection {
23struct CESIUM3DTILESSELECTION_API TileUnknownContent {};
24
46struct CESIUM3DTILESSELECTION_API TileEmptyContent {};
47
53struct CESIUM3DTILESSELECTION_API TileExternalContent
59};
60
65class CESIUM3DTILESSELECTION_API TileRenderContent {
66public:
73
79 const CesiumGltf::Model& getModel() const noexcept;
80
86 CesiumGltf::Model& getModel() noexcept;
87
93 void setModel(const CesiumGltf::Model& model);
94
100 void setModel(CesiumGltf::Model&& model);
101
109 const CesiumRasterOverlays::RasterOverlayDetails&
110 getRasterOverlayDetails() const noexcept;
111
119 CesiumRasterOverlays::RasterOverlayDetails&
121
131 const CesiumRasterOverlays::RasterOverlayDetails& rasterOverlayDetails);
132
142 CesiumRasterOverlays::RasterOverlayDetails&& rasterOverlayDetails);
143
149 const std::vector<CesiumUtility::Credit>& getCredits() const noexcept;
150
156 std::vector<CesiumUtility::Credit>& getCredits() noexcept;
157
164 void setCredits(std::vector<CesiumUtility::Credit>&& credits);
165
172 void setCredits(const std::vector<CesiumUtility::Credit>& credits);
173
180 void* getRenderResources() const noexcept;
181
189 void setRenderResources(void* pRenderResources) noexcept;
190
201 float getLodTransitionFadePercentage() const noexcept;
202
209 void setLodTransitionFadePercentage(float percentage) noexcept;
210
216
221 void setGltfModifierState(GltfModifierState modifierState) noexcept;
222
227 const std::optional<CesiumGltf::Model>& getModifiedModel() const noexcept;
228
234 void* getModifiedRenderResources() const noexcept;
235
243 CesiumGltf::Model&& modifiedModel,
244 void* pModifiedRenderResources) noexcept;
245
252
263
264private:
265 CesiumGltf::Model _model;
266 void* _pRenderResources;
267
268 GltfModifierState _modifierState;
269 std::optional<CesiumGltf::Model> _modifiedModel;
270 void* _pModifiedRenderResources;
271
272 CesiumRasterOverlays::RasterOverlayDetails _rasterOverlayDetails;
273 std::vector<CesiumUtility::Credit> _credits;
274 float _lodTransitionFadePercentage;
275};
276
281class CESIUM3DTILESSELECTION_API TileContent {
282 using TileContentKindImpl = std::variant<
285 std::unique_ptr<TileExternalContent>,
286 std::unique_ptr<TileRenderContent>>;
287
288public:
295
300
305 TileContent(std::unique_ptr<TileExternalContent>&& content);
306
313
318
323 void setContentKind(std::unique_ptr<TileExternalContent>&& content);
324
328 void setContentKind(std::unique_ptr<TileRenderContent>&& content);
329
333 bool isUnknownContent() const noexcept;
334
338 bool isEmptyContent() const noexcept;
339
344 bool isExternalContent() const noexcept;
345
349 bool isRenderContent() const noexcept;
350
355 const TileRenderContent* getRenderContent() const noexcept;
356
362
368
374
375private:
376 TileContentKindImpl _contentKind;
377};
378} // namespace Cesium3DTilesSelection
TileContent(std::unique_ptr< TileExternalContent > &&content)
Construct an external content for a tile whose content points to an external tileset.
TileContent(TileEmptyContent content)
Construct an empty content for a tile.
TileContent()
Construct an unknown content for a tile. This constructor is useful when the tile content is known af...
const TileExternalContent * getExternalContent() const noexcept
Get the TileExternalContent which stores the details of the external tileset.
void setContentKind(TileEmptyContent content)
Construct an empty content tag for a tile.
const TileRenderContent * getRenderContent() const noexcept
Get the TileRenderContent which stores the glTF model and render resources of the tile.
bool isExternalContent() const noexcept
Query if a tile has an external content which points to an external tileset.
void setContentKind(std::unique_ptr< TileRenderContent > &&content)
Set a glTF model content for a tile.
bool isEmptyContent() const noexcept
Query if a tile has an empty content.
bool isRenderContent() const noexcept
Query if a tile has an glTF model content.
void setContentKind(std::unique_ptr< TileExternalContent > &&content)
Set an external content for a tile whose content points to an external tileset.
bool isUnknownContent() const noexcept
Query if a tile has an unknown content.
void setContentKind(TileUnknownContent content)
Set an unknown content tag for a tile. This constructor is useful when the tile content is known afte...
A content tag that indicates a tile has a glTF model content and render resources for the model.
Definition TileContent.h:65
void replaceWithModifiedModel() noexcept
Overwrites this instance's model and renderer resources with the modified ones produced by GltfModifi...
void setModel(const CesiumGltf::Model &model)
Set the glTF model for this content.
void setCredits(std::vector< CesiumUtility::Credit > &&credits)
Set the list of Credit for the content.
void * getRenderResources() const noexcept
Get the renderer resources created for the glTF model of the content.
GltfModifierState getGltfModifierState() const noexcept
Gets the state of the GltfModifier processing of this tile's content.
void setLodTransitionFadePercentage(float percentage) noexcept
Set the fade percentage of this tile during an LOD transition with. Not to be used by clients.
TileRenderContent(CesiumGltf::Model &&model)
Construct the content with a glTF model.
const std::vector< CesiumUtility::Credit > & getCredits() const noexcept
Get the list of Credit of the content.
void * getModifiedRenderResources() const noexcept
Gets the renderer resources for the modified model produced by the GltfModifier that is not yet avail...
void setRenderResources(void *pRenderResources) noexcept
Set the renderer resources created for the glTF model of the content.
float getLodTransitionFadePercentage() const noexcept
Get the fade percentage that this tile during an LOD transition.
void setModifiedModelAndRenderResources(CesiumGltf::Model &&modifiedModel, void *pModifiedRenderResources) noexcept
Stores the modified model and associated renderer resources produced by the GltfModifier that are not...
void resetModifiedModelAndRenderResources() noexcept
Resets the modified model and renderer resources after they have been determined to be outdated and h...
void setGltfModifierState(GltfModifierState modifierState) noexcept
Sets the state of the GltfModifier processing of this tile's content.
const std::optional< CesiumGltf::Model > & getModifiedModel() const noexcept
Gets the modified model produced by the GltfModifier that is not yet available for rendering.
void setRasterOverlayDetails(const CesiumRasterOverlays::RasterOverlayDetails &rasterOverlayDetails)
Set the CesiumRasterOverlays::RasterOverlayDetails which is the result of generating raster overlay U...
const CesiumRasterOverlays::RasterOverlayDetails & getRasterOverlayDetails() const noexcept
Get the CesiumRasterOverlays::RasterOverlayDetails which is the result of generating raster overlay U...
const CesiumGltf::Model & getModel() const noexcept
Retrieve a glTF model that is owned by this content.
Holds the metadata associated with a Tileset or an external tileset. This holds all of the fields of ...
Classes that implement the 3D Tiles standard.
Classes for working with glTF models.
Classes for raster overlays, which allow draping massive 2D textures over a model.
Utility classes for Cesium.
STL namespace.
A content tag that indicates a tile has no content.
Definition TileContent.h:46
A content tag that indicates a tile content points to an external tileset. When this tile is loaded,...
Definition TileContent.h:54
TilesetMetadata metadata
The metadata associated with this tileset.
Definition TileContent.h:58
A content tag that indicates the TilesetContentLoader does not know if a tile's content will point to...
Definition TileContent.h:23
This class is not meant to be instantiated directly. Use Model instead.
Definition Model.h:14
The base class for objects that have extensions and extras.