Files
BXSSP_Andriod/Plugins/CesiumForUnreal/Source/ThirdParty/include/Cesium3DTilesSelection/RasterizedPolygonsTileExcluder.h

55 lines
1.5 KiB
C
Raw Normal View History

2025-10-14 11:14:54 +08:00
#pragma once
#include "ITileExcluder.h"
#include "Library.h"
#include <CesiumUtility/IntrusivePointer.h>
namespace CesiumRasterOverlays {
class RasterizedPolygonsOverlay;
}
namespace Cesium3DTilesSelection {
/**
* @brief When provided to {@link TilesetOptions::excluders}, uses the polygons
* owned by a {@link CesiumRasterOverlays::RasterizedPolygonsOverlay} to exclude tiles that are
* entirely inside any of the polygon from loading. This is useful when the
* polygons will be used for clipping.
*/
class CESIUM3DTILESSELECTION_API RasterizedPolygonsTileExcluder
: public Cesium3DTilesSelection::ITileExcluder {
public:
/**
* @brief Constructs a new instance.
*
* @param pOverlay The overlay definining the polygons.
*/
RasterizedPolygonsTileExcluder(
const CesiumUtility::IntrusivePointer<
const CesiumRasterOverlays::RasterizedPolygonsOverlay>&
pOverlay) noexcept;
/**
* @brief Determines whether a given tile is entirely inside a polygon and
* therefore should be excluded.
*
* @param tile The tile to check.
* @return true if the tile should be excluded because it is entirely inside a
* polygon.
*/
virtual bool shouldExclude(const Tile& tile) const noexcept override;
/**
* @brief Gets the overlay defining the polygons.
*/
const CesiumRasterOverlays::RasterizedPolygonsOverlay& getOverlay() const;
private:
CesiumUtility::IntrusivePointer<
const CesiumRasterOverlays::RasterizedPolygonsOverlay>
_pOverlay;
};
} // namespace Cesium3DTilesSelection