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

49 lines
1.8 KiB
C++

// Copyright 2020-2024 CesiumGS, Inc. and Contributors
#include "CesiumPrimitiveMetadata.h"
#include "CesiumGltf/AccessorView.h"
#include "CesiumGltf/ExtensionMeshPrimitiveExtStructuralMetadata.h"
#include "CesiumGltf/Model.h"
#include "CesiumGltfPrimitiveComponent.h"
static FCesiumPrimitiveMetadata EmptyPrimitiveMetadata;
FCesiumPrimitiveMetadata::FCesiumPrimitiveMetadata(
const CesiumGltf::MeshPrimitive& Primitive,
const CesiumGltf::ExtensionMeshPrimitiveExtStructuralMetadata& Metadata)
: _propertyTextureIndices(), _propertyAttributeIndices() {
this->_propertyTextureIndices.Reserve(Metadata.propertyTextures.size());
for (const int64 propertyTextureIndex : Metadata.propertyTextures) {
this->_propertyTextureIndices.Emplace(propertyTextureIndex);
}
this->_propertyAttributeIndices.Reserve(Metadata.propertyAttributes.size());
for (const int64 propertyAttributeIndex : Metadata.propertyAttributes) {
this->_propertyAttributeIndices.Emplace(propertyAttributeIndex);
}
}
const FCesiumPrimitiveMetadata&
UCesiumPrimitiveMetadataBlueprintLibrary::GetPrimitiveMetadata(
const UPrimitiveComponent* component) {
const UCesiumGltfPrimitiveComponent* pGltfComponent =
Cast<UCesiumGltfPrimitiveComponent>(component);
if (!IsValid(pGltfComponent)) {
return EmptyPrimitiveMetadata;
}
return pGltfComponent->getPrimitiveData().Metadata;
}
const TArray<int64>&
UCesiumPrimitiveMetadataBlueprintLibrary::GetPropertyTextureIndices(
UPARAM(ref) const FCesiumPrimitiveMetadata& PrimitiveMetadata) {
return PrimitiveMetadata._propertyTextureIndices;
}
const TArray<int64>&
UCesiumPrimitiveMetadataBlueprintLibrary::GetPropertyAttributeIndices(
UPARAM(ref) const FCesiumPrimitiveMetadata& PrimitiveMetadata) {
return PrimitiveMetadata._propertyAttributeIndices;
}