ralpha-assets/Plugins/CesiumForUnreal/Source/CesiumRuntime/Public/CesiumGeoJsonDocumentRaster...

147 lines
4.1 KiB
C++

// Copyright 2020-2024 CesiumGS, Inc. and Contributors
#pragma once
#include "CesiumGeoJsonDocument.h"
#include "CesiumIonServer.h"
#include "CesiumRasterOverlay.h"
#include "CesiumVectorStyle.h"
#include "Components/ActorComponent.h"
#include "CoreMinimal.h"
#include "Delegates/Delegate.h"
#include "CesiumGeoJsonDocumentRasterOverlay.generated.h"
/**
* Configures where the CesiumVectorDocumentRasterOverlay should load its vector
* data from.
*/
UENUM(BlueprintType)
enum class ECesiumGeoJsonDocumentRasterOverlaySource : uint8 {
/**
* The raster overlay will display the provided GeoJsonDocument.
*/
FromDocument = 0,
/**
* The raster overlay will load a GeoJsonDocument from Cesium ion.
*/
FromCesiumIon = 1,
/**
* The raster overlay will load a GeoJsonDocument from a URL.
*/
FromUrl = 2
};
DECLARE_DYNAMIC_DELEGATE_OneParam(
FCesiumGeoJsonDocumentRasterOverlayOnDocumentLoadedCallback,
FCesiumGeoJsonDocument,
InDocument);
UCLASS(
ClassGroup = Cesium,
BlueprintType,
Blueprintable,
meta = (BlueprintSpawnableComponent))
class CESIUMRUNTIME_API UCesiumGeoJsonDocumentRasterOverlay
: public UCesiumRasterOverlay {
GENERATED_BODY()
public:
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Cesium")
ECesiumGeoJsonDocumentRasterOverlaySource Source =
ECesiumGeoJsonDocumentRasterOverlaySource::FromCesiumIon;
/**
* The ID of the Cesium ion asset to use.
*/
UPROPERTY(
EditAnywhere,
BlueprintReadWrite,
Category = "Cesium",
meta =
(EditCondition =
"Source == ECesiumGeoJsonDocumentRasterOverlaySource::FromCesiumIon"))
int64 IonAssetID;
/**
* The Cesium ion Server from which this raster overlay is loaded.
*/
UPROPERTY(
EditAnywhere,
BlueprintReadWrite,
Category = "Cesium",
AdvancedDisplay,
meta =
(EditCondition =
"Source == ECesiumGeoJsonDocumentRasterOverlaySource::FromCesiumIon"))
UCesiumIonServer* CesiumIonServer;
/**
* A FCesiumGeoJsonDocument to display.
*/
UPROPERTY(
EditAnywhere,
BlueprintReadWrite,
Category = "Cesium",
meta =
(EditCondition =
"Source == ECesiumGeoJsonDocumentRasterOverlaySource::FromDocument"))
FCesiumGeoJsonDocument GeoJsonDocument;
/**
* A URL to load a GeoJSON document from.
*/
UPROPERTY(
EditAnywhere,
BlueprintReadWrite,
Category = "Cesium",
meta =
(EditCondition =
"Source == ECesiumGeoJsonDocumentRasterOverlaySource::FromUrl"))
FString Url;
/**
* Headers to use while making a request to `Url` to load a GeoJSON document.
*/
UPROPERTY(
EditAnywhere,
BlueprintReadWrite,
Category = "Cesium",
meta =
(EditCondition =
"Source == ECesiumGeoJsonDocumentRasterOverlaySource::FromUrl"))
TMap<FString, FString> RequestHeaders;
/**
* The number of mip levels to generate for each tile of this raster overlay.
*
* Additional mip levels can improve the visual quality of tiles farther from
* the camera at the cost of additional rasterization time to create each mip
* level.
*/
UPROPERTY(
EditAnywhere,
BlueprintReadWrite,
Category = "Cesium",
meta = (ClampMin = "0", ClampMax = "8"))
int32 MipLevels = 0;
/**
* The default style to use for this raster overlay.
*
* If no style is set on a GeoJSON object or any of its parents, this style
* will be used instead.
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Cesium")
FCesiumVectorStyle DefaultStyle;
/**
* A callback that will be called when the document has been loaded.
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Cesium")
FCesiumGeoJsonDocumentRasterOverlayOnDocumentLoadedCallback OnDocumentLoaded;
protected:
virtual std::unique_ptr<CesiumRasterOverlays::RasterOverlay> CreateOverlay(
const CesiumRasterOverlays::RasterOverlayOptions& options = {}) override;
};