cesium-native 0.52.0
Loading...
Searching...
No Matches
RasterOverlayCollection.h
1#pragma once
2
3#include <Cesium3DTilesSelection/Library.h>
4#include <Cesium3DTilesSelection/LoadedTileEnumerator.h>
5#include <Cesium3DTilesSelection/TilesetExternals.h>
6#include <CesiumGeospatial/Ellipsoid.h>
7#include <CesiumRasterOverlays/ActivatedRasterOverlay.h>
8#include <CesiumRasterOverlays/RasterOverlay.h>
9#include <CesiumRasterOverlays/RasterOverlayTileProvider.h>
10#include <CesiumUtility/IntrusivePointer.h>
11#include <CesiumUtility/ReferenceCounted.h>
12#include <CesiumUtility/Tracing.h>
13#include <CesiumUtility/TransformIterator.h>
14
15#include <memory>
16#include <span>
17#include <vector>
18
19namespace CesiumRasterOverlays {
21}
22
23namespace Cesium3DTilesSelection {
24
26struct TilesetOptions;
27
42 std::optional<size_t> firstIndexWithMoreDetailAvailable;
43
48 std::optional<size_t> firstIndexWithUnknownAvailability;
49
55 std::optional<size_t> firstIndexWithMissingProjection;
56};
57
69class CESIUM3DTILESSELECTION_API RasterOverlayCollection final {
70public:
82 const LoadedTileEnumerator& loadedTiles,
83 const TilesetExternals& externals,
84 const CesiumGeospatial::Ellipsoid& ellipsoid
85 CESIUM_DEFAULT_ELLIPSOID) noexcept;
86
98
105
112
119 operator=(const RasterOverlayCollection& rhs) = delete;
120
127 operator=(RasterOverlayCollection&& rhs) noexcept = default;
128
133
137 const std::vector<CesiumUtility::IntrusivePointer<
138 CesiumRasterOverlays::ActivatedRasterOverlay>>&
139 getActivatedOverlays() const noexcept;
140
146 void add(const CesiumUtility::IntrusivePointer<
147 const CesiumRasterOverlays::RasterOverlay>& pOverlay) noexcept;
148
153 void remove(const CesiumUtility::IntrusivePointer<
154 const CesiumRasterOverlays::RasterOverlay>& pOverlay) noexcept;
155
160 void remove(const CesiumUtility::IntrusivePointer<
161 CesiumRasterOverlays::RasterOverlay>& pOverlay) noexcept;
162
167 void
168 remove(const CesiumUtility::IntrusivePointer<
169 CesiumRasterOverlays::ActivatedRasterOverlay>& pActivated) noexcept;
170
185 std::vector<CesiumGeospatial::Projection>
186 addTileOverlays(Tile& tile, const TilesetOptions& tilesetOptions) noexcept;
187
203 updateTileOverlays(Tile& tile, const TilesetOptions& tilesetOptions) noexcept;
204
205private:
206 struct GetOverlayFunctor;
207
208public:
212 using const_iterator = CesiumUtility::TransformIterator<
213 GetOverlayFunctor,
214 std::vector<CesiumUtility::IntrusivePointer<
215 CesiumRasterOverlays::ActivatedRasterOverlay>>::const_iterator>;
216
220 const_iterator begin() const noexcept;
221
225 const_iterator end() const noexcept;
226
230 size_t size() const noexcept;
231
232private:
233 struct GetOverlayFunctor {
235 operator()(const CesiumUtility::IntrusivePointer<
237 return &p->getOverlay();
238 }
239 };
240
241 LoadedTileEnumerator _loadedTiles;
242 TilesetExternals _externals;
246 _activatedOverlays;
247
248 CESIUM_TRACE_DECLARE_TRACK_SET(_loadingSlots, "Raster Overlay Loading Slot")
249};
250
251} // namespace Cesium3DTilesSelection
A "virtual collection" that allows enumeration through the loaded tiles in a subtree rooted at a give...
RasterOverlayCollection & operator=(RasterOverlayCollection &&rhs) noexcept=default
Move assignment.
RasterOverlayCollection(const RasterOverlayCollection &rhs)=delete
Deleted Copy constructor.
void add(const CesiumUtility::IntrusivePointer< const CesiumRasterOverlays::RasterOverlay > &pOverlay) noexcept
Adds the given CesiumRasterOverlays::RasterOverlay to this collection.
size_t size() const noexcept
Gets the number of overlays in the collection.
std::vector< CesiumGeospatial::Projection > addTileOverlays(Tile &tile, const TilesetOptions &tilesetOptions) noexcept
Adds raster overlays to a new Tile.
const_iterator end() const noexcept
Returns an iterator at the end of this collection.
RasterOverlayCollection(const LoadedTileEnumerator &loadedTiles, const TilesetExternals &externals, const CesiumGeospatial::Ellipsoid &ellipsoid=CesiumGeospatial::Ellipsoid::WGS84) noexcept
Creates a new instance.
RasterOverlayCollection & operator=(const RasterOverlayCollection &rhs)=delete
Deleted copy assignment.
const std::vector< CesiumUtility::IntrusivePointer< CesiumRasterOverlays::ActivatedRasterOverlay > > & getActivatedOverlays() const noexcept
Gets the activated raster overlays in this collection.
TileRasterOverlayStatus updateTileOverlays(Tile &tile, const TilesetOptions &tilesetOptions) noexcept
Updates the raster overlays associated with a tile.
CesiumUtility::TransformIterator< GetOverlayFunctor, std::vector< CesiumUtility::IntrusivePointer< CesiumRasterOverlays::ActivatedRasterOverlay > >::const_iterator > const_iterator
A constant iterator for CesiumRasterOverlays::RasterOverlay instances.
void remove(const CesiumUtility::IntrusivePointer< const CesiumRasterOverlays::RasterOverlay > &pOverlay) noexcept
Remove the given CesiumRasterOverlays::RasterOverlay from this collection.
~RasterOverlayCollection() noexcept
Destroys the collection.
void setLoadedTileEnumerator(const LoadedTileEnumerator &loadedTiles)
Provides a new LoadedTileEnumerator to use to update loaded tiles when a raster overlay is added or r...
const_iterator begin() const noexcept
Returns an iterator at the beginning of this collection.
RasterOverlayCollection(RasterOverlayCollection &&rhs) noexcept=default
Move constructor.
A tile in a Tileset.
Definition Tile.h:122
External interfaces used by a Tileset.
A quadratic surface defined in Cartesian coordinates.
Definition Ellipsoid.h:39
A RasterOverlay that has been activated for use. While a RasterOverlayTileProvider can be used direct...
A smart pointer that calls addReference and releaseReference on the controlled object.
Classes that implement the 3D Tiles standard.
Classes for geospatial computations in Cesium.
Classes for raster overlays, which allow draping massive 2D textures over a model.
Utility classes for Cesium.
STL namespace.
Captures the tile overlay status as produced by RasterOverlayCollection::updateTileOverlays.
std::optional< size_t > firstIndexWithMoreDetailAvailable
The index of the first entry in Tile::getMappedRasterTiles, if any, for which more overlay detail is ...
std::optional< size_t > firstIndexWithMissingProjection
The index of the first entry in Tile::getMappedRasterTiles, if any, for which texture coordinates for...
std::optional< size_t > firstIndexWithUnknownAvailability
The index of the first entry in Tile::getMappedRasterTiles, if any, for which the availability of mor...
Additional options for configuring a Tileset.