Cesium for Unreal
2.15.0
Loading...
Searching...
No Matches
CesiumMetadataEncodingDetails.h
Go to the documentation of this file.
1
// Copyright 2020-2024 CesiumGS, Inc. and Contributors
2
3
#pragma once
4
5
#include "
CesiumMetadataValueType.h
"
6
#include <cstdlib>
7
#include <type_traits>
8
9
#include "CesiumMetadataEncodingDetails.generated.h"
10
11
/**
12
* @brief The component type that a metadata property's values will be encoded
13
* as. These correspond to the pixel component types that are supported in
14
* Unreal textures.
15
*/
16
UENUM()
17
enum class
ECesiumEncodedMetadataComponentType
: uint8 {
None
,
Uint8
,
Float
};
18
19
/**
20
* @brief The type that a metadata property's values will be encoded as.
21
*/
22
UENUM()
23
enum class
ECesiumEncodedMetadataType
: uint8 {
24
None
,
25
Scalar
,
26
Vec2
,
27
Vec3
,
28
Vec4
29
};
30
31
/**
32
* @brief Indicates how a property value from EXT_structural_metadata should be
33
* converted to a GPU-accessible type, if possible.
34
*/
35
UENUM()
36
enum class
ECesiumEncodedMetadataConversion
: uint8 {
37
/**
38
* Do nothing. This is typically used for property types that are
39
* completely unable to be coerced.
40
*/
41
None
,
42
/**
43
* Coerce the components of a property value to the specified component type.
44
* If the property contains string values, this attempts to parse numbers from
45
* the strings as uint8s.
46
*/
47
Coerce
,
48
/**
49
* Attempt to parse a color from a string property value. This supports
50
* the following formats:
51
* - `rgb(R, G, B)`, where R, G, and B are values in the range [0, 255]
52
* - hexcode colors, e.g. `#ff0000`
53
*/
54
ParseColorFromString
55
};
56
57
/**
58
* Describes how a property from EXT_structural_metadata will be encoded for
59
* access in Unreal materials.
60
*/
61
USTRUCT()
62
struct
FCesiumMetadataEncodingDetails
{
63
GENERATED_USTRUCT_BODY()
64
65
FCesiumMetadataEncodingDetails
()
66
:
Type
(
ECesiumEncodedMetadataType
::
None
),
67
ComponentType
(
ECesiumEncodedMetadataComponentType
::
None
),
68
Conversion
(
ECesiumEncodedMetadataConversion
::
None
) {}
69
70
FCesiumMetadataEncodingDetails
(
71
ECesiumEncodedMetadataType
InType,
72
ECesiumEncodedMetadataComponentType
InComponentType,
73
ECesiumEncodedMetadataConversion
InConversion)
74
:
Type
(InType),
75
ComponentType
(InComponentType),
76
Conversion
(InConversion) {}
77
78
/**
79
* The GPU-compatible type that this property's values will be encoded as.
80
*/
81
UPROPERTY(EditAnywhere, Category =
"Cesium"
)
82
ECesiumEncodedMetadataType
Type
;
83
84
/**
85
* The GPU-compatible component type that this property's values will be
86
* encoded as. These correspond to the pixel component types that are
87
* supported in Unreal textures.
88
*/
89
UPROPERTY(EditAnywhere, Category =
"Cesium"
)
90
ECesiumEncodedMetadataComponentType
ComponentType
;
91
92
/**
93
* The method of conversion used for this property. This describes how the
94
* values will be converted for access in Unreal materials. Note that not all
95
* property types are compatible with the methods of conversion.
96
*/
97
UPROPERTY(EditAnywhere, Category =
"Cesium"
)
98
ECesiumEncodedMetadataConversion
Conversion
;
99
100
inline
bool
operator==(const
FCesiumMetadataEncodingDetails
& Info)
const
{
101
return
Type
== Info.Type &&
ComponentType
== Info.ComponentType &&
102
Conversion
== Info.Conversion;
103
}
104
105
inline
bool
operator!=
(
const
FCesiumMetadataEncodingDetails
& Info)
const
{
106
return
Type
!= Info.
Type
||
ComponentType
!= Info.
ComponentType
||
107
Conversion
!= Info.
Conversion
;
108
}
109
110
bool
HasValidType
()
const
{
111
return
Type
!=
ECesiumEncodedMetadataType::None
&&
112
ComponentType
!=
ECesiumEncodedMetadataComponentType::None
;
113
}
114
};
ECesiumFeatureIdSetType::None
@ None
Definition
CesiumFeatureIdSet.h:22
ECesiumEncodedMetadataConversion
ECesiumEncodedMetadataConversion
Indicates how a property value from EXT_structural_metadata should be converted to a GPU-accessible t...
Definition
CesiumMetadataEncodingDetails.h:36
ECesiumEncodedMetadataConversion::ParseColorFromString
@ ParseColorFromString
Attempt to parse a color from a string property value.
Definition
CesiumMetadataEncodingDetails.h:54
ECesiumEncodedMetadataConversion::Coerce
@ Coerce
Coerce the components of a property value to the specified component type.
Definition
CesiumMetadataEncodingDetails.h:47
ECesiumEncodedMetadataType
ECesiumEncodedMetadataType
The type that a metadata property's values will be encoded as.
Definition
CesiumMetadataEncodingDetails.h:23
ECesiumEncodedMetadataType::Vec3
@ Vec3
Definition
CesiumMetadataEncodingDetails.h:27
ECesiumEncodedMetadataType::None
@ None
Definition
CesiumMetadataEncodingDetails.h:24
ECesiumEncodedMetadataType::Scalar
@ Scalar
Definition
CesiumMetadataEncodingDetails.h:25
ECesiumEncodedMetadataType::Vec4
@ Vec4
Definition
CesiumMetadataEncodingDetails.h:28
ECesiumEncodedMetadataType::Vec2
@ Vec2
Definition
CesiumMetadataEncodingDetails.h:26
ECesiumEncodedMetadataComponentType
ECesiumEncodedMetadataComponentType
The component type that a metadata property's values will be encoded as.
Definition
CesiumMetadataEncodingDetails.h:17
ECesiumEncodedMetadataComponentType::Float
@ Float
Definition
CesiumMetadataEncodingDetails.h:17
ECesiumEncodedMetadataComponentType::Uint8
@ Uint8
Definition
CesiumMetadataEncodingDetails.h:17
ECesiumEncodedMetadataComponentType::None
@ None
Definition
CesiumMetadataEncodingDetails.h:17
CesiumMetadataValueType.h
FCesiumMetadataEncodingDetails::FCesiumMetadataEncodingDetails
FCesiumMetadataEncodingDetails(ECesiumEncodedMetadataType InType, ECesiumEncodedMetadataComponentType InComponentType, ECesiumEncodedMetadataConversion InConversion)
Definition
CesiumMetadataEncodingDetails.h:70
FCesiumMetadataEncodingDetails::FCesiumMetadataEncodingDetails
FCesiumMetadataEncodingDetails()
Definition
CesiumMetadataEncodingDetails.h:65
FCesiumMetadataEncodingDetails::Conversion
ECesiumEncodedMetadataConversion Conversion
The method of conversion used for this property.
Definition
CesiumMetadataEncodingDetails.h:98
FCesiumMetadataEncodingDetails::HasValidType
bool HasValidType() const
Definition
CesiumMetadataEncodingDetails.h:110
FCesiumMetadataEncodingDetails::ComponentType
ECesiumEncodedMetadataComponentType ComponentType
The GPU-compatible component type that this property's values will be encoded as.
Definition
CesiumMetadataEncodingDetails.h:90
FCesiumMetadataEncodingDetails::operator!=
bool operator!=(const FCesiumMetadataEncodingDetails &Info) const
Definition
CesiumMetadataEncodingDetails.h:105
FCesiumMetadataEncodingDetails::Type
ECesiumEncodedMetadataType Type
The GPU-compatible type that this property's values will be encoded as.
Definition
CesiumMetadataEncodingDetails.h:82
Source
CesiumRuntime
Public
CesiumMetadataEncodingDetails.h
Generated by
1.13.2