23 GENERATED_USTRUCT_BODY()
26#pragma region ValueType declaration
28 using ValueType = swl::variant<
45 glm::vec<2, uint16_t>,
47 glm::vec<2, uint32_t>,
49 glm::vec<2, uint64_t>,
55 glm::vec<3, uint16_t>,
57 glm::vec<3, uint32_t>,
59 glm::vec<3, uint64_t>,
65 glm::vec<4, uint16_t>,
67 glm::vec<4, uint32_t>,
69 glm::vec<4, uint64_t>,
72 glm::mat<2, 2, int8_t>,
73 glm::mat<2, 2, uint8_t>,
74 glm::mat<2, 2, int16_t>,
75 glm::mat<2, 2, uint16_t>,
76 glm::mat<2, 2, int32_t>,
77 glm::mat<2, 2, uint32_t>,
78 glm::mat<2, 2, int64_t>,
79 glm::mat<2, 2, uint64_t>,
80 glm::mat<2, 2, float>,
81 glm::mat<2, 2, double>,
82 glm::mat<3, 3, int8_t>,
83 glm::mat<3, 3, uint8_t>,
84 glm::mat<3, 3, int16_t>,
85 glm::mat<3, 3, uint16_t>,
86 glm::mat<3, 3, int32_t>,
87 glm::mat<3, 3, uint32_t>,
88 glm::mat<3, 3, int64_t>,
89 glm::mat<3, 3, uint64_t>,
90 glm::mat<3, 3, float>,
91 glm::mat<3, 3, double>,
92 glm::mat<4, 4, int8_t>,
93 glm::mat<4, 4, uint8_t>,
94 glm::mat<4, 4, int16_t>,
95 glm::mat<4, 4, uint16_t>,
96 glm::mat<4, 4, int32_t>,
97 glm::mat<4, 4, uint32_t>,
98 glm::mat<4, 4, int64_t>,
99 glm::mat<4, 4, uint64_t>,
100 glm::mat<4, 4, float>,
101 glm::mat<4, 4, double>,
113 ArrayView<std::string_view>,
114 ArrayView<glm::vec<2, int8_t>>,
115 ArrayView<glm::vec<2, uint8_t>>,
116 ArrayView<glm::vec<2, int16_t>>,
117 ArrayView<glm::vec<2, uint16_t>>,
118 ArrayView<glm::vec<2, int32_t>>,
119 ArrayView<glm::vec<2, uint32_t>>,
120 ArrayView<glm::vec<2, int64_t>>,
121 ArrayView<glm::vec<2, uint64_t>>,
122 ArrayView<glm::vec<2, float>>,
123 ArrayView<glm::vec<2, double>>,
124 ArrayView<glm::vec<3, int8_t>>,
125 ArrayView<glm::vec<3, uint8_t>>,
126 ArrayView<glm::vec<3, int16_t>>,
127 ArrayView<glm::vec<3, uint16_t>>,
128 ArrayView<glm::vec<3, int32_t>>,
129 ArrayView<glm::vec<3, uint32_t>>,
130 ArrayView<glm::vec<3, int64_t>>,
131 ArrayView<glm::vec<3, uint64_t>>,
132 ArrayView<glm::vec<3, float>>,
133 ArrayView<glm::vec<3, double>>,
134 ArrayView<glm::vec<4, int8_t>>,
135 ArrayView<glm::vec<4, uint8_t>>,
136 ArrayView<glm::vec<4, int16_t>>,
137 ArrayView<glm::vec<4, uint16_t>>,
138 ArrayView<glm::vec<4, int32_t>>,
139 ArrayView<glm::vec<4, uint32_t>>,
140 ArrayView<glm::vec<4, int64_t>>,
141 ArrayView<glm::vec<4, uint64_t>>,
142 ArrayView<glm::vec<4, float>>,
143 ArrayView<glm::vec<4, double>>,
144 ArrayView<glm::mat<2, 2, int8_t>>,
145 ArrayView<glm::mat<2, 2, uint8_t>>,
146 ArrayView<glm::mat<2, 2, int16_t>>,
147 ArrayView<glm::mat<2, 2, uint16_t>>,
148 ArrayView<glm::mat<2, 2, int32_t>>,
149 ArrayView<glm::mat<2, 2, uint32_t>>,
150 ArrayView<glm::mat<2, 2, int64_t>>,
151 ArrayView<glm::mat<2, 2, uint64_t>>,
152 ArrayView<glm::mat<2, 2, float>>,
153 ArrayView<glm::mat<2, 2, double>>,
154 ArrayView<glm::mat<3, 3, int8_t>>,
155 ArrayView<glm::mat<3, 3, uint8_t>>,
156 ArrayView<glm::mat<3, 3, int16_t>>,
157 ArrayView<glm::mat<3, 3, uint16_t>>,
158 ArrayView<glm::mat<3, 3, int32_t>>,
159 ArrayView<glm::mat<3, 3, uint32_t>>,
160 ArrayView<glm::mat<3, 3, int64_t>>,
161 ArrayView<glm::mat<3, 3, uint64_t>>,
162 ArrayView<glm::mat<3, 3, float>>,
163 ArrayView<glm::mat<3, 3, double>>,
164 ArrayView<glm::mat<4, 4, int8_t>>,
165 ArrayView<glm::mat<4, 4, uint8_t>>,
166 ArrayView<glm::mat<4, 4, int16_t>>,
167 ArrayView<glm::mat<4, 4, uint16_t>>,
168 ArrayView<glm::mat<4, 4, int32_t>>,
169 ArrayView<glm::mat<4, 4, uint32_t>>,
170 ArrayView<glm::mat<4, 4, int64_t>>,
171 ArrayView<glm::mat<4, 4, uint64_t>>,
172 ArrayView<glm::mat<4, 4, float>>,
173 ArrayView<glm::mat<4, 4, double>>>;
181 : _value(swl::monostate{}),
184 _pEnumDefinition() {}
193 template <
typename T>
196 const TSharedPtr<FCesiumMetadataEnum>& pEnumDefinition)
198 _valueType(TypeToMetadataValueType<T>(pEnumDefinition)),
200 _pEnumDefinition(pEnumDefinition) {}
207 template <
typename T>
213 template <
typename ArrayType>
216 const TSharedPtr<FCesiumMetadataEnum>& pEnumDefinition =
nullptr)
218 CesiumGltf::PropertyArrayCopy<ArrayType>(Copy),
221 template <
typename ArrayType>
224 const TSharedPtr<FCesiumMetadataEnum>& pEnumDefinition =
nullptr)
227 TypeToMetadataValueType<
CesiumGltf::PropertyArrayView<ArrayType>>(
230 _pEnumDefinition(pEnumDefinition) {
231 this->_value = std::move(Copy).toViewAndExternalBuffer(this->_storage);
241 template <
typename T>
243 const std::optional<T>& MaybeValue,
244 const TSharedPtr<FCesiumMetadataEnum>& pEnumDefinition =
nullptr)
245 : _value(), _valueType(), _storage(), _pEnumDefinition(pEnumDefinition) {
251 this->_value = std::move(temp._value);
252 this->_valueType = std::move(temp._valueType);
253 this->_storage = std::move(temp._storage);
264 std::vector<std::byte> _storage;
265 TSharedPtr<FCesiumMetadataEnum> _pEnumDefinition;