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