bmh/FlightSimulation/Plugins/CesiumForUnreal_5.4/Source/CesiumRuntime/Private/CesiumSampleHeightMostDetailedAsyncAction.cpp
2025-02-07 22:52:32 +08:00

47 lines
1.6 KiB
C++

// Copyright 2020-2024 CesiumGS, Inc. and Contributors
#include "CesiumSampleHeightMostDetailedAsyncAction.h"
#include "Cesium3DTileset.h"
#include "CesiumRuntime.h"
/*static*/ UCesiumSampleHeightMostDetailedAsyncAction*
UCesiumSampleHeightMostDetailedAsyncAction::SampleHeightMostDetailed(
ACesium3DTileset* Tileset,
const TArray<FVector>& LongitudeLatitudeHeightArray) {
UCesiumSampleHeightMostDetailedAsyncAction* pAsyncAction =
NewObject<UCesiumSampleHeightMostDetailedAsyncAction>();
pAsyncAction->_pTileset = Tileset;
pAsyncAction->_longitudeLatitudeHeightArray = LongitudeLatitudeHeightArray;
return pAsyncAction;
}
void UCesiumSampleHeightMostDetailedAsyncAction::Activate() {
if (!IsValid(this->_pTileset)) {
TArray<FString> Warnings;
Warnings.Push(TEXT(
"Invalid Tileset parameter passed to UCesiumSampleHeightMostDetailedAsyncAction, returning no results"));
this->RaiseOnHeightsSampled(
this->_pTileset,
TArray<FCesiumSampleHeightResult>(),
Warnings);
} else {
this->RegisterWithGameInstance(this->_pTileset);
this->_pTileset->SampleHeightMostDetailed(
this->_longitudeLatitudeHeightArray,
FCesiumSampleHeightMostDetailedCallback::CreateUObject(
this,
&UCesiumSampleHeightMostDetailedAsyncAction::
RaiseOnHeightsSampled));
}
}
void UCesiumSampleHeightMostDetailedAsyncAction::RaiseOnHeightsSampled(
ACesium3DTileset* Tileset,
const TArray<FCesiumSampleHeightResult>& Result,
const TArray<FString>& Warnings) {
this->OnHeightsSampled.Broadcast(Result, Warnings);
this->SetReadyToDestroy();
}