|
1 | 1 | // Copyright 2020-2024 CesiumGS, Inc. and Contributors |
2 | 2 |
|
3 | 3 | #include "CesiumPrimitiveFeatures.h" |
4 | | -#include "CesiumGltf/ExtensionExtMeshFeatures.h" |
| 4 | +#include "CesiumGltfPrimitiveComponent.h" |
5 | 5 | #include "CesiumGltfSpecUtility.h" |
6 | 6 | #include "Misc/AutomationTest.h" |
7 | 7 |
|
| 8 | +#include <CesiumGltf/ExtensionExtInstanceFeatures.h> |
| 9 | +#include <CesiumGltf/ExtensionExtMeshFeatures.h> |
| 10 | + |
8 | 11 | BEGIN_DEFINE_SPEC( |
9 | 12 | FCesiumPrimitiveFeaturesSpec, |
10 | 13 | "Cesium.Unit.PrimitiveFeatures", |
@@ -116,6 +119,59 @@ void FCesiumPrimitiveFeaturesSpec::Define() { |
116 | 119 | }); |
117 | 120 | }); |
118 | 121 |
|
| 122 | + Describe("GetPrimitiveFeatures", [this]() { |
| 123 | + It("returns for instanced glTF component", [this]() { |
| 124 | + model = CesiumGltf::Model(); |
| 125 | + model.meshes.emplace_back(); |
| 126 | + CesiumGltf::Node& node = model.nodes.emplace_back(); |
| 127 | + node.mesh = 0; |
| 128 | + |
| 129 | + CesiumGltf::ExtensionExtInstanceFeatures& instanceFeatures = |
| 130 | + node.addExtension<CesiumGltf::ExtensionExtInstanceFeatures>(); |
| 131 | + CesiumGltf::ExtensionExtInstanceFeaturesFeatureId& featureId = |
| 132 | + instanceFeatures.featureIds.emplace_back(); |
| 133 | + featureId.featureCount = 10; |
| 134 | + |
| 135 | + UCesiumGltfInstancedComponent* pComponent = |
| 136 | + NewObject<UCesiumGltfInstancedComponent>(); |
| 137 | + pComponent->getPrimitiveData().Features = |
| 138 | + FCesiumPrimitiveFeatures(model, node, instanceFeatures); |
| 139 | + |
| 140 | + const FCesiumPrimitiveFeatures& primitiveFeatures = |
| 141 | + UCesiumPrimitiveFeaturesBlueprintLibrary::GetPrimitiveFeatures( |
| 142 | + pComponent); |
| 143 | + |
| 144 | + const TArray<FCesiumFeatureIdSet> featureIDSets = |
| 145 | + UCesiumPrimitiveFeaturesBlueprintLibrary::GetFeatureIDSets( |
| 146 | + primitiveFeatures); |
| 147 | + TestEqual("Number of FeatureIDSets", featureIDSets.Num(), 1); |
| 148 | + }); |
| 149 | + |
| 150 | + It("gets implicit feature ID", [this]() { |
| 151 | + model = CesiumGltf::Model(); |
| 152 | + CesiumGltf::Mesh& mesh = model.meshes.emplace_back(); |
| 153 | + pPrimitive = &mesh.primitives.emplace_back(); |
| 154 | + pExtension = |
| 155 | + &pPrimitive->addExtension<CesiumGltf::ExtensionExtMeshFeatures>(); |
| 156 | + CesiumGltf::FeatureId& featureId = pExtension->featureIds.emplace_back(); |
| 157 | + featureId.featureCount = 10; |
| 158 | + |
| 159 | + UCesiumGltfPrimitiveComponent* pComponent = |
| 160 | + NewObject<UCesiumGltfPrimitiveComponent>(); |
| 161 | + pComponent->getPrimitiveData().Features = |
| 162 | + FCesiumPrimitiveFeatures(model, *pPrimitive, *pExtension); |
| 163 | + |
| 164 | + const FCesiumPrimitiveFeatures& primitiveFeatures = |
| 165 | + UCesiumPrimitiveFeaturesBlueprintLibrary::GetPrimitiveFeatures( |
| 166 | + pComponent); |
| 167 | + |
| 168 | + const TArray<FCesiumFeatureIdSet> featureIDSets = |
| 169 | + UCesiumPrimitiveFeaturesBlueprintLibrary::GetFeatureIDSets( |
| 170 | + primitiveFeatures); |
| 171 | + TestEqual("Number of FeatureIDSets", featureIDSets.Num(), 1); |
| 172 | + }); |
| 173 | + }); |
| 174 | + |
119 | 175 | Describe("GetFeatureIDSetsOfType", [this]() { |
120 | 176 | BeforeEach([this]() { |
121 | 177 | model = CesiumGltf::Model(); |
|
0 commit comments