5#include <Cesium3DTiles/Library.h>
6#include <CesiumUtility/ExtensibleObject.h>
7#include <CesiumUtility/JsonValue.h>
22 static constexpr const char* TypeName =
"ClassProperty";
29 inline static const std::string SCALAR =
"SCALAR";
32 inline static const std::string VEC2 =
"VEC2";
35 inline static const std::string VEC3 =
"VEC3";
38 inline static const std::string VEC4 =
"VEC4";
41 inline static const std::string MAT2 =
"MAT2";
44 inline static const std::string MAT3 =
"MAT3";
47 inline static const std::string MAT4 =
"MAT4";
50 inline static const std::string STRING =
"STRING";
53 inline static const std::string BOOLEAN =
"BOOLEAN";
56 inline static const std::string ENUM =
"ENUM";
65 inline static const std::string INT8 =
"INT8";
68 inline static const std::string UINT8 =
"UINT8";
71 inline static const std::string INT16 =
"INT16";
74 inline static const std::string UINT16 =
"UINT16";
77 inline static const std::string INT32 =
"INT32";
80 inline static const std::string UINT32 =
"UINT32";
83 inline static const std::string INT64 =
"INT64";
86 inline static const std::string UINT64 =
"UINT64";
89 inline static const std::string FLOAT32 =
"FLOAT32";
92 inline static const std::string FLOAT64 =
"FLOAT64";
98 std::optional<std::string>
name;
111 std::string type = Type::SCALAR;
149 bool normalized =
false;
157 std::optional<CesiumUtility::JsonValue>
offset;
165 std::optional<CesiumUtility::JsonValue>
scale;
173 std::optional<CesiumUtility::JsonValue>
max;
181 std::optional<CesiumUtility::JsonValue>
min;
190 bool required =
false;
199 std::optional<CesiumUtility::JsonValue>
noData;
227 accum += int64_t(this->name->capacity() *
sizeof(
char));
229 if (this->description) {
230 accum += int64_t(this->description->capacity() *
sizeof(
char));
232 if (this->enumType) {
233 accum += int64_t(this->enumType->capacity() *
sizeof(
char));
235 if (this->semantic) {
236 accum += int64_t(this->semantic->capacity() *
sizeof(
char));
Classes for using 3D Tiles.
Known values for The datatype of the element's components. Required for SCALAR, VECN,...
Known values for The element type.
A single property of a metadata class.
std::optional< CesiumUtility::JsonValue > noData
A noData value represents missing data — also known as a sentinel value — wherever it appears....
std::optional< CesiumUtility::JsonValue > offset
An offset to apply to property values. Only applicable to SCALAR, VECN, and MATN types when the compo...
std::optional< std::string > description
The description of the property.
int64_t getSizeBytes() const
Calculates the size in bytes of this object, including the contents of all collections,...
std::optional< std::string > semantic
An identifier that describes how this property should be interpreted. The semantic cannot be used by ...
std::optional< CesiumUtility::JsonValue > scale
A scale to apply to property values. Only applicable to SCALAR, VECN, and MATN types when the compone...
std::optional< std::string > componentType
The datatype of the element's components. Required for SCALAR, VECN, and MATN types,...
std::optional< CesiumUtility::JsonValue > max
Maximum allowed value for the property. Only applicable to SCALAR, VECN, and MATN types....
std::optional< CesiumUtility::JsonValue > min
Minimum allowed value for the property. Only applicable to SCALAR, VECN, and MATN types....
std::optional< std::string > enumType
Enum ID as declared in the enums dictionary. Required when type is ENUM. Disallowed when type is not ...
std::optional< int64_t > count
The number of array elements. May only be defined when array is true.
std::optional< std::string > name
The name of the property, e.g. for display purposes.
std::optional< CesiumUtility::JsonValue > defaultProperty
A default value to use when encountering a noData value or an omitted property. The value is given in...
The base class for objects that have extensions and extras.
int64_t getSizeBytes() const
Calculates the size in bytes of this ExtensibleObject, including all of its extras but NOT including ...