Skip to content

Commit aac4e11

Browse files
committed
Merge remote-tracking branch 'origin/main' into cesium.com
2 parents 68bc873 + c9bbe1b commit aac4e11

File tree

29 files changed

+734
-32
lines changed

29 files changed

+734
-32
lines changed

CHANGES.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,26 @@
11
# Change Log
22

3+
### ? - ?
4+
5+
##### Breaking Changes :mega:
6+
7+
- Removed `TilesetOptions::maximumSimultaneousSubtreeLoads` because it was unused.
8+
9+
##### Additions :tada:
10+
11+
- Added `convertPropertyComponentTypeToAccessorComponentType` to `PropertyType`.
12+
- Added support for `3DTILES_ellipsoid` in `Cesium3DTiles`, `Cesium3DTilesReader`, and `Cesium3DTilesWriter`.
13+
14+
##### Fixes :wrench:
15+
16+
- Fixed parsing URIs that have a scheme followed by `:` instead of `://`.
17+
18+
### v0.44.2 - 2025-02-10
19+
20+
##### Fixes :wrench:
21+
22+
- Fixed a bug in `GltfUtilities::parseGltfCopyright` that could cause a crash when the copyright ends with a semicolon.
23+
324
### v0.44.1 - 2025-02-03
425

526
##### Fixes :wrench:

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ endif()
8787
include("cmake/defaults.cmake")
8888

8989
project(cesium-native
90-
VERSION 0.44.0
90+
VERSION 0.44.2
9191
LANGUAGES CXX C
9292
)
9393

Cesium3DTiles/generated/include/Cesium3DTiles/Class.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,11 @@ struct CESIUM3DTILES_API Class final : public CesiumUtility::ExtensibleObject {
3737
*/
3838
std::unordered_map<std::string, Cesium3DTiles::ClassProperty> properties;
3939

40+
/**
41+
* @brief Experimental. The parent class ID.
42+
*/
43+
std::optional<std::string> parent;
44+
4045
/**
4146
* @brief Calculates the size in bytes of this object, including the contents
4247
* of all collections, pointers, and strings. This will NOT include the size
@@ -61,6 +66,9 @@ struct CESIUM3DTILES_API Class final : public CesiumUtility::ExtensibleObject {
6166
accum += int64_t(k.capacity() * sizeof(char) - sizeof(std::string));
6267
accum += v.getSizeBytes() - int64_t(sizeof(Cesium3DTiles::ClassProperty));
6368
}
69+
if (this->parent) {
70+
accum += int64_t(this->parent->capacity() * sizeof(char));
71+
}
6472
return accum;
6573
}
6674
};
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
// This file was generated by generate-classes.
2+
// DO NOT EDIT THIS FILE!
3+
#pragma once
4+
5+
#include <Cesium3DTiles/Library.h>
6+
#include <CesiumUtility/ExtensibleObject.h>
7+
8+
#include <optional>
9+
#include <string>
10+
#include <vector>
11+
12+
namespace Cesium3DTiles {
13+
/**
14+
* @brief 3DTILES_ellipsoid extension data to define the referenced ellipsoid
15+
*/
16+
struct CESIUM3DTILES_API Extension3dTilesEllipsoid final
17+
: public CesiumUtility::ExtensibleObject {
18+
/**
19+
* @brief The original name of this type.
20+
*/
21+
static constexpr const char* TypeName = "Extension3dTilesEllipsoid";
22+
/** @brief The official name of the extension. This should be the same as its
23+
* key in the `extensions` object. */
24+
static constexpr const char* ExtensionName = "3DTILES_ellipsoid";
25+
26+
/**
27+
* @brief Name of the body the ellipsoid represents, or 'none'
28+
*/
29+
std::optional<std::string> body;
30+
31+
/**
32+
* @brief An array of three numbers that define the X, Y and Z radii values in
33+
* meters for the ellipsoid
34+
*/
35+
std::vector<double> radii;
36+
37+
/**
38+
* @brief Calculates the size in bytes of this object, including the contents
39+
* of all collections, pointers, and strings. This will NOT include the size
40+
* of any extensions attached to the object. Calling this method may be slow
41+
* as it requires traversing the object's entire structure.
42+
*/
43+
int64_t getSizeBytes() const {
44+
int64_t accum = 0;
45+
accum += int64_t(sizeof(Extension3dTilesEllipsoid));
46+
accum += CesiumUtility::ExtensibleObject::getSizeBytes() -
47+
int64_t(sizeof(CesiumUtility::ExtensibleObject));
48+
if (this->body) {
49+
accum += int64_t(this->body->capacity() * sizeof(char));
50+
}
51+
accum += int64_t(sizeof(double) * this->radii.capacity());
52+
return accum;
53+
}
54+
};
55+
} // namespace Cesium3DTiles
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
// This file was generated by generate-classes.
2+
// DO NOT EDIT THIS FILE!
3+
#pragma once
4+
5+
#include <Cesium3DTiles/Extension3dTilesEllipsoid.h>
6+
#include <Cesium3DTilesReader/Library.h>
7+
#include <CesiumJsonReader/JsonReader.h>
8+
#include <CesiumJsonReader/JsonReaderOptions.h>
9+
10+
#include <rapidjson/fwd.h>
11+
12+
#include <span>
13+
#include <vector>
14+
15+
namespace Cesium3DTiles {
16+
struct Extension3dTilesEllipsoid;
17+
} // namespace Cesium3DTiles
18+
19+
namespace Cesium3DTilesReader {
20+
21+
/**
22+
* @brief Reads \ref Cesium3DTiles::Extension3dTilesEllipsoid
23+
* "Extension3dTilesEllipsoid" instances from JSON.
24+
*/
25+
class CESIUM3DTILESREADER_API Extension3dTilesEllipsoidReader {
26+
public:
27+
/**
28+
* @brief Constructs a new instance.
29+
*/
30+
Extension3dTilesEllipsoidReader();
31+
32+
/**
33+
* @brief Gets the options controlling how the JSON is read.
34+
*/
35+
CesiumJsonReader::JsonReaderOptions& getOptions();
36+
37+
/**
38+
* @brief Gets the options controlling how the JSON is read.
39+
*/
40+
const CesiumJsonReader::JsonReaderOptions& getOptions() const;
41+
42+
/**
43+
* @brief Reads an instance of Extension3dTilesEllipsoid from a byte buffer.
44+
*
45+
* @param data The buffer from which to read the instance.
46+
* @return The result of reading the instance.
47+
*/
48+
CesiumJsonReader::ReadJsonResult<Cesium3DTiles::Extension3dTilesEllipsoid>
49+
readFromJson(const std::span<const std::byte>& data) const;
50+
51+
/**
52+
* @brief Reads an instance of Extension3dTilesEllipsoid from a
53+
* rapidJson::Value.
54+
*
55+
* @param value The value from which to read the instance.
56+
* @return The result of reading the instance.
57+
*/
58+
CesiumJsonReader::ReadJsonResult<Cesium3DTiles::Extension3dTilesEllipsoid>
59+
readFromJson(const rapidjson::Value& value) const;
60+
61+
/**
62+
* @brief Reads an array of instances of Extension3dTilesEllipsoid from a
63+
* rapidJson::Value.
64+
*
65+
* @param value The value from which to read the array of instances.
66+
* @return The result of reading the array of instances.
67+
*/
68+
CesiumJsonReader::ReadJsonResult<
69+
std::vector<Cesium3DTiles::Extension3dTilesEllipsoid>>
70+
readArrayFromJson(const rapidjson::Value& value) const;
71+
72+
private:
73+
CesiumJsonReader::JsonReaderOptions _options;
74+
};
75+
76+
} // namespace Cesium3DTilesReader

Cesium3DTilesReader/generated/src/ClassJsonHandler.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,5 +38,6 @@ class ClassJsonHandler : public CesiumJsonReader::ExtensibleObjectJsonHandler {
3838
Cesium3DTiles::ClassProperty,
3939
ClassPropertyJsonHandler>
4040
_properties;
41+
CesiumJsonReader::StringJsonHandler _parent;
4142
};
4243
} // namespace Cesium3DTilesReader
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
// This file was generated by generate-classes.
2+
// DO NOT EDIT THIS FILE!
3+
#pragma once
4+
5+
#include <Cesium3DTiles/Extension3dTilesEllipsoid.h>
6+
#include <CesiumJsonReader/ArrayJsonHandler.h>
7+
#include <CesiumJsonReader/DoubleJsonHandler.h>
8+
#include <CesiumJsonReader/ExtensibleObjectJsonHandler.h>
9+
#include <CesiumJsonReader/StringJsonHandler.h>
10+
11+
namespace CesiumJsonReader {
12+
class JsonReaderOptions;
13+
} // namespace CesiumJsonReader
14+
15+
namespace Cesium3DTilesReader {
16+
class Extension3dTilesEllipsoidJsonHandler
17+
: public CesiumJsonReader::ExtensibleObjectJsonHandler,
18+
public CesiumJsonReader::IExtensionJsonHandler {
19+
public:
20+
using ValueType = Cesium3DTiles::Extension3dTilesEllipsoid;
21+
22+
static constexpr const char* ExtensionName = "3DTILES_ellipsoid";
23+
24+
explicit Extension3dTilesEllipsoidJsonHandler(
25+
const CesiumJsonReader::JsonReaderOptions& options) noexcept;
26+
void reset(
27+
IJsonHandler* pParentHandler,
28+
Cesium3DTiles::Extension3dTilesEllipsoid* pObject);
29+
30+
IJsonHandler* readObjectKey(const std::string_view& str) override;
31+
32+
void reset(
33+
IJsonHandler* pParentHandler,
34+
CesiumUtility::ExtensibleObject& o,
35+
const std::string_view& extensionName) override;
36+
37+
IJsonHandler& getHandler() override { return *this; }
38+
39+
protected:
40+
IJsonHandler* readObjectKeyExtension3dTilesEllipsoid(
41+
const std::string& objectType,
42+
const std::string_view& str,
43+
Cesium3DTiles::Extension3dTilesEllipsoid& o);
44+
45+
private:
46+
Cesium3DTiles::Extension3dTilesEllipsoid* _pObject = nullptr;
47+
CesiumJsonReader::StringJsonHandler _body;
48+
CesiumJsonReader::
49+
ArrayJsonHandler<double, CesiumJsonReader::DoubleJsonHandler>
50+
_radii;
51+
};
52+
} // namespace Cesium3DTilesReader

Cesium3DTilesReader/generated/src/GeneratedJsonHandlers.cpp

Lines changed: 125 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,126 @@ Extension3dTilesBoundingVolumeS2Reader::readArrayFromJson(
126126
return CesiumJsonReader::JsonReader::readJson(value, handler);
127127
}
128128

129+
} // namespace Cesium3DTilesReader
130+
// This file was generated by generate-classes.
131+
// DO NOT EDIT THIS FILE!
132+
// NOLINTBEGIN(readability-duplicate-include)
133+
#include "Extension3dTilesEllipsoidJsonHandler.h"
134+
#include "registerReaderExtensions.h"
135+
136+
#include <Cesium3DTiles/Extension3dTilesEllipsoid.h>
137+
#include <Cesium3DTilesReader/Extension3dTilesEllipsoidReader.h>
138+
#include <CesiumJsonReader/ArrayJsonHandler.h>
139+
#include <CesiumJsonReader/ExtensibleObjectJsonHandler.h>
140+
#include <CesiumJsonReader/IJsonHandler.h>
141+
#include <CesiumJsonReader/JsonReader.h>
142+
#include <CesiumUtility/Assert.h>
143+
#include <CesiumUtility/ExtensibleObject.h>
144+
145+
#include <rapidjson/document.h>
146+
147+
#include <any>
148+
#include <cstddef>
149+
#include <span>
150+
#include <string>
151+
#include <string_view>
152+
#include <vector>
153+
// NOLINTEND(readability-duplicate-include)
154+
155+
namespace Cesium3DTilesReader {
156+
157+
Extension3dTilesEllipsoidJsonHandler::Extension3dTilesEllipsoidJsonHandler(
158+
const CesiumJsonReader::JsonReaderOptions& options) noexcept
159+
: CesiumJsonReader::ExtensibleObjectJsonHandler(options),
160+
_body(),
161+
_radii() {}
162+
163+
void Extension3dTilesEllipsoidJsonHandler::reset(
164+
CesiumJsonReader::IJsonHandler* pParentHandler,
165+
Cesium3DTiles::Extension3dTilesEllipsoid* pObject) {
166+
CesiumJsonReader::ExtensibleObjectJsonHandler::reset(pParentHandler, pObject);
167+
this->_pObject = pObject;
168+
}
169+
170+
CesiumJsonReader::IJsonHandler*
171+
Extension3dTilesEllipsoidJsonHandler::readObjectKey(
172+
const std::string_view& str) {
173+
CESIUM_ASSERT(this->_pObject);
174+
return this->readObjectKeyExtension3dTilesEllipsoid(
175+
Cesium3DTiles::Extension3dTilesEllipsoid::TypeName,
176+
str,
177+
*this->_pObject);
178+
}
179+
180+
void Extension3dTilesEllipsoidJsonHandler::reset(
181+
CesiumJsonReader::IJsonHandler* pParentHandler,
182+
CesiumUtility::ExtensibleObject& o,
183+
const std::string_view& extensionName) {
184+
std::any& value =
185+
o.extensions
186+
.emplace(extensionName, Cesium3DTiles::Extension3dTilesEllipsoid())
187+
.first->second;
188+
this->reset(
189+
pParentHandler,
190+
&std::any_cast<Cesium3DTiles::Extension3dTilesEllipsoid&>(value));
191+
}
192+
193+
CesiumJsonReader::IJsonHandler*
194+
Extension3dTilesEllipsoidJsonHandler::readObjectKeyExtension3dTilesEllipsoid(
195+
const std::string& objectType,
196+
const std::string_view& str,
197+
Cesium3DTiles::Extension3dTilesEllipsoid& o) {
198+
using namespace std::string_literals;
199+
200+
if ("body"s == str) {
201+
return property("body", this->_body, o.body);
202+
}
203+
if ("radii"s == str) {
204+
return property("radii", this->_radii, o.radii);
205+
}
206+
207+
return this->readObjectKeyExtensibleObject(objectType, str, *this->_pObject);
208+
}
209+
210+
Extension3dTilesEllipsoidReader::Extension3dTilesEllipsoidReader() {
211+
registerReaderExtensions(this->_options);
212+
}
213+
214+
CesiumJsonReader::JsonReaderOptions&
215+
Extension3dTilesEllipsoidReader::getOptions() {
216+
return this->_options;
217+
}
218+
219+
const CesiumJsonReader::JsonReaderOptions&
220+
Extension3dTilesEllipsoidReader::getOptions() const {
221+
return this->_options;
222+
}
223+
224+
CesiumJsonReader::ReadJsonResult<Cesium3DTiles::Extension3dTilesEllipsoid>
225+
Extension3dTilesEllipsoidReader::readFromJson(
226+
const std::span<const std::byte>& data) const {
227+
Extension3dTilesEllipsoidJsonHandler handler(this->_options);
228+
return CesiumJsonReader::JsonReader::readJson(data, handler);
229+
}
230+
231+
CesiumJsonReader::ReadJsonResult<Cesium3DTiles::Extension3dTilesEllipsoid>
232+
Extension3dTilesEllipsoidReader::readFromJson(
233+
const rapidjson::Value& value) const {
234+
Extension3dTilesEllipsoidJsonHandler handler(this->_options);
235+
return CesiumJsonReader::JsonReader::readJson(value, handler);
236+
}
237+
238+
CesiumJsonReader::ReadJsonResult<
239+
std::vector<Cesium3DTiles::Extension3dTilesEllipsoid>>
240+
Extension3dTilesEllipsoidReader::readArrayFromJson(
241+
const rapidjson::Value& value) const {
242+
CesiumJsonReader::ArrayJsonHandler<
243+
Cesium3DTiles::Extension3dTilesEllipsoid,
244+
Extension3dTilesEllipsoidJsonHandler>
245+
handler(this->_options);
246+
return CesiumJsonReader::JsonReader::readJson(value, handler);
247+
}
248+
129249
} // namespace Cesium3DTilesReader
130250
// This file was generated by generate-classes.
131251
// DO NOT EDIT THIS FILE!
@@ -786,7 +906,8 @@ ClassJsonHandler::ClassJsonHandler(
786906
: CesiumJsonReader::ExtensibleObjectJsonHandler(options),
787907
_name(),
788908
_description(),
789-
_properties(options) {}
909+
_properties(options),
910+
_parent() {}
790911

791912
void ClassJsonHandler::reset(
792913
CesiumJsonReader::IJsonHandler* pParentHandler,
@@ -819,6 +940,9 @@ CesiumJsonReader::IJsonHandler* ClassJsonHandler::readObjectKeyClass(
819940
if ("properties"s == str) {
820941
return property("properties", this->_properties, o.properties);
821942
}
943+
if ("parent"s == str) {
944+
return property("parent", this->_parent, o.parent);
945+
}
822946

823947
return this->readObjectKeyExtensibleObject(objectType, str, *this->_pObject);
824948
}

0 commit comments

Comments
 (0)