Skip to content

Commit 3c10ef7

Browse files
committed
Added support in the glTF codegen to force optional props as required
1 parent a4c50b1 commit 3c10ef7

File tree

3 files changed

+31
-11
lines changed

3 files changed

+31
-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: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,28 @@ 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 requireOptionalProps = thisConfig.requireOptionalProps;
53+
console.log(requireOptionalProps);
54+
console.log(schema.properties);
55+
if (Array.isArray(requireOptionalProps) && requireOptionalProps.length > 0) {
56+
const validProps = Object.keys(schema.properties || {});
57+
for (const prop of requireOptionalProps) {
58+
if (!validProps.includes(prop)) {
59+
// Skip invalid properties.
60+
continue;
61+
}
62+
63+
if (required.includes(prop)) {
64+
// Don't add props to list if they're already in `required`.
65+
continue;
66+
}
67+
68+
required.push(prop);
69+
}
70+
}
71+
console.log(required);
72+
5173
const properties = Object.keys(schema.properties || {})
5274
.map((key) =>
5375
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+
"requireOptionalProps": [
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)