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