bmh/FlightSimulation/Plugins/CesiumForUnreal_5.4/Source/CesiumRuntime/Public/CesiumPolygonRasterOverlay.h
2025-02-07 22:52:32 +08:00

72 lines
2.3 KiB
C++

// Copyright 2020-2024 CesiumGS, Inc. and Contributors
#pragma once
#include "CesiumRasterOverlay.h"
#include "CoreMinimal.h"
#include "CesiumPolygonRasterOverlay.generated.h"
class ACesiumCartographicPolygon;
namespace Cesium3DTilesSelection {
class RasterizedPolygonsTileExcluder;
}
/**
* A raster overlay that rasterizes polygons and drapes them over the tileset.
* This is useful for clipping out parts of a tileset, for adding a water effect
* in an area, and for many other purposes.
*/
UCLASS(ClassGroup = Cesium, meta = (BlueprintSpawnableComponent))
class CESIUMRUNTIME_API UCesiumPolygonRasterOverlay
: public UCesiumRasterOverlay {
GENERATED_BODY()
public:
UCesiumPolygonRasterOverlay();
/**
* The polygons to rasterize for this overlay.
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Cesium")
TArray<TSoftObjectPtr<ACesiumCartographicPolygon>> Polygons;
/**
* Whether to invert the selection specified by the polygons.
*
* If this is true, only the areas outside of all the polygons will be
* rasterized.
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Cesium")
bool InvertSelection = false;
/**
* Whether tiles that fall entirely within the rasterized selection should be
* excluded from loading and rendering. For better performance, this should be
* enabled when this overlay will be used for clipping. But when this overlay
* is used for other effects, this option should be disabled to avoid missing
* tiles.
*
* Note that if InvertSelection is true, this will cull tiles that are
* outside of all the polygons. If it is false, this will cull tiles that are
* completely inside at least one polygon.
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Cesium")
bool ExcludeSelectedTiles = true;
protected:
virtual std::unique_ptr<CesiumRasterOverlays::RasterOverlay> CreateOverlay(
const CesiumRasterOverlays::RasterOverlayOptions& options = {}) override;
virtual void OnAdd(
Cesium3DTilesSelection::Tileset* pTileset,
CesiumRasterOverlays::RasterOverlay* pOverlay) override;
virtual void OnRemove(
Cesium3DTilesSelection::Tileset* pTileset,
CesiumRasterOverlays::RasterOverlay* pOverlay) override;
private:
std::shared_ptr<Cesium3DTilesSelection::RasterizedPolygonsTileExcluder>
_pExcluder;
};