Skip to content

Commit 7413afb

Browse files
authored
Merge pull request #1310 from CesiumGS/gsplat-rc-autogen
Added support in the glTF codegen to force optional props as required
2 parents 44d5ea7 + f4fa39c commit 7413afb

File tree

3 files changed

+28
-11
lines changed

3 files changed

+28
-11
lines changed

CesiumGltfWriter/generated/src/ModelJsonWriter.cpp

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1198,17 +1198,11 @@ void writeJson(
11981198
jsonWriter.Key("colorSpace");
11991199
writeJson(obj.colorSpace, jsonWriter, context);
12001200

1201-
if (obj.projection !=
1202-
CesiumGltf::ExtensionKhrGaussianSplatting::Projection::perspective) {
1203-
jsonWriter.Key("projection");
1204-
writeJson(obj.projection, jsonWriter, context);
1205-
}
1201+
jsonWriter.Key("projection");
1202+
writeJson(obj.projection, jsonWriter, context);
12061203

1207-
if (obj.sortingMethod != CesiumGltf::ExtensionKhrGaussianSplatting::
1208-
SortingMethod::cameraDistance) {
1209-
jsonWriter.Key("sortingMethod");
1210-
writeJson(obj.sortingMethod, jsonWriter, context);
1211-
}
1204+
jsonWriter.Key("sortingMethod");
1205+
writeJson(obj.sortingMethod, jsonWriter, context);
12121206

12131207
writeExtensibleObject(obj, jsonWriter, context);
12141208

tools/generate-classes/generate.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,25 @@ function generate(options, schema, writers) {
4848

4949
const required = schema.required || [];
5050

51+
// Allows us to force specific optional props as required to meet occasional extension recommendations.
52+
const requireOptionalProperties = thisConfig.requireOptionalProperties;
53+
if (Array.isArray(requireOptionalProperties) && requireOptionalProperties.length > 0) {
54+
const validProperties = Object.keys(schema.properties || {});
55+
for (const property of requireOptionalProperties) {
56+
if (!validProperties.includes(property)) {
57+
// Skip invalid properties.
58+
continue;
59+
}
60+
61+
if (required.includes(property)) {
62+
// Don't add properties to list if they're already in `required`.
63+
continue;
64+
}
65+
66+
required.push(property);
67+
}
68+
}
69+
5170
const properties = Object.keys(schema.properties || {})
5271
.map((key) =>
5372
resolveProperty(

tools/generate-classes/glTF.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,11 @@
165165
"overrideName": "ExtensionExtPrimitiveVoxels"
166166
},
167167
"KHR_gaussian_splatting glTF Mesh Primitive Extension": {
168-
"overrideName": "ExtensionKhrGaussianSplatting"
168+
"overrideName": "ExtensionKhrGaussianSplatting",
169+
"requireOptionalProperties": [
170+
"projection",
171+
"sortingMethod"
172+
]
169173
},
170174
"KHR_gaussian_splatting_compression_spz_2 glTF Mesh Primitive Extension": {
171175
"overrideName": "ExtensionKhrGaussianSplattingCompressionSpz2"

0 commit comments

Comments
 (0)