cesium-native 0.64.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
70class CESIUM3DTILESSELECTION_API RasterOverlayCollection final {
71public:
83 const LoadedTileEnumerator& loadedTiles,
84 const TilesetExternals& externals,
85 const CesiumGeospatial::Ellipsoid& ellipsoid
86 CESIUM_DEFAULT_ELLIPSOID) noexcept;
87
99
106
113
120 operator=(const RasterOverlayCollection& rhs) = delete;
121
128 operator=(RasterOverlayCollection&& rhs) noexcept = default;
129
134
138 const std::vector<CesiumUtility::IntrusivePointer<
139 CesiumRasterOverlays::ActivatedRasterOverlay>>&
140 getActivatedOverlays() const noexcept;
141
148 void add(const CesiumUtility::IntrusivePointer<
149 const CesiumRasterOverlays::RasterOverlay>& pOverlay) noexcept;
150
155 void remove(const CesiumUtility::IntrusivePointer<
156 const CesiumRasterOverlays::RasterOverlay>& pOverlay) noexcept;
157
162 void remove(const CesiumUtility::IntrusivePointer<
163 CesiumRasterOverlays::RasterOverlay>& pOverlay) noexcept;
164
169 void
170 remove(const CesiumUtility::IntrusivePointer<
171 CesiumRasterOverlays::ActivatedRasterOverlay>& pActivated) noexcept;
172
187 std::vector<CesiumGeospatial::Projection>
188 addTileOverlays(Tile& tile, const TilesetOptions& tilesetOptions) noexcept;
189
205 updateTileOverlays(Tile& tile, const TilesetOptions& tilesetOptions) noexcept;
206
207private:
208 struct GetOverlayFunctor;
209
210public:
215 using const_iterator = CesiumUtility::TransformIterator<
216 GetOverlayFunctor,
217 std::vector<CesiumUtility::IntrusivePointer<
218 CesiumRasterOverlays::ActivatedRasterOverlay>>::const_iterator>;
219
223 const_iterator begin() const noexcept;
224
228 const_iterator end() const noexcept;
229
233 size_t size() const noexcept;
234
235private:
236 struct GetOverlayFunctor {
238 operator()(const CesiumUtility::IntrusivePointer<
240 return &p->getOverlay();
241 }
242 };
243
244 LoadedTileEnumerator _loadedTiles;
245 TilesetExternals _externals;
249 _activatedOverlays;
250
251 CESIUM_TRACE_DECLARE_TRACK_SET(_loadingSlots, "Raster Overlay Loading Slot")
252};
253
254} // 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:123
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.