// Copyright 2020-2024 CesiumGS, Inc. and Contributors #include "CesiumMetadataPrimitive.h" #include "CesiumGltf/Model.h" PRAGMA_DISABLE_DEPRECATION_WARNINGS FCesiumMetadataPrimitive::FCesiumMetadataPrimitive( const FCesiumPrimitiveFeatures& PrimitiveFeatures, const FCesiumPrimitiveMetadata& PrimitiveMetadata, const FCesiumModelMetadata& ModelMetadata) : _pPrimitiveFeatures(&PrimitiveFeatures), _pPrimitiveMetadata(&PrimitiveMetadata), _pModelMetadata(&ModelMetadata) {} const TArray UCesiumMetadataPrimitiveBlueprintLibrary::GetFeatureIdAttributes( UPARAM(ref) const FCesiumMetadataPrimitive& MetadataPrimitive) { TArray featureIDAttributes; if (!MetadataPrimitive._pPrimitiveFeatures) { return featureIDAttributes; } const TArray featureIDSets = UCesiumPrimitiveFeaturesBlueprintLibrary::GetFeatureIDSetsOfType( *MetadataPrimitive._pPrimitiveFeatures, ECesiumFeatureIdSetType::Attribute); featureIDAttributes.Reserve(featureIDSets.Num()); for (const FCesiumFeatureIdSet& featureIDSet : featureIDSets) { featureIDAttributes.Add( UCesiumFeatureIdSetBlueprintLibrary::GetAsFeatureIDAttribute( featureIDSet)); } return featureIDAttributes; } const TArray UCesiumMetadataPrimitiveBlueprintLibrary::GetFeatureIdTextures( UPARAM(ref) const FCesiumMetadataPrimitive& MetadataPrimitive) { TArray featureIDTextures; if (!MetadataPrimitive._pPrimitiveFeatures) { return featureIDTextures; } const TArray featureIDSets = UCesiumPrimitiveFeaturesBlueprintLibrary::GetFeatureIDSetsOfType( *MetadataPrimitive._pPrimitiveFeatures, ECesiumFeatureIdSetType::Texture); featureIDTextures.Reserve(featureIDSets.Num()); for (const FCesiumFeatureIdSet& featureIDSet : featureIDSets) { featureIDTextures.Add( UCesiumFeatureIdSetBlueprintLibrary::GetAsFeatureIDTexture( featureIDSet)); } return featureIDTextures; } const TArray UCesiumMetadataPrimitiveBlueprintLibrary::GetFeatureTextureNames( UPARAM(ref) const FCesiumMetadataPrimitive& MetadataPrimitive) { TArray propertyTextureNames; if (!MetadataPrimitive._pPrimitiveMetadata || !MetadataPrimitive._pModelMetadata) { return TArray(); } const TArray& propertyTextureIndices = UCesiumPrimitiveMetadataBlueprintLibrary::GetPropertyTextureIndices( *MetadataPrimitive._pPrimitiveMetadata); const TArray propertyTextures = UCesiumModelMetadataBlueprintLibrary::GetPropertyTexturesAtIndices( *MetadataPrimitive._pModelMetadata, propertyTextureIndices); propertyTextureNames.Reserve(propertyTextures.Num()); for (auto propertyTexture : propertyTextures) { propertyTextureNames.Add( UCesiumPropertyTextureBlueprintLibrary::GetPropertyTextureName( propertyTexture)); } return propertyTextureNames; } int64 UCesiumMetadataPrimitiveBlueprintLibrary::GetFirstVertexIDFromFaceID( UPARAM(ref) const FCesiumMetadataPrimitive& MetadataPrimitive, int64 FaceID) { if (!MetadataPrimitive._pPrimitiveFeatures) { return -1; } return UCesiumPrimitiveFeaturesBlueprintLibrary::GetFirstVertexFromFace( *MetadataPrimitive._pPrimitiveFeatures, FaceID); } PRAGMA_ENABLE_DEPRECATION_WARNINGS