Cesium for Unreal 2.15.0
Loading...
Searching...
No Matches
CesiumPropertyTableProperty.h
Go to the documentation of this file.
1// Copyright 2020-2024 CesiumGS, Inc. and Contributors
2
3#pragma once
4
5#include "CesiumGltf/PropertyTablePropertyView.h"
6#include "CesiumGltf/PropertyTypeTraits.h"
10#include "CesiumPropertyArray.h"
11#include "Kismet/BlueprintFunctionLibrary.h"
12#include "UObject/ObjectMacros.h"
13#include <any>
14#include <glm/glm.hpp>
15#include <string_view>
16#include <variant>
17#include "CesiumPropertyTableProperty.generated.h"
18
19/**
20 * @brief Reports the status of a FCesiumPropertyTableProperty. If the property
21 * table property cannot be accessed, this briefly indicates why.
22 */
23UENUM(BlueprintType)
25 /* The property table property is valid. */
26 Valid = 0,
27 /* The property table property is empty but has a specified default value. */
29 /* The property table property does not exist in the glTF, or the property
30 definition itself contains errors. */
32 /* The data associated with the property table property is malformed and
33 cannot be retrieved. */
35};
36
37/**
38 * A Blueprint-accessible wrapper for a glTF property table property in
39 * EXT_structural_metadata. A property has a specific type, such as int64 scalar
40 * or string, and values of that type that can be accessed with primitive
41 * feature IDs from EXT_mesh_features.
42 */
43USTRUCT(BlueprintType)
44struct CESIUMRUNTIME_API FCesiumPropertyTableProperty {
45 GENERATED_USTRUCT_BODY()
46
47private:
48public:
49 /**
50 * Construct an invalid property with an unknown type.
51 */
54 _property(),
55 _valueType(),
56 _normalized(false) {}
57
58 /**
59 * Construct a wrapper for the property table property view.
60 *
61 * @param Property The PropertyTablePropertyView to be stored in this struct.
62 */
63 template <typename T, bool Normalized>
69
70 /**
71 * Construct a wrapper for the property table property view.
72 *
73 * @param Property The PropertyTablePropertyView to be stored in this struct.
74 * @param EnumDefinition The enum definition to use, if any.
75 */
76 template <typename T, bool Normalized>
79 const TSharedPtr<FCesiumMetadataEnum>& EnumDefinition)
81 _property(Property),
82 _valueType(),
83 _normalized(Normalized),
84 _pEnumDefinition(EnumDefinition) {
85 switch (Property.status()) {
86 case CesiumGltf::PropertyTablePropertyViewStatus::Valid:
87 _status = ECesiumPropertyTablePropertyStatus::Valid;
88 break;
89 case CesiumGltf::PropertyTablePropertyViewStatus::EmptyPropertyWithDefault:
90 _status = ECesiumPropertyTablePropertyStatus::EmptyPropertyWithDefault;
91 break;
92 case CesiumGltf::PropertyTablePropertyViewStatus::ErrorInvalidPropertyTable:
93 case CesiumGltf::PropertyTablePropertyViewStatus::ErrorNonexistentProperty:
94 case CesiumGltf::PropertyTablePropertyViewStatus::ErrorTypeMismatch:
95 case CesiumGltf::PropertyTablePropertyViewStatus::
96 ErrorComponentTypeMismatch:
97 case CesiumGltf::PropertyTablePropertyViewStatus::ErrorArrayTypeMismatch:
98 case CesiumGltf::PropertyTablePropertyViewStatus::ErrorInvalidNormalization:
99 case CesiumGltf::PropertyTablePropertyViewStatus::
100 ErrorNormalizationMismatch:
101 case CesiumGltf::PropertyTablePropertyViewStatus::ErrorInvalidOffset:
102 case CesiumGltf::PropertyTablePropertyViewStatus::ErrorInvalidScale:
103 case CesiumGltf::PropertyTablePropertyViewStatus::ErrorInvalidMax:
104 case CesiumGltf::PropertyTablePropertyViewStatus::ErrorInvalidMin:
105 case CesiumGltf::PropertyTablePropertyViewStatus::ErrorInvalidNoDataValue:
106 case CesiumGltf::PropertyTablePropertyViewStatus::ErrorInvalidDefaultValue:
107 // The status was already set in the initializer list.
108 return;
109 default:
110 _status = ECesiumPropertyTablePropertyStatus::ErrorInvalidPropertyData;
111 return;
112 }
113
114 _valueType = TypeToMetadataValueType<T>(EnumDefinition);
115 _normalized = Normalized;
116 }
117
118private:
120
121 std::any _property;
122
123 FCesiumMetadataValueType _valueType;
124 bool _normalized;
125 TSharedPtr<FCesiumMetadataEnum> _pEnumDefinition;
126
128};
129
130UCLASS()
132 : public UBlueprintFunctionLibrary {
133 GENERATED_BODY()
134
135public:
136 /**
137 * Gets the status of the property table property. If this property table
138 * property is invalid in any way, this will briefly indicate why.
139 *
140 * @param Property The property table property.
141 */
142 UFUNCTION(
143 BlueprintCallable,
144 BlueprintPure,
145 Category = "Cesium|Metadata|PropertyTableProperty")
147 UPARAM(ref) const FCesiumPropertyTableProperty& Property);
148
149 /**
150 * Gets the best-fitting type for the property that is accessible from
151 * Blueprints. For the most precise representation of the values possible in
152 * Blueprints, you should retrieve it using this type.
153 *
154 * @param Property The property table property.
155 */
156 UFUNCTION(
157 BlueprintCallable,
158 BlueprintPure,
159 Category = "Cesium|Metadata|PropertyTableProperty")
161 GetBlueprintType(UPARAM(ref) const FCesiumPropertyTableProperty& Property);
162
163 /**
164 * Gets the best-fitting Blueprints type for the elements in this property's
165 * array values. If the given property does not contain array values, this
166 * returns None.
167 *
168 * @param Property The property table property.
169 */
170 UFUNCTION(
171 BlueprintCallable,
172 BlueprintPure,
173 Category = "Cesium|Metadata|PropertyTableProperty")
175 UPARAM(ref) const FCesiumPropertyTableProperty& Property);
176
177 PRAGMA_DISABLE_DEPRECATION_WARNINGS
178 /**
179 * Gets the best-fitting Blueprints type for the elements in this property's
180 * array values. If the given property does not contain array values, this
181 * returns None.
182 *
183 * @param Property The property table property.
184 */
185 UFUNCTION(
186 BlueprintCallable,
187 BlueprintPure,
188 Meta =
189 (DeprecatedFunction,
190 DeprecationMessage = "Use GetArrayElementBlueprintType instead."))
193 const FCesiumPropertyTableProperty& Property);
194 PRAGMA_ENABLE_DEPRECATION_WARNINGS
195
196 /**
197 * Gets the type of the metadata value as defined in the
198 * EXT_structural_metadata extension. Many of these types are not accessible
199 * from Blueprints, but can be converted to a Blueprint-accessible type.
200 *
201 * @param Property The property table property.
202 */
203 UFUNCTION(
204 BlueprintCallable,
205 BlueprintPure,
206 Category = "Cesium|Metadata|PropertyTableProperty")
208 GetValueType(UPARAM(ref) const FCesiumPropertyTableProperty& Property);
209
210 PRAGMA_DISABLE_DEPRECATION_WARNINGS
211 /**
212 * Gets true type of the value. Many of these types are not accessible
213 * from Blueprints, but can be converted to a Blueprint-accessible type.
214 *
215 * @param Value The property table property.
216 */
217 UFUNCTION(
218 BlueprintCallable,
219 BlueprintPure,
220 Meta =
221 (DeprecatedFunction,
222 DeprecationMessage =
223 "CesiumMetadataTrueType is deprecated. Use GetValueType to get the CesiumMetadataValueType instead."))
225 GetTrueType(UPARAM(ref) const FCesiumPropertyTableProperty& Value);
226
227 /**
228 * Gets true type of the elements in this array property. If this is not an
229 * array property, the component type will be None. Many of these types are
230 * not accessible from Blueprints, but can be converted to a
231 * Blueprint-accessible type.
232 *
233 * @param Value The property table property.
234 */
235 UFUNCTION(
236 BlueprintCallable,
237 BlueprintPure,
238 Meta =
239 (DeprecatedFunction,
240 DeprecationMessage =
241 "CesiumMetadataTrueType is deprecated. Use GetValueType to get the CesiumMetadataValueType instead."))
244
245 PRAGMA_ENABLE_DEPRECATION_WARNINGS
246
247 /**
248 * Gets the number of values in the property.
249 *
250 * @param Property The property table property.
251 */
252 UFUNCTION(
253 BlueprintCallable,
254 BlueprintPure,
255 Category = "Cesium|Metadata|PropertyTableProperty")
256 static int64
257 GetPropertySize(UPARAM(ref) const FCesiumPropertyTableProperty& Property);
258
259 PRAGMA_DISABLE_DEPRECATION_WARNINGS
260 /**
261 * Gets the number of values in this property.
262 *
263 * @param Property The property table property.
264 */
265 UFUNCTION(
266 BlueprintCallable,
267 BlueprintPure,
268 Meta =
269 (DeprecatedFunction,
270 DeprecationMessage = "Use GetPropertySize instead."))
271 static int64
273 PRAGMA_ENABLE_DEPRECATION_WARNINGS
274
275 /**
276 * Gets the number of elements in an array of this property. Only
277 * applicable when the property is a fixed-length array type.
278 *
279 * @param Property The property table property.
280 */
281 UFUNCTION(
282 BlueprintCallable,
283 BlueprintPure,
284 Category = "Cesium|Metadata|PropertyTableProperty")
285 static int64 GetArraySize(UPARAM(ref)
286 const FCesiumPropertyTableProperty& Property);
287
288 PRAGMA_DISABLE_DEPRECATION_WARNINGS
289 /**
290 * Gets the number of elements in an array of this property. Only
291 * applicable when the property is a fixed-length array type.
292 *
293 * @param Property The property table property.
294 */
295 UFUNCTION(
296 BlueprintCallable,
297 BlueprintPure,
298 Meta =
299 (DeprecatedFunction,
300 DeprecationMessage = "Use GetArraySize instead."))
301 static int64
303 PRAGMA_ENABLE_DEPRECATION_WARNINGS
304
305 /**
306 * Attempts to retrieve the value for the given feature as a boolean.
307 *
308 * For numeric properties, the raw value for a given feature will be
309 * transformed by the property's normalization, scale, and offset before it is
310 * further converted. If the raw value is equal to the property's "no data"
311 * value, then the property's default value will be converted if possible. If
312 * the property-defined default value cannot be converted, or does not exist,
313 * then the user-defined default value is returned.
314 *
315 * Property values are converted as follows:
316 *
317 * - If the value is a boolean, it is returned as-is.
318 *
319 * - If the value is a scalar, zero is converted to false, while any other
320 * value is converted to true.
321 *
322 * - If the value is a string, "0", "false", and "no" (case-insensitive) are
323 * converted to false, while "1", "true", and "yes" are converted to true.
324 * All other strings, including strings that can be converted to numbers,
325 * will return the user-defined default value.
326 *
327 * All other types return the user-defined default value. If the feature ID is
328 * out-of-range, or if the property table property is somehow invalid, the
329 * user-defined default value is returned.
330 *
331 * @param Property The property table property.
332 * @param FeatureID The ID of the feature.
333 * @param DefaultValue The default value to fall back on.
334 * @return The property value as a Boolean.
335 */
336 UFUNCTION(
337 BlueprintCallable,
338 BlueprintPure,
339 Category = "Cesium|Metadata|PropertyTableProperty")
340 static bool GetBoolean(
341 UPARAM(ref) const FCesiumPropertyTableProperty& Property,
342 int64 FeatureID,
343 bool DefaultValue = false);
344
345 /**
346 * Attempts to retrieve the value for the given feature as an unsigned
347 * 8-bit integer.
348 *
349 * For numeric properties, the raw value for a given feature will be
350 * transformed by the property's normalization, scale, and offset before it is
351 * further converted. If the raw value is equal to the property's "no data"
352 * value, then the property's default value will be converted if possible. If
353 * the property-defined default value cannot be converted, or does not exist,
354 * then the user-defined default value is returned.
355 *
356 * Property values are converted as follows:
357 *
358 * - If the value is an integer between 0 and 255, it is returned as-is.
359 * Otherwise, if the value is a floating-point number in the aforementioned
360 * range, it is truncated (rounded toward zero) and returned.
361 *
362 * - If the value is a boolean, 1 is returned for true and 0 for false.
363 *
364 * - If the value is a string and the entire string can be parsed as an
365 * integer between 0 and 255, the parsed value is returned. The string is
366 * parsed in a locale-independent way and does not support the use of commas
367 * or other delimiters to group digits together.
368 *
369 * In all other cases, the user-defined default value is returned. If the
370 * feature ID is out-of-range, or if the property table property is somehow
371 * invalid, the user-defined default value is returned.
372 *
373 * @param Property The property table property.
374 * @param FeatureID The ID of the feature.
375 * @param DefaultValue The default value to fall back on.
376 * @return The property value as a Byte.
377 */
378 UFUNCTION(
379 BlueprintCallable,
380 BlueprintPure,
381 Category = "Cesium|Metadata|PropertyTableProperty")
382 static uint8 GetByte(
383 UPARAM(ref) const FCesiumPropertyTableProperty& Property,
384 int64 FeatureID,
385 uint8 DefaultValue = 0);
386
387 /**
388 * Attempts to retrieve the value for the given feature as a signed 32-bit
389 * integer.
390 *
391 * For numeric properties, the raw value for a given feature will be
392 * transformed by the property's normalization, scale, and offset before it is
393 * further converted. If the raw value is equal to the property's "no data"
394 * value, then the property's default value will be converted if possible. If
395 * the property-defined default value cannot be converted, or does not exist,
396 * then the user-defined default value is returned.
397 *
398 * Property values are converted as follows:
399 *
400 * - If the value is an integer between -2,147,483,648 and 2,147,483,647, it
401 * is returned as-is. Otherwise, if the value is a floating-point number in
402 * the aforementioned range, it is truncated (rounded toward zero) and
403 * returned.
404 *
405 * - If the value is a boolean, 1 is returned for true and 0 for false.
406 *
407 * - If the value is a string and the entire string can be parsed as an
408 * integer in the valid range, the parsed value is returned. If it can be
409 * parsed as a floating-point number, the parsed value is truncated (rounded
410 * toward zero). In either case, the string is parsed in a locale-independent
411 * way and does not support the use of commas or other delimiters to group
412 * digits together.
413 *
414 * In all other cases, the user-defined default value is returned. If the
415 * feature ID is out-of-range, or if the property table property is somehow
416 * invalid, the user-defined default value is returned.
417 *
418 * @param Property The property table property.
419 * @param FeatureID The ID of the feature.
420 * @param DefaultValue The default value to fall back on.
421 * @return The property value as an Integer.
422 */
423 UFUNCTION(
424 BlueprintCallable,
425 BlueprintPure,
426 Category = "Cesium|Metadata|PropertyTableProperty")
427 static int32 GetInteger(
428 UPARAM(ref) const FCesiumPropertyTableProperty& Property,
429 int64 FeatureID,
430 int32 DefaultValue = 0);
431
432 /**
433 * Attempts to retrieve the value for the given feature as a signed 64-bit
434 * integer.
435 *
436 * For numeric properties, the raw value for a given feature will be
437 * transformed by the property's normalization, scale, and offset before it is
438 * further converted. If the raw value is equal to the property's "no data"
439 * value, then the property's default value will be converted if possible. If
440 * the property-defined default value cannot be converted, or does not exist,
441 * then the user-defined default value is returned.
442 *
443 * Property values are converted as follows:
444 *
445 * - If the value is an integer and between -2^63 and (2^63 - 1), it is
446 * returned as-is. Otherwise, if the value is a floating-point number in the
447 * aforementioned range, it is truncated (rounded toward zero) and returned.
448 *
449 * - If the value is a boolean, 1 is returned for true and 0 for false.
450 *
451 * - If the value is a string and the entire string can be parsed as an
452 * integer in the valid range, the parsed value is returned. If it can be
453 * parsed as a floating-point number, the parsed value is truncated (rounded
454 * toward zero). In either case, the string is parsed in a locale-independent
455 * way and does not support the use of commas or other delimiters to group
456 * digits together.
457 *
458 * In all other cases, the user-defined default value is returned. If the
459 * feature ID is out-of-range, or if the property table property is somehow
460 * invalid, the user-defined default value is returned.
461 *
462 * @param Property The property table property.
463 * @param FeatureID The ID of the feature.
464 * @param DefaultValue The default value to fall back on.
465 * @return The property value as an Integer64.
466 */
467 UFUNCTION(
468 BlueprintCallable,
469 BlueprintPure,
470 Category = "Cesium|Metadata|PropertyTableProperty")
471 static int64 GetInteger64(
472 UPARAM(ref) const FCesiumPropertyTableProperty& Property,
473 int64 FeatureID,
474 int64 DefaultValue = 0);
475
476 /**
477 * Attempts to retrieve the value for the given feature as a single-precision
478 * floating-point number.
479 *
480 * For numeric properties, the raw value for a given feature will be
481 * transformed by the property's normalization, scale, and offset before it is
482 * further converted. If the raw value is equal to the property's "no data"
483 * value, then the property's default value will be converted if possible. If
484 * the property-defined default value cannot be converted, or does not exist,
485 * then the user-defined default value is returned.
486 *
487 * Property values are converted as follows:
488 *
489 * - If the value is already a single-precision floating-point
490 * number, it is returned as-is.
491 *
492 * - If the value is a scalar of any other type within the range of values
493 * that a single-precision float can represent, it is converted to its closest
494 * representation as a single-precision float and returned.
495 *
496 * - If the value is a boolean, 1.0f is returned for true and 0.0f for false.
497 *
498 * - If the value is a string, and the entire string can be parsed as a
499 * number, the parsed value is returned. The string is parsed in a
500 * locale-independent way and does not support the use of a comma or other
501 * delimiter to group digits together.
502 *
503 * In all other cases, the user-defined default value is returned. If the
504 * feature ID is out-of-range, or if the property table property is somehow
505 * invalid, the user-defined default value is returned.
506 *
507 * @param Property The property table property.
508 * @param FeatureID The ID of the feature.
509 * @param DefaultValue The default value to fall back on.
510 * @return The property value as a Float.
511 */
512 UFUNCTION(
513 BlueprintCallable,
514 BlueprintPure,
515 Category = "Cesium|Metadata|PropertyTableProperty")
516 static float GetFloat(
517 UPARAM(ref) const FCesiumPropertyTableProperty& Property,
518 int64 FeatureID,
519 float DefaultValue = 0.0f);
520
521 /**
522 * Attempts to retrieve the value for the given feature as a double-precision
523 * floating-point number.
524 *
525 * For numeric properties, the raw value for a given feature will be
526 * transformed by the property's normalization, scale, and offset before it is
527 * further converted. If the raw value is equal to the property's "no data"
528 * value, then the property's default value will be converted if possible. If
529 * the property-defined default value cannot be converted, or does not exist,
530 * then the user-defined default value is returned.
531 *
532 * Property values are converted as follows:
533 *
534 * - If the value is a single- or double-precision floating-point number, it
535 * is returned as-is.
536 *
537 * - If the value is an integer, it is converted to the closest representable
538 * double-precision floating-point number.
539 *
540 * - If the value is a boolean, 1.0 is returned for true and 0.0 for false.
541 *
542 * - If the value is a string and the entire string can be parsed as a
543 * number, the parsed value is returned. The string is parsed in a
544 * locale-independent way and does not support the use of commas or other
545 * delimiters to group digits together.
546 *
547 * In all other cases, the user-defined default value is returned. If the
548 * feature ID is out-of-range, or if the property table property is somehow
549 * invalid, the user-defined default value is returned.
550 *
551 * @param Property The property table property.
552 * @param FeatureID The ID of the feature.
553 * @param DefaultValue The default value to fall back on.
554 * @return The property value as a Float64.
555 */
556 UFUNCTION(
557 BlueprintCallable,
558 BlueprintPure,
559 Category = "Cesium|Metadata|PropertyTableProperty")
560 static double GetFloat64(
561 UPARAM(ref) const FCesiumPropertyTableProperty& Property,
562 int64 FeatureID,
563 double DefaultValue = 0.0);
564
565 /**
566 * Attempts to retrieve the value for the given feature as a FIntPoint.
567 *
568 * For numeric properties, the raw value for a given feature will be
569 * transformed by the property's normalization, scale, and offset before it is
570 * further converted. If the raw value is equal to the property's "no data"
571 * value, then the property's default value will be converted if possible. If
572 * the property-defined default value cannot be converted, or does not exist,
573 * then the user-defined default value is returned.
574 *
575 * Property values are converted as follows:
576 *
577 * - If the value is a 2-dimensional vector, its components will be converted
578 * to 32-bit signed integers if possible.
579 *
580 * - If the value is a 3- or 4-dimensional vector, it will use the first two
581 * components to construct the FIntPoint.
582 *
583 * - If the value is a scalar that can be converted to a 32-bit signed
584 * integer, the resulting FIntPoint will have this value in both of its
585 * components.
586 *
587 * - If the value is a boolean, (1, 1) is returned for true, while (0, 0) is
588 * returned for false.
589 *
590 * - If the value is a string that can be parsed as a FIntPoint, the parsed
591 * value is returned. The string must be formatted as "X=... Y=...".
592 *
593 * In all other cases, the user-defined default value is returned. In all
594 * vector cases, if any of the relevant components cannot be represented as a
595 * 32-bit signed, the default value is returned.
596 *
597 * If the feature ID is out-of-range, or if the property table property is
598 * somehow invalid, the user-defined default value is returned.
599 *
600 * @param Property The property table property.
601 * @param FeatureID The ID of the feature.
602 * @param DefaultValue The default value to fall back on.
603 * @return The property value as a FIntPoint.
604 */
605 UFUNCTION(
606 BlueprintCallable,
607 BlueprintPure,
608 Category = "Cesium|Metadata|PropertyTableProperty")
609 static FIntPoint GetIntPoint(
610 UPARAM(ref) const FCesiumPropertyTableProperty& Property,
611 int64 FeatureID,
612 const FIntPoint& DefaultValue);
613
614 /**
615 * Attempts to retrieve the value for the given feature as a FVector2D.
616 *
617 * For numeric properties, the raw value for a given feature will be
618 * transformed by the property's normalization, scale, and offset before it is
619 * further converted. If the raw value is equal to the property's "no data"
620 * value, then the property's default value will be converted if possible. If
621 * the property-defined default value cannot be converted, or does not exist,
622 * then the user-defined default value is returned.
623 *
624 * Property values are converted as follows:
625 *
626 * - If the value is a 2-dimensional vector, its components will be converted
627 * to double-precision floating-point numbers.
628 *
629 * - If the value is a 3- or 4-dimensional vector, it will use the first two
630 * components to construct the FVector2D.
631 *
632 * - If the value is a scalar, the resulting FVector2D will have this value in
633 * both of its components.
634 *
635 * - If the value is a boolean, (1.0, 1.0) is returned for true, while (0.0,
636 * 0.0) is returned for false.
637 *
638 * - If the value is a string that can be parsed as a FVector2D, the parsed
639 * value is returned. The string must be formatted as "X=... Y=...".
640 *
641 * In all other cases, the user-defined default value is returned. If the
642 * feature ID is out-of-range, or if the property table property is somehow
643 * invalid, the user-defined default value is returned.
644 *
645 * @param Property The property table property.
646 * @param FeatureID The ID of the feature.
647 * @param DefaultValue The default value to fall back on.
648 * @return The property value as a FVector2D.
649 */
650 UFUNCTION(
651 BlueprintCallable,
652 BlueprintPure,
653 Category = "Cesium|Metadata|PropertyTableProperty")
654 static FVector2D GetVector2D(
655 UPARAM(ref) const FCesiumPropertyTableProperty& Property,
656 int64 FeatureID,
657 const FVector2D& DefaultValue);
658
659 /**
660 * Attempts to retrieve the value for the given feature as a FIntVector.
661 *
662 * For numeric properties, the raw value for a given feature will be
663 * transformed by the property's normalization, scale, and offset before it is
664 * further converted. If the raw value is equal to the property's "no data"
665 * value, then the property's default value will be converted if possible. If
666 * the property-defined default value cannot be converted, or does not exist,
667 * then the user-defined default value is returned.
668 *
669 * Property values are converted as follows:
670 *
671 * - If the value is a 3-dimensional vector, its components will be converted
672 * to 32-bit signed integers if possible.
673 *
674 * - If the value is a 4-dimensional vector, it will use the first three
675 * components to construct the FIntVector.
676 *
677 * - If the value is a 2-dimensional vector, it will become the XY-components
678 * of the FIntVector. The Z component will be set to zero.
679 *
680 * - If the value is a scalar that can be converted to a 32-bit signed
681 * integer, the resulting FIntVector will have this value in all of its
682 * components.
683 *
684 * - If the value is a boolean, (1, 1, 1) is returned for true, while (0, 0,
685 * 0) is returned for false.
686 *
687 * - If the value is a string that can be parsed as a FIntVector, the parsed
688 * value is returned. The string must be formatted as "X=... Y=... Z=".
689 *
690 * In all other cases, the user-defined default value is returned. In all
691 * vector cases, if any of the relevant components cannot be represented as a
692 * 32-bit signed integer, the default value is returned.
693 *
694 * If the feature ID is out-of-range, or if the property table property is
695 * somehow invalid, the user-defined default value is returned.
696 *
697 * @param Property The property table property.
698 * @param FeatureID The ID of the feature.
699 * @param DefaultValue The default value to fall back on.
700 * @return The property value as a FIntVector.
701 */
702 UFUNCTION(
703 BlueprintCallable,
704 BlueprintPure,
705 Category = "Cesium|Metadata|PropertyTableProperty")
706 static FIntVector GetIntVector(
707 UPARAM(ref) const FCesiumPropertyTableProperty& Property,
708 int64 FeatureID,
709 const FIntVector& DefaultValue);
710
711 /**
712 * Attempts to retrieve the value for the given feature as a FVector3f.
713 *
714 * For numeric properties, the raw value for a given feature will be
715 * transformed by the property's normalization, scale, and offset before it is
716 * further converted. If the raw value is equal to the property's "no data"
717 * value, then the property's default value will be converted if possible. If
718 * the property-defined default value cannot be converted, or does not exist,
719 * then the user-defined default value is returned.
720 *
721 * Property values are converted as follows:
722 *
723 * - If the value is a 3-dimensional vector, its components will be converted
724 * to the closest representable single-precision floats, if possible.
725 *
726 * - If the value is a 4-dimensional vector, a FVector3f containing the first
727 * three components will be returned.
728 *
729 * - If the value is a 2-dimensional vector, it will become the XY-components
730 * of the FVector3f. The Z-component will be set to zero.
731 *
732 * - If the value is a scalar that can be converted to a single-precision
733 * floating-point number, then the resulting FVector3f will have this value in
734 * all of its components.
735 *
736 * - If the value is a boolean, (1.0f, 1.0f, 1.0f) is returned for true, while
737 * (0.0f, 0.0f, 0.0f) is returned for false.
738 *
739 * - If the value is a string that can be parsed as a FVector3f, the parsed
740 * value is returned. The string must be formatted as "X=... Y=... Z=".
741 *
742 * In all other cases, the user-defined default value is returned. In all
743 * vector cases, if any of the relevant components cannot be represented as a
744 * single-precision float, the user-defined default value is returned.
745 *
746 * If the feature ID is out-of-range, or if the property table property is
747 * somehow invalid, the user-defined default value is returned.
748 *
749 * @param Property The property table property.
750 * @param FeatureID The ID of the feature.
751 * @param DefaultValue The default value to fall back on.
752 * @return The property value as a FVector3f.
753 */
754 UFUNCTION(
755 BlueprintCallable,
756 BlueprintPure,
757 Category = "Cesium|Metadata|PropertyTableProperty")
758 static FVector3f GetVector3f(
759 UPARAM(ref) const FCesiumPropertyTableProperty& Property,
760 int64 FeatureID,
761 const FVector3f& DefaultValue);
762
763 /**
764 * Attempts to retrieve the value for the given feature as a FVector.
765 *
766 * For numeric properties, the raw value for a given feature will be
767 * transformed by the property's normalization, scale, and offset before it is
768 * further converted. If the raw value is equal to the property's "no data"
769 * value, then the property's default value will be converted if possible. If
770 * the property-defined default value cannot be converted, or does not exist,
771 * then the user-defined default value is returned.
772 *
773 * Property values are converted as follows:
774 *
775 * - If the value is a 3-dimensional vector, its components will be converted
776 * to double-precision floating-point numbers.
777 *
778 * - If the value is a 4-dimensional vector, a FVector containing the first
779 * three components will be returned.
780 *
781 * - If the value is a 2-dimensional vector, it will become the XY-components
782 * of the FVector. The Z-component will be set to zero.
783 *
784 * - If the value is a scalar, then the resulting FVector will have this value
785 * as a double-precision floating-point number in all of its components.
786 *
787 * - If the value is a boolean, (1.0, 1.0, 1.0) is returned for true, while
788 * (0.0, 0.0, 0.0) is returned for false.
789 *
790 * - If the value is a string that can be parsed as a FVector, the parsed
791 * value is returned. The string must be formatted as "X=... Y=... Z=".
792 *
793 * In all other cases, the user-defined default value is returned. If the
794 * feature ID is out-of-range, or if the property table property is somehow
795 * invalid, the user-defined default value is returned.
796 *
797 * @param Property The property table property.
798 * @param FeatureID The ID of the feature.
799 * @param DefaultValue The default value to fall back on.
800 * @return The property value as a FVector.
801 */
802 UFUNCTION(
803 BlueprintCallable,
804 BlueprintPure,
805 Category = "Cesium|Metadata|PropertyTableProperty")
806 static FVector GetVector(
807 UPARAM(ref) const FCesiumPropertyTableProperty& Property,
808 int64 FeatureID,
809 const FVector& DefaultValue);
810
811 /**
812 * Attempts to retrieve the value for the given feature as a FVector4.
813 *
814 * For numeric properties, the raw value for a given feature will be
815 * transformed by the property's normalization, scale, and offset before it is
816 * further converted. If the raw value is equal to the property's "no data"
817 * value, then the property's default value will be converted if possible. If
818 * the property-defined default value cannot be converted, or does not exist,
819 * then the user-defined default value is returned.
820 *
821 * Property values are converted as follows:
822 *
823 * - If the value is a 4-dimensional vector, its components will be converted
824 * to double-precision floating-point numbers.
825 *
826 * - If the value is a 3-dimensional vector, it will become the XYZ-components
827 * of the FVector4. The W-component will be set to zero.
828 *
829 * - If the value is a 2-dimensional vector, it will become the XY-components
830 * of the FVector4. The Z- and W-components will be set to zero.
831 *
832 * - If the value is a scalar, then the resulting FVector4 will have this
833 * value as a double-precision floating-point number in all of its components.
834 *
835 * - If the value is a boolean, (1.0, 1.0, 1.0, 1.0) is returned for true,
836 * while (0.0, 0.0, 0.0, 0.0) is returned for false.
837 *
838 * - If the value is a string that can be parsed as a FVector4, the parsed
839 * value is returned. This follows the rules of FVector4::InitFromString. The
840 * string must be formatted as "X=... Y=... Z=... W=...". The W-component is
841 * optional; if absent, it will be set to 1.0.
842 *
843 * In all other cases, the user-defined default value is returned. If the
844 * feature ID is out-of-range, or if the property table property is somehow
845 * invalid, the user-defined default value is returned.
846 *
847 * @param Property The property table property.
848 * @param FeatureID The ID of the feature.
849 * @param DefaultValue The default value to fall back on.
850 * @return The property value as a FVector4.
851 */
852 UFUNCTION(
853 BlueprintCallable,
854 BlueprintPure,
855 Category = "Cesium|Metadata|PropertyTableProperty")
856 static FVector4 GetVector4(
857 UPARAM(ref) const FCesiumPropertyTableProperty& Property,
858 int64 FeatureID,
859 const FVector4& DefaultValue);
860
861 /**
862 * Attempts to retrieve the value for the given feature as a FMatrix.
863 *
864 * For numeric properties, the raw value for a given feature will be
865 * transformed by the property's normalization, scale, and offset before it is
866 * further converted. If the raw value is equal to the property's "no data"
867 * value, then the property's default value will be converted if possible. If
868 * the property-defined default value cannot be converted, or does not exist,
869 * then the user-defined default value is returned.
870 *
871 * Property values are converted as follows:
872 *
873 * - If the value is a 4-by-4 matrix, its components will be converted to
874 * double-precision floating-point numbers.
875 *
876 * - If the value is a 3-by-3 matrix, it will initialize the corresponding
877 * entries of the FMatrix, while all other entries are set to zero. In other
878 * words, the 3-by-3 matrix is returned in an FMatrix where the fourth row and
879 * column are filled with zeroes.
880 *
881 * - If the value is a 2-by-2 matrix, it will initialize the corresponding
882 * entries of the FMatrix, while all other entries are set to zero. In other
883 * words, the 2-by-2 matrix is returned in an FMatrix where the third and
884 * fourth rows / columns are filled with zeroes.
885 *
886 * - If the value is a scalar, then the resulting FMatrix will have this value
887 * along its diagonal, including the very last component. All other entries
888 * will be zero.
889 *
890 * - If the value is a boolean, it is converted to 1.0 for true and 0.0 for
891 * false. Then, the resulting FMatrix will have this value along its diagonal,
892 * including the very last component. All other entries will be zero.
893 *
894 * In all other cases, the user-defined default value is returned. If the
895 * feature ID is out-of-range, or if the property table property is somehow
896 * invalid, the user-defined default value is returned.
897 *
898 * @param Property The property table property.
899 * @param FeatureID The ID of the feature.
900 * @param DefaultValue The default value to fall back on.
901 * @return The property value as a FMatrix.
902 */
903 UFUNCTION(
904 BlueprintCallable,
905 BlueprintPure,
906 Category = "Cesium|Metadata|PropertyTableProperty")
907 static FMatrix GetMatrix(
908 UPARAM(ref) const FCesiumPropertyTableProperty& Property,
909 int64 FeatureID,
910 const FMatrix& DefaultValue);
911
912 /**
913 * Attempts to retrieve the value for the given feature as a FString.
914 *
915 * For numeric properties, the raw value for a given feature will be
916 * transformed by the property's normalization, scale, and offset before it is
917 * further converted. If the raw value is equal to the property's "no data"
918 * value, then the property's default value will be converted if possible. If
919 * the property-defined default value cannot be converted, or does not exist,
920 * then the user-defined default value is returned.
921 *
922 * Property values are converted as follows:
923 *
924 * - String properties are returned as-is.
925 *
926 * - Scalar values are converted to a string with `std::to_string`.
927 *
928 * - Boolean properties are converted to "true" or "false".
929 *
930 * - Vector properties are returned as strings in the format "X=... Y=...
931 * Z=... W=..." depending on how many components they have.
932 *
933 * - Matrix properties are returned as strings row-by-row, where each row's
934 * values are printed between square brackets. For example, a 2-by-2 matrix
935 * will be printed out as "[A B] [C D]".
936 *
937 * - Array properties return the user-defined default value.
938 *
939 * If the feature ID is out-of-range, or if the property table property is
940 * somehow invalid, the user-defined default value is returned.
941 *
942 * @param Property The property table property.
943 * @param FeatureID The ID of the feature.
944 * @param DefaultValue The default value to fall back on.
945 * @return The property value as a FString.
946 */
947 UFUNCTION(
948 BlueprintCallable,
949 BlueprintPure,
950 Category = "Cesium|Metadata|PropertyTableProperty")
951 static FString GetString(
952 UPARAM(ref) const FCesiumPropertyTableProperty& Property,
953 int64 FeatureID,
954 const FString& DefaultValue = "");
955
956 /**
957 * Attempts to retrieve the value for the given feature as a
958 * FCesiumPropertyArray. If the property is not an array type, this returns an
959 * empty array.
960 *
961 * For numeric array properties, the raw array value for a given feature will
962 * be transformed by the property's normalization, scale, and offset before it
963 * is further converted. If the raw value is equal to the property's "no data"
964 * value, then the property's default value will be converted if possible. If
965 * the property-defined default value cannot be converted, or does not exist,
966 * then the user-defined default value is returned.
967 *
968 * @param Property The property table property.
969 * @param FeatureID The ID of the feature.
970 * @return The property value as a FCesiumPropertyArray.
971 */
972 UFUNCTION(
973 BlueprintCallable,
974 BlueprintPure,
975 Category = "Cesium|Metadata|PropertyTableProperty")
977 UPARAM(ref) const FCesiumPropertyTableProperty& Property,
978 int64 FeatureID);
979
980 /**
981 * Retrieves the value of the property for the given feature. This allows the
982 * value to be acted on more generically; its true value can be retrieved
983 * later as a specific Blueprints type.
984 *
985 * For numeric properties, the raw value for a given feature will be
986 * transformed by the property's normalization, scale, and offset before it is
987 * returned. If the raw value is equal to the property's "no data" value, an
988 * empty value will be returned. However, if the property itself specifies a
989 * default value, then the property-defined default value will be returned.
990 *
991 * @param Property The property table property.
992 * @param FeatureID The ID of the feature.
993 * @return The property value.
994 */
995 UFUNCTION(
996 BlueprintCallable,
997 BlueprintPure,
998 Category = "Cesium|Metadata|PropertyTableProperty")
1000 UPARAM(ref) const FCesiumPropertyTableProperty& Property,
1001 int64 FeatureID);
1002
1003 PRAGMA_DISABLE_DEPRECATION_WARNINGS
1004 /**
1005 * Retrieves the value of the property for the given feature. This allows the
1006 * value to be acted on more generically; its true value can be retrieved
1007 * later as a specific Blueprints type.
1008 *
1009 * @param Property The property table property.
1010 * @param FeatureID The ID of the feature.
1011 * @return The property value.
1012 */
1013 UFUNCTION(
1014 BlueprintCallable,
1015 BlueprintPure,
1016 Meta = (DeprecatedFunction, DeprecatedMessage = "Use GetValue instead."))
1018 UPARAM(ref) const FCesiumPropertyTableProperty& Property,
1019 int64 FeatureID);
1020 PRAGMA_ENABLE_DEPRECATION_WARNINGS
1021
1022 /**
1023 * Retrieves the raw value of the property for the given feature. This is the
1024 * value of the property without normalization, offset, or scale applied.
1025 *
1026 * If this property specifies a "no data" value, and the raw value is equal to
1027 * this "no data" value, the value is returned as-is.
1028 *
1029 * If this property is an empty property with a specified default value, it
1030 * will not have any raw data to retrieve. The returned value will be empty.
1031
1032 * @param Property The property table property.
1033 * @param FeatureID The ID of the feature.
1034 * @return The raw property value.
1035 */
1036 UFUNCTION(
1037 BlueprintCallable,
1038 BlueprintPure,
1039 Category = "Cesium|Metadata|PropertyTableProperty")
1041 UPARAM(ref) const FCesiumPropertyTableProperty& Property,
1042 int64 FeatureID);
1043
1044 /**
1045 * Whether this property is normalized. Only applicable when this property has
1046 * an integer component type.
1047 *
1048 * @param Property The property table property.
1049 * @return Whether this property is normalized.
1050 */
1051 UFUNCTION(
1052 BlueprintCallable,
1053 BlueprintPure,
1054 Category = "Cesium|Metadata|PropertyTableProperty")
1055 static bool IsNormalized(UPARAM(ref)
1056 const FCesiumPropertyTableProperty& Property);
1057
1058 /**
1059 * Gets the offset of this property. This can be defined by the class property
1060 * that it implements, or overridden by the instance of the property itself.
1061 *
1062 * This is only applicable to properties with floating-point or normalized
1063 * integer component types. If an offset is not defined or applicable, this
1064 * returns an empty value.
1065 *
1066 * @param Property The property table property.
1067 * @return The offset of the property.
1068 */
1069 UFUNCTION(
1070 BlueprintCallable,
1071 BlueprintPure,
1072 Category = "Cesium|Metadata|PropertyTableProperty")
1074 GetOffset(UPARAM(ref) const FCesiumPropertyTableProperty& Property);
1075
1076 /**
1077 * Gets the scale of this property. This can be defined by the class property
1078 * that it implements, or overridden by the instance of the property itself.
1079 *
1080 * This is only applicable to properties with floating-point or normalized
1081 * integer component types. If a scale is not defined or applicable, this
1082 * returns an empty value.
1083 *
1084 * @param Property The property table property.
1085 * @return The scale of the property.
1086 */
1087 UFUNCTION(
1088 BlueprintCallable,
1089 BlueprintPure,
1090 Category = "Cesium|Metadata|PropertyTableProperty")
1092 GetScale(UPARAM(ref) const FCesiumPropertyTableProperty& Property);
1093
1094 /**
1095 * Gets the minimum value of this property. This can be defined by the class
1096 * property that it implements, or overridden by the instance of the property
1097 * itself.
1098 *
1099 * This is only applicable to scalar, vecN and matN properties. It represents
1100 * the component-wise minimum of all property values with normalization,
1101 * offset, and scale applied. If a minimum value is not defined or
1102 * applicable, this returns an empty value.
1103 *
1104 * @param Property The property table property.
1105 * @return The minimum value of the property.
1106 */
1107 UFUNCTION(
1108 BlueprintCallable,
1109 BlueprintPure,
1110 Category = "Cesium|Metadata|PropertyTableProperty")
1112 GetMinimumValue(UPARAM(ref) const FCesiumPropertyTableProperty& Property);
1113
1114 /**
1115 * Gets the maximum value of this property. This can be defined by the class
1116 * property that it implements, or overridden by the instance of the property
1117 * itself.
1118 *
1119 * This is only applicable to scalar, vecN and matN properties. It represents
1120 * the component-wise maximum of all property values with normalization,
1121 * offset, and scale applied. If a maximum value is not defined or applicable,
1122 * this returns an empty value.
1123 *
1124 * @param Property The property table property.
1125 * @return The maximum value of the property.
1126 */
1127 UFUNCTION(
1128 BlueprintCallable,
1129 BlueprintPure,
1130 Category = "Cesium|Metadata|PropertyTableProperty")
1132 GetMaximumValue(UPARAM(ref) const FCesiumPropertyTableProperty& Property);
1133
1134 /**
1135 * Gets the "no data" value of this property, as defined by its class
1136 * property. This value functions a sentinel value, indicating missing data
1137 * wherever it appears. The value is compared against the property's raw data,
1138 * without normalization, offset, or scale applied.
1139 *
1140 * This is not applicable to boolean properties. If a "no data" value is
1141 * not defined or applicable, this returns an empty value.
1142 *
1143 * @param Property The property table property.
1144 * @return The "no data" value of the property.
1145 */
1146 UFUNCTION(
1147 BlueprintCallable,
1148 BlueprintPure,
1149 Category = "Cesium|Metadata|PropertyTableProperty")
1151 GetNoDataValue(UPARAM(ref) const FCesiumPropertyTableProperty& Property);
1152
1153 /**
1154 * Gets the default value of this property, as defined by its class
1155 * property. This default value is used use when encountering a "no data"
1156 * value in the property.
1157 *
1158 * If a default value is not defined, this returns an empty value.
1159 *
1160 * @param Property The property table property.
1161 * @return The default value of the property.
1162 */
1163 UFUNCTION(
1164 BlueprintCallable,
1165 BlueprintPure,
1166 Category = "Cesium|Metadata|PropertyTableProperty")
1168 GetDefaultValue(UPARAM(ref) const FCesiumPropertyTableProperty& Property);
1169};
ECesiumMetadataTrueType_DEPRECATED
The type of a metadata property in EXT_feature_metadata.
ECesiumMetadataBlueprintType
The Blueprint type that can losslessly represent values of a given property.
ECesiumPropertyTablePropertyStatus
Reports the status of a FCesiumPropertyTableProperty.
static FCesiumPropertyArray GetArray(UPARAM(ref) const FCesiumPropertyTableProperty &Property, int64 FeatureID)
Attempts to retrieve the value for the given feature as a FCesiumPropertyArray.
static PRAGMA_DISABLE_DEPRECATION_WARNINGS FCesiumMetadataValue GetGenericValue(UPARAM(ref) const FCesiumPropertyTableProperty &Property, int64 FeatureID)
Retrieves the value of the property for the given feature.
static FVector3f GetVector3f(UPARAM(ref) const FCesiumPropertyTableProperty &Property, int64 FeatureID, const FVector3f &DefaultValue)
Attempts to retrieve the value for the given feature as a FVector3f.
static PRAGMA_ENABLE_DEPRECATION_WARNINGS int64 GetArraySize(UPARAM(ref) const FCesiumPropertyTableProperty &Property)
Gets the number of elements in an array of this property.
static int32 GetInteger(UPARAM(ref) const FCesiumPropertyTableProperty &Property, int64 FeatureID, int32 DefaultValue=0)
Attempts to retrieve the value for the given feature as a signed 32-bit integer.
static FCesiumMetadataValue GetMaximumValue(UPARAM(ref) const FCesiumPropertyTableProperty &Property)
Gets the maximum value of this property.
static FCesiumMetadataValue GetScale(UPARAM(ref) const FCesiumPropertyTableProperty &Property)
Gets the scale of this property.
static PRAGMA_DISABLE_DEPRECATION_WARNINGS int64 GetNumberOfFeatures(UPARAM(ref) const FCesiumPropertyTableProperty &Property)
Gets the number of values in this property.
static FIntPoint GetIntPoint(UPARAM(ref) const FCesiumPropertyTableProperty &Property, int64 FeatureID, const FIntPoint &DefaultValue)
Attempts to retrieve the value for the given feature as a FIntPoint.
static PRAGMA_DISABLE_DEPRECATION_WARNINGS ECesiumMetadataTrueType_DEPRECATED GetTrueType(UPARAM(ref) const FCesiumPropertyTableProperty &Value)
Gets true type of the value.
static PRAGMA_DISABLE_DEPRECATION_WARNINGS int64 GetComponentCount(UPARAM(ref) const FCesiumPropertyTableProperty &Property)
Gets the number of elements in an array of this property.
static FMatrix GetMatrix(UPARAM(ref) const FCesiumPropertyTableProperty &Property, int64 FeatureID, const FMatrix &DefaultValue)
Attempts to retrieve the value for the given feature as a FMatrix.
static FCesiumMetadataValue GetMinimumValue(UPARAM(ref) const FCesiumPropertyTableProperty &Property)
Gets the minimum value of this property.
static FVector2D GetVector2D(UPARAM(ref) const FCesiumPropertyTableProperty &Property, int64 FeatureID, const FVector2D &DefaultValue)
Attempts to retrieve the value for the given feature as a FVector2D.
static PRAGMA_DISABLE_DEPRECATION_WARNINGS ECesiumMetadataBlueprintType GetBlueprintComponentType(UPARAM(ref) const FCesiumPropertyTableProperty &Property)
Gets the best-fitting Blueprints type for the elements in this property's array values.
static PRAGMA_ENABLE_DEPRECATION_WARNINGS bool GetBoolean(UPARAM(ref) const FCesiumPropertyTableProperty &Property, int64 FeatureID, bool DefaultValue=false)
Attempts to retrieve the value for the given feature as a boolean.
static FIntVector GetIntVector(UPARAM(ref) const FCesiumPropertyTableProperty &Property, int64 FeatureID, const FIntVector &DefaultValue)
Attempts to retrieve the value for the given feature as a FIntVector.
static FCesiumMetadataValue GetDefaultValue(UPARAM(ref) const FCesiumPropertyTableProperty &Property)
Gets the default value of this property, as defined by its class property.
static double GetFloat64(UPARAM(ref) const FCesiumPropertyTableProperty &Property, int64 FeatureID, double DefaultValue=0.0)
Attempts to retrieve the value for the given feature as a double-precision floating-point number.
static float GetFloat(UPARAM(ref) const FCesiumPropertyTableProperty &Property, int64 FeatureID, float DefaultValue=0.0f)
Attempts to retrieve the value for the given feature as a single-precision floating-point number.
static FVector4 GetVector4(UPARAM(ref) const FCesiumPropertyTableProperty &Property, int64 FeatureID, const FVector4 &DefaultValue)
Attempts to retrieve the value for the given feature as a FVector4.
static int64 GetInteger64(UPARAM(ref) const FCesiumPropertyTableProperty &Property, int64 FeatureID, int64 DefaultValue=0)
Attempts to retrieve the value for the given feature as a signed 64-bit integer.
static ECesiumMetadataBlueprintType GetBlueprintType(UPARAM(ref) const FCesiumPropertyTableProperty &Property)
Gets the best-fitting type for the property that is accessible from Blueprints.
static uint8 GetByte(UPARAM(ref) const FCesiumPropertyTableProperty &Property, int64 FeatureID, uint8 DefaultValue=0)
Attempts to retrieve the value for the given feature as an unsigned 8-bit integer.
static FString GetString(UPARAM(ref) const FCesiumPropertyTableProperty &Property, int64 FeatureID, const FString &DefaultValue="")
Attempts to retrieve the value for the given feature as a FString.
static bool IsNormalized(UPARAM(ref) const FCesiumPropertyTableProperty &Property)
Whether this property is normalized.
static ECesiumPropertyTablePropertyStatus GetPropertyTablePropertyStatus(UPARAM(ref) const FCesiumPropertyTableProperty &Property)
Gets the status of the property table property.
static ECesiumMetadataTrueType_DEPRECATED GetTrueComponentType(UPARAM(ref) const FCesiumPropertyTableProperty &Value)
Gets true type of the elements in this array property.
static PRAGMA_ENABLE_DEPRECATION_WARNINGS FCesiumMetadataValue GetRawValue(UPARAM(ref) const FCesiumPropertyTableProperty &Property, int64 FeatureID)
Retrieves the raw value of the property for the given feature.
static PRAGMA_ENABLE_DEPRECATION_WARNINGS int64 GetPropertySize(UPARAM(ref) const FCesiumPropertyTableProperty &Property)
Gets the number of values in the property.
static PRAGMA_ENABLE_DEPRECATION_WARNINGS FCesiumMetadataValueType GetValueType(UPARAM(ref) const FCesiumPropertyTableProperty &Property)
Gets the type of the metadata value as defined in the EXT_structural_metadata extension.
static FCesiumMetadataValue GetNoDataValue(UPARAM(ref) const FCesiumPropertyTableProperty &Property)
Gets the "no data" value of this property, as defined by its class property.
static ECesiumMetadataBlueprintType GetArrayElementBlueprintType(UPARAM(ref) const FCesiumPropertyTableProperty &Property)
Gets the best-fitting Blueprints type for the elements in this property's array values.
static FCesiumMetadataValue GetValue(UPARAM(ref) const FCesiumPropertyTableProperty &Property, int64 FeatureID)
Retrieves the value of the property for the given feature.
static FVector GetVector(UPARAM(ref) const FCesiumPropertyTableProperty &Property, int64 FeatureID, const FVector &DefaultValue)
Attempts to retrieve the value for the given feature as a FVector.
static FCesiumMetadataValue GetOffset(UPARAM(ref) const FCesiumPropertyTableProperty &Property)
Gets the offset of this property.
Stores information on the values of an enum and the corresponding names of those values.
Represents the true value type of a metadata value, akin to the property types in EXT_structural_meta...
A Blueprint-accessible wrapper for a glTF metadata value.
A Blueprint-accessible wrapper for an array property in glTF metadata.
A Blueprint-accessible wrapper for a glTF property table property in EXT_structural_metadata.
FCesiumPropertyTableProperty()
Construct an invalid property with an unknown type.
FCesiumPropertyTableProperty(const CesiumGltf::PropertyTablePropertyView< T, Normalized > &Property)
Construct a wrapper for the property table property view.
FCesiumPropertyTableProperty(const CesiumGltf::PropertyTablePropertyView< T, Normalized > &Property, const TSharedPtr< FCesiumMetadataEnum > &EnumDefinition)
Construct a wrapper for the property table property view.