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