@flighthq/scene-document 0.4.1-next.28.7f8e221 → 0.4.1-next.37.ff47e13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/contract.d.ts +1 -0
- package/dist/contract.d.ts.map +1 -1
- package/dist/contract.js +1 -0
- package/dist/contract.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/sceneDocumentScene2DMaterialization.d.ts.map +1 -1
- package/dist/sceneDocumentScene2DMaterialization.js +56 -0
- package/dist/sceneDocumentScene2DMaterialization.js.map +1 -1
- package/dist/sceneDocumentScene3DMaterialization.d.ts +7 -0
- package/dist/sceneDocumentScene3DMaterialization.d.ts.map +1 -0
- package/dist/sceneDocumentScene3DMaterialization.js +381 -0
- package/dist/sceneDocumentScene3DMaterialization.js.map +1 -0
- package/package.json +13 -5
- package/src/sceneDocumentScene3DMaterialization.test.ts +446 -0
package/README.md
CHANGED
|
@@ -13,5 +13,5 @@ Import the supported application-facing API from `@flighthq/scene-document`. The
|
|
|
13
13
|
This package is part of the locked-version Flight SDK graph. Applications may instead install and import `@flighthq/sdk` when package-level tree shaking is sufficient.
|
|
14
14
|
|
|
15
15
|
- [Flight project](https://github.com/flighthq/flight)
|
|
16
|
-
- [Source for @flighthq/scene-document@0.4.1-next.
|
|
17
|
-
- [License](https://github.com/flighthq/flight/blob/
|
|
16
|
+
- [Source for @flighthq/scene-document@0.4.1-next.37.ff47e13](https://github.com/flighthq/flight/tree/ff47e13b6a3d240aead13b8373c7844a660897f7/packages/scene-document)
|
|
17
|
+
- [License](https://github.com/flighthq/flight/blob/ff47e13b6a3d240aead13b8373c7844a660897f7/LICENSE.md)
|
package/dist/contract.d.ts
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
export { createFlightDocumentFromScene2D, createFlightDocumentScene2DMaterialization, createFlightDocumentScene2DMaterializationFromText, explainFlightDocumentRefusal, explainFlightDocumentRefusalFromText, serializeFlightDocument, } from './sceneDocumentScene2DMaterialization';
|
|
2
|
+
export { createFlightDocumentFromScene3D, createFlightDocumentScene3DMaterialization, createFlightDocumentScene3DMaterializationFromText, explainFlightDocumentScene3DRefusal, explainFlightDocumentScene3DRefusalFromText, } from './sceneDocumentScene3DMaterialization';
|
|
2
3
|
//# sourceMappingURL=contract.d.ts.map
|
package/dist/contract.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,0CAA0C,EAC1C,kDAAkD,EAClD,4BAA4B,EAC5B,oCAAoC,EACpC,uBAAuB,GACxB,MAAM,uCAAuC,CAAC"}
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,0CAA0C,EAC1C,kDAAkD,EAClD,4BAA4B,EAC5B,oCAAoC,EACpC,uBAAuB,GACxB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,+BAA+B,EAC/B,0CAA0C,EAC1C,kDAAkD,EAClD,mCAAmC,EACnC,2CAA2C,GAC5C,MAAM,uCAAuC,CAAC"}
|
package/dist/contract.js
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
export { createFlightDocumentFromScene2D, createFlightDocumentScene2DMaterialization, createFlightDocumentScene2DMaterializationFromText, explainFlightDocumentRefusal, explainFlightDocumentRefusalFromText, serializeFlightDocument, } from './sceneDocumentScene2DMaterialization';
|
|
2
|
+
export { createFlightDocumentFromScene3D, createFlightDocumentScene3DMaterialization, createFlightDocumentScene3DMaterializationFromText, explainFlightDocumentScene3DRefusal, explainFlightDocumentScene3DRefusalFromText, } from './sceneDocumentScene3DMaterialization';
|
|
2
3
|
//# sourceMappingURL=contract.js.map
|
package/dist/contract.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,0CAA0C,EAC1C,kDAAkD,EAClD,4BAA4B,EAC5B,oCAAoC,EACpC,uBAAuB,GACxB,MAAM,uCAAuC,CAAC"}
|
|
1
|
+
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,0CAA0C,EAC1C,kDAAkD,EAClD,4BAA4B,EAC5B,oCAAoC,EACpC,uBAAuB,GACxB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,+BAA+B,EAC/B,0CAA0C,EAC1C,kDAAkD,EAClD,mCAAmC,EACnC,2CAA2C,GAC5C,MAAM,uCAAuC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
export { createFlightDocumentFromScene2D, createFlightDocumentScene2DMaterialization, createFlightDocumentScene2DMaterializationFromText, explainFlightDocumentRefusal, explainFlightDocumentRefusalFromText, serializeFlightDocument, } from './sceneDocumentScene2DMaterialization';
|
|
2
|
+
export { createFlightDocumentFromScene3D, createFlightDocumentScene3DMaterialization, createFlightDocumentScene3DMaterializationFromText, explainFlightDocumentScene3DRefusal, explainFlightDocumentScene3DRefusalFromText, } from './sceneDocumentScene3DMaterialization';
|
|
2
3
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,0CAA0C,EAC1C,kDAAkD,EAClD,4BAA4B,EAC5B,oCAAoC,EACpC,uBAAuB,GACxB,MAAM,uCAAuC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,0CAA0C,EAC1C,kDAAkD,EAClD,4BAA4B,EAC5B,oCAAoC,EACpC,uBAAuB,GACxB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,+BAA+B,EAC/B,0CAA0C,EAC1C,kDAAkD,EAClD,mCAAmC,EACnC,2CAA2C,GAC5C,MAAM,uCAAuC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
export { createFlightDocumentFromScene2D, createFlightDocumentScene2DMaterialization, createFlightDocumentScene2DMaterializationFromText, explainFlightDocumentRefusal, explainFlightDocumentRefusalFromText, serializeFlightDocument, } from './sceneDocumentScene2DMaterialization';
|
|
2
|
+
export { createFlightDocumentFromScene3D, createFlightDocumentScene3DMaterialization, createFlightDocumentScene3DMaterializationFromText, explainFlightDocumentScene3DRefusal, explainFlightDocumentScene3DRefusalFromText, } from './sceneDocumentScene3DMaterialization';
|
|
2
3
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,0CAA0C,EAC1C,kDAAkD,EAClD,4BAA4B,EAC5B,oCAAoC,EACpC,uBAAuB,GACxB,MAAM,uCAAuC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,0CAA0C,EAC1C,kDAAkD,EAClD,4BAA4B,EAC5B,oCAAoC,EACpC,uBAAuB,GACxB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,+BAA+B,EAC/B,0CAA0C,EAC1C,kDAAkD,EAClD,mCAAmC,EACnC,2CAA2C,GAC5C,MAAM,uCAAuC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sceneDocumentScene2DMaterialization.d.ts","sourceRoot":"","sources":["../src/sceneDocumentScene2DMaterialization.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,cAAc,EAId,gCAAgC,EAIhC,sCAAsC,EACtC,qBAAqB,EACrB,oCAAoC,EACpC,4BAA4B,
|
|
1
|
+
{"version":3,"file":"sceneDocumentScene2DMaterialization.d.ts","sourceRoot":"","sources":["../src/sceneDocumentScene2DMaterialization.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,cAAc,EAId,gCAAgC,EAIhC,sCAAsC,EACtC,qBAAqB,EACrB,oCAAoC,EACpC,4BAA4B,EAI5B,OAAO,EAER,MAAM,0BAA0B,CAAC;AAKlC,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,EACzB,OAAO,EAAE,QAAQ,CAAC,4BAA4B,CAAC,GAC9C,qBAAqB,CAQvB;AAED,wBAAgB,0CAA0C,CACxD,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC,EAClC,OAAO,EAAE,QAAQ,CAAC,4BAA4B,CAAC,EAC/C,SAAS,CAAC,EAAE,QAAQ,CAAC,sCAAsC,CAAC,GAC3D,oCAAoC,GAAG,IAAI,CAO7C;AAED,wBAAgB,kDAAkD,CAChE,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,QAAQ,CAAC,4BAA4B,CAAC,EAC/C,SAAS,CAAC,EAAE,QAAQ,CAAC,sCAAsC,CAAC,GAC3D,oCAAoC,GAAG,IAAI,CAI7C;AAED,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC,EAClC,SAAS,EAAE,SAAS,GAAG,SAAS,GAC/B,gCAAgC,GAAG,IAAI,CAWzC;AAED,wBAAgB,oCAAoC,CAClD,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,SAAS,GAAG,SAAS,GAC/B,gCAAgC,GAAG,IAAI,CAoCzC;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,MAAM,CA0ClF"}
|
|
@@ -84,6 +84,32 @@ export function serializeFlightDocument(document) {
|
|
|
84
84
|
if (document.kind === 'Scene2D' && document.backgroundColor !== null) {
|
|
85
85
|
lines.push('backgroundColor: ' + String(document.backgroundColor));
|
|
86
86
|
}
|
|
87
|
+
if (document.kind === 'Scene3D') {
|
|
88
|
+
if (document.cameras.length > 0) {
|
|
89
|
+
lines.push('cameras:');
|
|
90
|
+
for (const cam of document.cameras) {
|
|
91
|
+
lines.push(' - far: ' + String(cam.far));
|
|
92
|
+
lines.push(' near: ' + String(cam.near));
|
|
93
|
+
lines.push(' projection:');
|
|
94
|
+
serializeProjection(lines, cam.projection, 6);
|
|
95
|
+
lines.push(' transform:');
|
|
96
|
+
serializeTransform3D(lines, cam.transform, 6);
|
|
97
|
+
if (cam.name !== undefined)
|
|
98
|
+
lines.push(' name: ' + serializeScalar(cam.name));
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
if (document.lights.length > 0) {
|
|
102
|
+
lines.push('lights:');
|
|
103
|
+
for (const light of document.lights) {
|
|
104
|
+
lines.push(' - descriptor:');
|
|
105
|
+
lines.push(' kind: ' + light.descriptor.kind);
|
|
106
|
+
lines.push(' transform:');
|
|
107
|
+
serializeTransform3D(lines, light.transform, 6);
|
|
108
|
+
if (light.name !== undefined)
|
|
109
|
+
lines.push(' name: ' + serializeScalar(light.name));
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
87
113
|
if (document.resources.length > 0) {
|
|
88
114
|
lines.push('resources:');
|
|
89
115
|
for (const resource of document.resources) {
|
|
@@ -276,6 +302,36 @@ function writeNode(source, schemas) {
|
|
|
276
302
|
kind: source.kind,
|
|
277
303
|
};
|
|
278
304
|
}
|
|
305
|
+
function serializeProjection(lines, projection, indent) {
|
|
306
|
+
const prefix = ' '.repeat(indent);
|
|
307
|
+
lines.push(prefix + 'kind: ' + projection.kind);
|
|
308
|
+
if (projection.kind === 'perspective') {
|
|
309
|
+
lines.push(prefix + 'fovY: ' + String(projection.fovY));
|
|
310
|
+
lines.push(prefix + 'aspect: ' + String(projection.aspect));
|
|
311
|
+
}
|
|
312
|
+
else {
|
|
313
|
+
lines.push(prefix + 'halfWidth: ' + String(projection.halfWidth));
|
|
314
|
+
lines.push(prefix + 'halfHeight: ' + String(projection.halfHeight));
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
function serializeTransform3D(lines, transform, indent) {
|
|
318
|
+
const prefix = ' '.repeat(indent);
|
|
319
|
+
const p = transform.position;
|
|
320
|
+
const r = transform.rotation;
|
|
321
|
+
const s = transform.scale;
|
|
322
|
+
lines.push(prefix + 'position: { x: ' + String(p.x) + ', y: ' + String(p.y) + ', z: ' + String(p.z) + ' }');
|
|
323
|
+
lines.push(prefix +
|
|
324
|
+
'rotation: { x: ' +
|
|
325
|
+
String(r.x) +
|
|
326
|
+
', y: ' +
|
|
327
|
+
String(r.y) +
|
|
328
|
+
', z: ' +
|
|
329
|
+
String(r.z) +
|
|
330
|
+
', w: ' +
|
|
331
|
+
String(r.w) +
|
|
332
|
+
' }');
|
|
333
|
+
lines.push(prefix + 'scale: { x: ' + String(s.x) + ', y: ' + String(s.y) + ', z: ' + String(s.z) + ' }');
|
|
334
|
+
}
|
|
279
335
|
function writeFieldsWithDefaults(out, source, schema) {
|
|
280
336
|
schema.writeNodeFields(out, source, {});
|
|
281
337
|
for (const field of schema.fields) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sceneDocumentScene2DMaterialization.js","sourceRoot":"","sources":["../src/sceneDocumentScene2DMaterialization.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sceneDocumentScene2DMaterialization.js","sourceRoot":"","sources":["../src/sceneDocumentScene2DMaterialization.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { FlightDocument, FlightDocumentRefusalExplanation, FlightDocumentResourceResolverRegistry, FlightDocumentScene3D, FlightDocumentScene3DMaterialization, FlightDocumentSchemaRegistry, Scene3D, Scene3DDocumentCamera, Scene3DDocumentLight } from '@flighthq/types/contract';
|
|
2
|
+
export declare function createFlightDocumentFromScene3D(source: Readonly<Scene3D>, cameras: readonly Readonly<Scene3DDocumentCamera>[], lights: readonly Readonly<Scene3DDocumentLight>[], schemas: Readonly<FlightDocumentSchemaRegistry>): FlightDocumentScene3D;
|
|
3
|
+
export declare function createFlightDocumentScene3DMaterialization(document: Readonly<FlightDocument>, schemas: Readonly<FlightDocumentSchemaRegistry>, resolvers?: Readonly<FlightDocumentResourceResolverRegistry>): FlightDocumentScene3DMaterialization | null;
|
|
4
|
+
export declare function createFlightDocumentScene3DMaterializationFromText(text: string, schemas: Readonly<FlightDocumentSchemaRegistry>, resolvers?: Readonly<FlightDocumentResourceResolverRegistry>): FlightDocumentScene3DMaterialization | null;
|
|
5
|
+
export declare function explainFlightDocumentScene3DRefusal(document: Readonly<FlightDocument>): FlightDocumentRefusalExplanation | null;
|
|
6
|
+
export declare function explainFlightDocumentScene3DRefusalFromText(text: string): FlightDocumentRefusalExplanation | null;
|
|
7
|
+
//# sourceMappingURL=sceneDocumentScene3DMaterialization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sceneDocumentScene3DMaterialization.d.ts","sourceRoot":"","sources":["../src/sceneDocumentScene3DMaterialization.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAIV,cAAc,EAId,gCAAgC,EAIhC,sCAAsC,EACtC,qBAAqB,EACrB,oCAAoC,EACpC,4BAA4B,EAG5B,OAAO,EACP,qBAAqB,EACrB,oBAAoB,EAGrB,MAAM,0BAA0B,CAAC;AAKlC,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,EACzB,OAAO,EAAE,SAAS,QAAQ,CAAC,qBAAqB,CAAC,EAAE,EACnD,MAAM,EAAE,SAAS,QAAQ,CAAC,oBAAoB,CAAC,EAAE,EACjD,OAAO,EAAE,QAAQ,CAAC,4BAA4B,CAAC,GAC9C,qBAAqB,CASvB;AAED,wBAAgB,0CAA0C,CACxD,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC,EAClC,OAAO,EAAE,QAAQ,CAAC,4BAA4B,CAAC,EAC/C,SAAS,CAAC,EAAE,QAAQ,CAAC,sCAAsC,CAAC,GAC3D,oCAAoC,GAAG,IAAI,CAW7C;AAED,wBAAgB,kDAAkD,CAChE,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,QAAQ,CAAC,4BAA4B,CAAC,EAC/C,SAAS,CAAC,EAAE,QAAQ,CAAC,sCAAsC,CAAC,GAC3D,oCAAoC,GAAG,IAAI,CAI7C;AAED,wBAAgB,mCAAmC,CACjD,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC,GACjC,gCAAgC,GAAG,IAAI,CAWzC;AAED,wBAAgB,2CAA2C,CAAC,IAAI,EAAE,MAAM,GAAG,gCAAgC,GAAG,IAAI,CAoCjH"}
|
|
@@ -0,0 +1,381 @@
|
|
|
1
|
+
import { createCamera3D } from '@flighthq/camera/contract';
|
|
2
|
+
import { createTransform3D } from '@flighthq/geometry/contract';
|
|
3
|
+
import { createScene3DLights } from '@flighthq/lighting/contract';
|
|
4
|
+
import { addNodeChild, getNodeChildren } from '@flighthq/node/contract';
|
|
5
|
+
import { getRegistryTableEntry } from '@flighthq/registry/contract';
|
|
6
|
+
import { createScene3D } from '@flighthq/scene3d/contract';
|
|
7
|
+
import { AmbientLightKind, DirectionalLightKind, FlightDocumentRefusalReason } from '@flighthq/types/contract';
|
|
8
|
+
import { parseSceneDocumentYamlSubset } from './sceneDocumentYamlSubset';
|
|
9
|
+
export function createFlightDocumentFromScene3D(source, cameras, lights, schemas) {
|
|
10
|
+
return {
|
|
11
|
+
cameras: cameras.map((c) => ({ ...c })),
|
|
12
|
+
kind: 'Scene3D',
|
|
13
|
+
lights: lights.map((l) => ({ ...l })),
|
|
14
|
+
resources: [],
|
|
15
|
+
scene: writeNode(source.root, schemas),
|
|
16
|
+
version: 1,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export function createFlightDocumentScene3DMaterialization(document, schemas, resolvers) {
|
|
20
|
+
if (document.kind !== 'Scene3D')
|
|
21
|
+
return null;
|
|
22
|
+
if (document.version !== 1)
|
|
23
|
+
return null;
|
|
24
|
+
const duplicateRefusal = checkDuplicateLights(document.lights);
|
|
25
|
+
if (duplicateRefusal !== null)
|
|
26
|
+
return null;
|
|
27
|
+
const scene = createScene3D();
|
|
28
|
+
const resources = resolveResources(document.resources, resolvers);
|
|
29
|
+
materializeChildren(scene.root, document.scene.children, schemas, resources);
|
|
30
|
+
const cameras = materializeCameras(document.cameras);
|
|
31
|
+
const lights = materializeLights(document.lights);
|
|
32
|
+
return { cameras, lights, scene };
|
|
33
|
+
}
|
|
34
|
+
export function createFlightDocumentScene3DMaterializationFromText(text, schemas, resolvers) {
|
|
35
|
+
const document = parseFlightDocumentFromText(text);
|
|
36
|
+
if (document === null)
|
|
37
|
+
return null;
|
|
38
|
+
return createFlightDocumentScene3DMaterialization(document, schemas, resolvers);
|
|
39
|
+
}
|
|
40
|
+
export function explainFlightDocumentScene3DRefusal(document) {
|
|
41
|
+
if (document.kind !== 'Scene3D') {
|
|
42
|
+
return createRefusal(FlightDocumentRefusalReason.StructureInvalid, 'kind');
|
|
43
|
+
}
|
|
44
|
+
if (document.version !== 1) {
|
|
45
|
+
return {
|
|
46
|
+
...createRefusal(FlightDocumentRefusalReason.VersionUnsupported, 'version'),
|
|
47
|
+
version: document.version,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
return checkDuplicateLights(document.lights);
|
|
51
|
+
}
|
|
52
|
+
export function explainFlightDocumentScene3DRefusalFromText(text) {
|
|
53
|
+
const result = parseSceneDocumentYamlSubset(text);
|
|
54
|
+
if (!result.ok) {
|
|
55
|
+
return {
|
|
56
|
+
actual: result.actual,
|
|
57
|
+
column: result.column,
|
|
58
|
+
kind: null,
|
|
59
|
+
limit: result.limit,
|
|
60
|
+
line: result.line,
|
|
61
|
+
offset: result.offset,
|
|
62
|
+
path: '',
|
|
63
|
+
reason: result.kind,
|
|
64
|
+
resourceKey: null,
|
|
65
|
+
version: null,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
const value = result.value;
|
|
69
|
+
if (value === null || typeof value !== 'object' || Array.isArray(value)) {
|
|
70
|
+
return createRefusal(FlightDocumentRefusalReason.StructureInvalid, '');
|
|
71
|
+
}
|
|
72
|
+
const mapping = value;
|
|
73
|
+
const version = mapping['flight'];
|
|
74
|
+
if (typeof version !== 'number') {
|
|
75
|
+
return createRefusal(FlightDocumentRefusalReason.StructureInvalid, 'flight');
|
|
76
|
+
}
|
|
77
|
+
if (version !== 1) {
|
|
78
|
+
return {
|
|
79
|
+
...createRefusal(FlightDocumentRefusalReason.VersionUnsupported, 'version'),
|
|
80
|
+
version,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
const kind = mapping['kind'];
|
|
84
|
+
if (kind !== 'Scene3D') {
|
|
85
|
+
return createRefusal(FlightDocumentRefusalReason.StructureInvalid, 'kind');
|
|
86
|
+
}
|
|
87
|
+
return checkDuplicateLightsFromRaw(mapping['lights']);
|
|
88
|
+
}
|
|
89
|
+
function checkDuplicateLights(lights) {
|
|
90
|
+
let ambientCount = 0;
|
|
91
|
+
let directionalCount = 0;
|
|
92
|
+
for (const light of lights) {
|
|
93
|
+
if (light.descriptor.kind === AmbientLightKind) {
|
|
94
|
+
ambientCount++;
|
|
95
|
+
if (ambientCount > 1) {
|
|
96
|
+
return createRefusal(FlightDocumentRefusalReason.DuplicateAmbientLight, 'lights');
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
if (light.descriptor.kind === DirectionalLightKind) {
|
|
100
|
+
directionalCount++;
|
|
101
|
+
if (directionalCount > 1) {
|
|
102
|
+
return createRefusal(FlightDocumentRefusalReason.DuplicateDirectionalLight, 'lights');
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
function checkDuplicateLightsFromRaw(value) {
|
|
109
|
+
if (!Array.isArray(value))
|
|
110
|
+
return null;
|
|
111
|
+
let ambientCount = 0;
|
|
112
|
+
let directionalCount = 0;
|
|
113
|
+
for (const item of value) {
|
|
114
|
+
if (item === null || typeof item !== 'object' || Array.isArray(item))
|
|
115
|
+
continue;
|
|
116
|
+
const mapping = item;
|
|
117
|
+
const descriptor = mapping['descriptor'];
|
|
118
|
+
if (descriptor === null || descriptor === undefined || typeof descriptor !== 'object')
|
|
119
|
+
continue;
|
|
120
|
+
const kind = descriptor['kind'];
|
|
121
|
+
if (kind === AmbientLightKind) {
|
|
122
|
+
ambientCount++;
|
|
123
|
+
if (ambientCount > 1) {
|
|
124
|
+
return createRefusal(FlightDocumentRefusalReason.DuplicateAmbientLight, 'lights');
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
if (kind === DirectionalLightKind) {
|
|
128
|
+
directionalCount++;
|
|
129
|
+
if (directionalCount > 1) {
|
|
130
|
+
return createRefusal(FlightDocumentRefusalReason.DuplicateDirectionalLight, 'lights');
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return null;
|
|
135
|
+
}
|
|
136
|
+
function createRefusal(reason, path) {
|
|
137
|
+
return {
|
|
138
|
+
actual: null,
|
|
139
|
+
column: null,
|
|
140
|
+
kind: null,
|
|
141
|
+
limit: null,
|
|
142
|
+
line: null,
|
|
143
|
+
offset: null,
|
|
144
|
+
path,
|
|
145
|
+
reason,
|
|
146
|
+
resourceKey: null,
|
|
147
|
+
version: null,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
function materializeCameras(cameras) {
|
|
151
|
+
return cameras.map((cam) => createCamera3D({
|
|
152
|
+
far: cam.far,
|
|
153
|
+
near: cam.near,
|
|
154
|
+
projection: cam.projection,
|
|
155
|
+
}));
|
|
156
|
+
}
|
|
157
|
+
function materializeChildren(parent, children, schemas, resources) {
|
|
158
|
+
for (const child of children) {
|
|
159
|
+
const schema = getRegistryTableEntry(schemas.nodeSchemas, child.kind);
|
|
160
|
+
if (schema === null)
|
|
161
|
+
continue;
|
|
162
|
+
const node = schema.createNode(child.fields, resources);
|
|
163
|
+
if (node === null)
|
|
164
|
+
continue;
|
|
165
|
+
addNodeChild(parent, node);
|
|
166
|
+
materializeChildren(node, child.children, schemas, resources);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
function materializeLights(lights) {
|
|
170
|
+
const ambientEntry = lights.find((l) => l.descriptor.kind === AmbientLightKind);
|
|
171
|
+
const directionalEntry = lights.find((l) => l.descriptor.kind === DirectionalLightKind);
|
|
172
|
+
return createScene3DLights({
|
|
173
|
+
ambient: ambientEntry !== undefined ? ambientEntry.descriptor : null,
|
|
174
|
+
directional: directionalEntry !== undefined ? directionalEntry.descriptor : null,
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
function parseFlightDocumentFromText(text) {
|
|
178
|
+
const result = parseSceneDocumentYamlSubset(text);
|
|
179
|
+
if (!result.ok)
|
|
180
|
+
return null;
|
|
181
|
+
const value = result.value;
|
|
182
|
+
if (value === null || typeof value !== 'object' || Array.isArray(value))
|
|
183
|
+
return null;
|
|
184
|
+
const mapping = value;
|
|
185
|
+
const version = mapping['flight'];
|
|
186
|
+
if (version !== 1)
|
|
187
|
+
return null;
|
|
188
|
+
const kind = mapping['kind'];
|
|
189
|
+
if (kind !== 'Scene3D')
|
|
190
|
+
return null;
|
|
191
|
+
const sceneRaw = mapping['scene'];
|
|
192
|
+
const scene = parseDocumentNode(sceneRaw) ?? { children: [], fields: {}, kind: 'Node3D' };
|
|
193
|
+
const resources = parseResources(mapping['resources']);
|
|
194
|
+
const cameras = parseCameras(mapping['cameras']);
|
|
195
|
+
const documentLights = parseLights(mapping['lights']);
|
|
196
|
+
return {
|
|
197
|
+
cameras,
|
|
198
|
+
kind: 'Scene3D',
|
|
199
|
+
lights: documentLights,
|
|
200
|
+
resources,
|
|
201
|
+
scene,
|
|
202
|
+
version: 1,
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
function parseCameras(value) {
|
|
206
|
+
if (!Array.isArray(value))
|
|
207
|
+
return [];
|
|
208
|
+
const out = [];
|
|
209
|
+
for (const item of value) {
|
|
210
|
+
if (item === null || typeof item !== 'object' || Array.isArray(item))
|
|
211
|
+
continue;
|
|
212
|
+
const mapping = item;
|
|
213
|
+
const far = mapping['far'];
|
|
214
|
+
const near = mapping['near'];
|
|
215
|
+
const projection = mapping['projection'];
|
|
216
|
+
if (typeof far !== 'number' || typeof near !== 'number')
|
|
217
|
+
continue;
|
|
218
|
+
if (projection === null || projection === undefined || typeof projection !== 'object')
|
|
219
|
+
continue;
|
|
220
|
+
const transform = parseTransform3D(mapping['transform']);
|
|
221
|
+
const cam = {
|
|
222
|
+
far,
|
|
223
|
+
near,
|
|
224
|
+
projection: projection,
|
|
225
|
+
transform,
|
|
226
|
+
};
|
|
227
|
+
const name = mapping['name'];
|
|
228
|
+
if (typeof name === 'string')
|
|
229
|
+
cam.name = name;
|
|
230
|
+
out.push(cam);
|
|
231
|
+
}
|
|
232
|
+
return out;
|
|
233
|
+
}
|
|
234
|
+
function parseLights(value) {
|
|
235
|
+
if (!Array.isArray(value))
|
|
236
|
+
return [];
|
|
237
|
+
const out = [];
|
|
238
|
+
for (const item of value) {
|
|
239
|
+
if (item === null || typeof item !== 'object' || Array.isArray(item))
|
|
240
|
+
continue;
|
|
241
|
+
const mapping = item;
|
|
242
|
+
const descriptorRaw = mapping['descriptor'];
|
|
243
|
+
if (descriptorRaw === null || descriptorRaw === undefined || typeof descriptorRaw !== 'object')
|
|
244
|
+
continue;
|
|
245
|
+
const descriptor = descriptorRaw;
|
|
246
|
+
if (typeof descriptor.kind !== 'string')
|
|
247
|
+
continue;
|
|
248
|
+
const transform = parseTransform3D(mapping['transform']);
|
|
249
|
+
const light = { descriptor, transform };
|
|
250
|
+
const name = mapping['name'];
|
|
251
|
+
if (typeof name === 'string')
|
|
252
|
+
light.name = name;
|
|
253
|
+
out.push(light);
|
|
254
|
+
}
|
|
255
|
+
return out;
|
|
256
|
+
}
|
|
257
|
+
function parseDocumentNode(value) {
|
|
258
|
+
if (value === null || value === undefined || typeof value !== 'object' || Array.isArray(value)) {
|
|
259
|
+
return null;
|
|
260
|
+
}
|
|
261
|
+
const mapping = value;
|
|
262
|
+
const kind = mapping['kind'];
|
|
263
|
+
if (typeof kind !== 'string')
|
|
264
|
+
return null;
|
|
265
|
+
const childrenRaw = mapping['children'];
|
|
266
|
+
const children = [];
|
|
267
|
+
if (Array.isArray(childrenRaw)) {
|
|
268
|
+
for (const item of childrenRaw) {
|
|
269
|
+
const child = parseDocumentNode(item);
|
|
270
|
+
if (child !== null)
|
|
271
|
+
children.push(child);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
const fields = {};
|
|
275
|
+
for (const key of Object.keys(mapping)) {
|
|
276
|
+
if (key === 'kind' || key === 'children')
|
|
277
|
+
continue;
|
|
278
|
+
fields[key] = mapping[key];
|
|
279
|
+
}
|
|
280
|
+
return { children, fields, kind };
|
|
281
|
+
}
|
|
282
|
+
function parseResources(value) {
|
|
283
|
+
if (!Array.isArray(value))
|
|
284
|
+
return [];
|
|
285
|
+
const out = [];
|
|
286
|
+
for (const item of value) {
|
|
287
|
+
if (item === null || typeof item !== 'object' || Array.isArray(item))
|
|
288
|
+
continue;
|
|
289
|
+
const mapping = item;
|
|
290
|
+
const kind = mapping['kind'];
|
|
291
|
+
const key = mapping['key'];
|
|
292
|
+
if (typeof kind !== 'string' || typeof key !== 'string')
|
|
293
|
+
continue;
|
|
294
|
+
const fields = {};
|
|
295
|
+
for (const k of Object.keys(mapping)) {
|
|
296
|
+
if (k === 'kind' || k === 'key')
|
|
297
|
+
continue;
|
|
298
|
+
fields[k] = mapping[k];
|
|
299
|
+
}
|
|
300
|
+
out.push({ fields, key, kind });
|
|
301
|
+
}
|
|
302
|
+
return out;
|
|
303
|
+
}
|
|
304
|
+
function parseTransform3D(value) {
|
|
305
|
+
const identity = createTransform3D();
|
|
306
|
+
if (value === null || value === undefined || typeof value !== 'object' || Array.isArray(value)) {
|
|
307
|
+
return identity;
|
|
308
|
+
}
|
|
309
|
+
const mapping = value;
|
|
310
|
+
const out = createTransform3D();
|
|
311
|
+
parseVector3Into(out.position, mapping['position']);
|
|
312
|
+
parseQuaternionInto(out.rotation, mapping['rotation']);
|
|
313
|
+
parseVector3Into(out.scale, mapping['scale'], identity.scale);
|
|
314
|
+
return out;
|
|
315
|
+
}
|
|
316
|
+
function parseVector3Into(out, value, fallback) {
|
|
317
|
+
if (value === null || value === undefined || typeof value !== 'object' || Array.isArray(value)) {
|
|
318
|
+
if (fallback !== undefined) {
|
|
319
|
+
out.x = fallback.x;
|
|
320
|
+
out.y = fallback.y;
|
|
321
|
+
out.z = fallback.z;
|
|
322
|
+
}
|
|
323
|
+
return;
|
|
324
|
+
}
|
|
325
|
+
const mapping = value;
|
|
326
|
+
if (typeof mapping['x'] === 'number')
|
|
327
|
+
out.x = mapping['x'];
|
|
328
|
+
if (typeof mapping['y'] === 'number')
|
|
329
|
+
out.y = mapping['y'];
|
|
330
|
+
if (typeof mapping['z'] === 'number')
|
|
331
|
+
out.z = mapping['z'];
|
|
332
|
+
}
|
|
333
|
+
function parseQuaternionInto(out, value) {
|
|
334
|
+
if (value === null || value === undefined || typeof value !== 'object' || Array.isArray(value))
|
|
335
|
+
return;
|
|
336
|
+
const mapping = value;
|
|
337
|
+
if (typeof mapping['w'] === 'number')
|
|
338
|
+
out.w = mapping['w'];
|
|
339
|
+
if (typeof mapping['x'] === 'number')
|
|
340
|
+
out.x = mapping['x'];
|
|
341
|
+
if (typeof mapping['y'] === 'number')
|
|
342
|
+
out.y = mapping['y'];
|
|
343
|
+
if (typeof mapping['z'] === 'number')
|
|
344
|
+
out.z = mapping['z'];
|
|
345
|
+
}
|
|
346
|
+
function resolveResources(descriptors, resolvers) {
|
|
347
|
+
const out = {};
|
|
348
|
+
if (resolvers === undefined)
|
|
349
|
+
return out;
|
|
350
|
+
for (const descriptor of descriptors) {
|
|
351
|
+
const resolver = getRegistryTableEntry(resolvers.resolvers, descriptor.kind);
|
|
352
|
+
if (resolver === null)
|
|
353
|
+
continue;
|
|
354
|
+
const resolved = resolver(descriptor.key, descriptor);
|
|
355
|
+
if (resolved !== null)
|
|
356
|
+
out[descriptor.key] = resolved;
|
|
357
|
+
}
|
|
358
|
+
return out;
|
|
359
|
+
}
|
|
360
|
+
function writeNode(source, schemas) {
|
|
361
|
+
const fields = {};
|
|
362
|
+
const schema = getRegistryTableEntry(schemas.nodeSchemas, source.kind);
|
|
363
|
+
if (schema !== null) {
|
|
364
|
+
writeFieldsWithDefaults(fields, source, schema);
|
|
365
|
+
}
|
|
366
|
+
const children = getNodeChildren(source);
|
|
367
|
+
return {
|
|
368
|
+
children: children.map((child) => writeNode(child, schemas)),
|
|
369
|
+
fields,
|
|
370
|
+
kind: source.kind,
|
|
371
|
+
};
|
|
372
|
+
}
|
|
373
|
+
function writeFieldsWithDefaults(out, source, schema) {
|
|
374
|
+
schema.writeNodeFields(out, source, {});
|
|
375
|
+
for (const field of schema.fields) {
|
|
376
|
+
if (field.defaultValue !== undefined && out[field.name] === field.defaultValue) {
|
|
377
|
+
delete out[field.name];
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
//# sourceMappingURL=sceneDocumentScene3DMaterialization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sceneDocumentScene3DMaterialization.js","sourceRoot":"","sources":["../src/sceneDocumentScene3DMaterialization.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flighthq/scene-document",
|
|
3
|
-
"version": "0.4.1-next.
|
|
3
|
+
"version": "0.4.1-next.37.ff47e13",
|
|
4
4
|
"author": "Joshua Granick and other contributors",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -38,14 +38,22 @@
|
|
|
38
38
|
"clean:dist": "tsx ../../scripts/clean-package-dist.ts"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@flighthq/
|
|
42
|
-
"@flighthq/
|
|
43
|
-
"@flighthq/
|
|
44
|
-
"@flighthq/
|
|
41
|
+
"@flighthq/camera": "0.4.1-next.37.ff47e13",
|
|
42
|
+
"@flighthq/geometry": "0.4.1-next.37.ff47e13",
|
|
43
|
+
"@flighthq/lighting": "0.4.1-next.37.ff47e13",
|
|
44
|
+
"@flighthq/node": "0.4.1-next.37.ff47e13",
|
|
45
|
+
"@flighthq/registry": "0.4.1-next.37.ff47e13",
|
|
46
|
+
"@flighthq/scene2d": "0.4.1-next.37.ff47e13",
|
|
47
|
+
"@flighthq/scene3d": "0.4.1-next.37.ff47e13",
|
|
48
|
+
"@flighthq/types": "0.4.1-next.37.ff47e13"
|
|
45
49
|
},
|
|
46
50
|
"devDependencies": {
|
|
51
|
+
"@flighthq/camera": "*",
|
|
52
|
+
"@flighthq/geometry": "*",
|
|
53
|
+
"@flighthq/lighting": "*",
|
|
47
54
|
"@flighthq/node": "*",
|
|
48
55
|
"@flighthq/scene2d": "*",
|
|
56
|
+
"@flighthq/scene3d": "*",
|
|
49
57
|
"@flighthq/types": "*",
|
|
50
58
|
"typescript": "^5.3.0"
|
|
51
59
|
},
|
|
@@ -0,0 +1,446 @@
|
|
|
1
|
+
import { createTransform3D } from '@flighthq/geometry/contract';
|
|
2
|
+
import { createAmbientLight, createDirectionalLight } from '@flighthq/lighting/contract';
|
|
3
|
+
import { getNodeChildren } from '@flighthq/node/contract';
|
|
4
|
+
import { createKeyedTable, withRegistryTableEntry } from '@flighthq/registry/contract';
|
|
5
|
+
import { createNode3D, createScene3D } from '@flighthq/scene3d/contract';
|
|
6
|
+
import type {
|
|
7
|
+
FlightDocument,
|
|
8
|
+
FlightDocumentFields,
|
|
9
|
+
FlightDocumentNodeSchema,
|
|
10
|
+
FlightDocumentResourceLookup,
|
|
11
|
+
FlightDocumentScene3D,
|
|
12
|
+
FlightDocumentScene3DMaterialization,
|
|
13
|
+
FlightDocumentSchemaRegistry,
|
|
14
|
+
NodeAny,
|
|
15
|
+
Scene3DDocumentCamera,
|
|
16
|
+
Scene3DDocumentLight,
|
|
17
|
+
} from '@flighthq/types/contract';
|
|
18
|
+
import {
|
|
19
|
+
AmbientLightKind,
|
|
20
|
+
DirectionalLightKind,
|
|
21
|
+
FlightDocumentRefusalReason,
|
|
22
|
+
Node3DKind,
|
|
23
|
+
} from '@flighthq/types/contract';
|
|
24
|
+
import { describe, expect, expectTypeOf, it } from 'vitest';
|
|
25
|
+
|
|
26
|
+
import { serializeFlightDocument } from './sceneDocumentScene2DMaterialization';
|
|
27
|
+
import {
|
|
28
|
+
createFlightDocumentFromScene3D,
|
|
29
|
+
createFlightDocumentScene3DMaterialization,
|
|
30
|
+
createFlightDocumentScene3DMaterializationFromText,
|
|
31
|
+
explainFlightDocumentScene3DRefusal,
|
|
32
|
+
explainFlightDocumentScene3DRefusalFromText,
|
|
33
|
+
} from './sceneDocumentScene3DMaterialization';
|
|
34
|
+
|
|
35
|
+
describe('createFlightDocumentFromScene3D', () => {
|
|
36
|
+
it('creates a model from an empty Scene3D', () => {
|
|
37
|
+
const scene = createScene3D();
|
|
38
|
+
const document = createFlightDocumentFromScene3D(scene, [], [], createTestSchemas());
|
|
39
|
+
expect(document.kind).toBe('Scene3D');
|
|
40
|
+
expect(document.version).toBe(1);
|
|
41
|
+
expect(document.scene.children).toHaveLength(0);
|
|
42
|
+
expect(document.cameras).toHaveLength(0);
|
|
43
|
+
expect(document.lights).toHaveLength(0);
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
it('preserves cameras and lights', () => {
|
|
47
|
+
const scene = createScene3D();
|
|
48
|
+
const cameras: Scene3DDocumentCamera[] = [
|
|
49
|
+
{
|
|
50
|
+
far: 1000,
|
|
51
|
+
name: 'main',
|
|
52
|
+
near: 0.1,
|
|
53
|
+
projection: { aspect: 1.5, fovY: 1.0, kind: 'perspective' },
|
|
54
|
+
transform: createTransform3D(),
|
|
55
|
+
},
|
|
56
|
+
];
|
|
57
|
+
const lights: Scene3DDocumentLight[] = [
|
|
58
|
+
{
|
|
59
|
+
descriptor: createAmbientLight(),
|
|
60
|
+
name: 'ambient',
|
|
61
|
+
transform: createTransform3D(),
|
|
62
|
+
},
|
|
63
|
+
];
|
|
64
|
+
const document = createFlightDocumentFromScene3D(scene, cameras, lights, createTestSchemas());
|
|
65
|
+
expect(document.cameras).toHaveLength(1);
|
|
66
|
+
expect(document.cameras[0].far).toBe(1000);
|
|
67
|
+
expect(document.lights).toHaveLength(1);
|
|
68
|
+
expect(document.lights[0].descriptor.kind).toBe(AmbientLightKind);
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
describe('createFlightDocumentScene3DMaterialization', () => {
|
|
73
|
+
it('materializes an empty Scene3D from a minimal model', () => {
|
|
74
|
+
const document: FlightDocumentScene3D = {
|
|
75
|
+
cameras: [],
|
|
76
|
+
kind: 'Scene3D',
|
|
77
|
+
lights: [],
|
|
78
|
+
resources: [],
|
|
79
|
+
scene: { children: [], fields: {}, kind: Node3DKind },
|
|
80
|
+
version: 1,
|
|
81
|
+
};
|
|
82
|
+
const result = createFlightDocumentScene3DMaterialization(document, createTestSchemas());
|
|
83
|
+
expect(result).not.toBeNull();
|
|
84
|
+
const materialization = result as FlightDocumentScene3DMaterialization;
|
|
85
|
+
expect(materialization.scene).toBeDefined();
|
|
86
|
+
expect(materialization.cameras).toHaveLength(0);
|
|
87
|
+
expect(materialization.lights).toBeDefined();
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
it('materializes cameras from document camera descriptors', () => {
|
|
91
|
+
const document: FlightDocumentScene3D = {
|
|
92
|
+
cameras: [
|
|
93
|
+
{
|
|
94
|
+
far: 500,
|
|
95
|
+
near: 0.5,
|
|
96
|
+
projection: { aspect: 1.77, fovY: 1.047, kind: 'perspective' },
|
|
97
|
+
transform: createTransform3D(),
|
|
98
|
+
},
|
|
99
|
+
],
|
|
100
|
+
kind: 'Scene3D',
|
|
101
|
+
lights: [],
|
|
102
|
+
resources: [],
|
|
103
|
+
scene: { children: [], fields: {}, kind: Node3DKind },
|
|
104
|
+
version: 1,
|
|
105
|
+
};
|
|
106
|
+
const result = createFlightDocumentScene3DMaterialization(document, createTestSchemas());
|
|
107
|
+
expect(result).not.toBeNull();
|
|
108
|
+
const materialization = result as FlightDocumentScene3DMaterialization;
|
|
109
|
+
expect(materialization.cameras).toHaveLength(1);
|
|
110
|
+
expect(materialization.cameras[0].far).toBe(500);
|
|
111
|
+
expect(materialization.cameras[0].near).toBe(0.5);
|
|
112
|
+
expect(materialization.cameras[0].projection.kind).toBe('perspective');
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
it('materializes a tree with children', () => {
|
|
116
|
+
const document: FlightDocumentScene3D = {
|
|
117
|
+
cameras: [],
|
|
118
|
+
kind: 'Scene3D',
|
|
119
|
+
lights: [],
|
|
120
|
+
resources: [],
|
|
121
|
+
scene: {
|
|
122
|
+
children: [{ children: [], fields: {}, kind: Node3DKind }],
|
|
123
|
+
fields: {},
|
|
124
|
+
kind: Node3DKind,
|
|
125
|
+
},
|
|
126
|
+
version: 1,
|
|
127
|
+
};
|
|
128
|
+
const schemas = createTestSchemas();
|
|
129
|
+
const result = createFlightDocumentScene3DMaterialization(document, schemas);
|
|
130
|
+
expect(result).not.toBeNull();
|
|
131
|
+
const materialization = result as FlightDocumentScene3DMaterialization;
|
|
132
|
+
const rootChildren = getNodeChildren(materialization.scene.root);
|
|
133
|
+
expect(rootChildren).toHaveLength(1);
|
|
134
|
+
expect(rootChildren[0].kind).toBe(Node3DKind);
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
it('returns null for a Scene2D document', () => {
|
|
138
|
+
const document = {
|
|
139
|
+
backgroundColor: null,
|
|
140
|
+
kind: 'Scene2D',
|
|
141
|
+
resources: [],
|
|
142
|
+
scene: { children: [], fields: {}, kind: 'DisplayObject' },
|
|
143
|
+
version: 1,
|
|
144
|
+
} as FlightDocument;
|
|
145
|
+
const result = createFlightDocumentScene3DMaterialization(document, createTestSchemas());
|
|
146
|
+
expect(result).toBeNull();
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
it('returns null for an unsupported version', () => {
|
|
150
|
+
const document = {
|
|
151
|
+
cameras: [],
|
|
152
|
+
kind: 'Scene3D',
|
|
153
|
+
lights: [],
|
|
154
|
+
resources: [],
|
|
155
|
+
scene: { children: [], fields: {}, kind: Node3DKind },
|
|
156
|
+
version: 99,
|
|
157
|
+
} as unknown as FlightDocumentScene3D;
|
|
158
|
+
const result = createFlightDocumentScene3DMaterialization(document, createTestSchemas());
|
|
159
|
+
expect(result).toBeNull();
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
it('returns null for duplicate ambient lights', () => {
|
|
163
|
+
const document: FlightDocumentScene3D = {
|
|
164
|
+
cameras: [],
|
|
165
|
+
kind: 'Scene3D',
|
|
166
|
+
lights: [
|
|
167
|
+
{ descriptor: createAmbientLight(), transform: createTransform3D() },
|
|
168
|
+
{ descriptor: createAmbientLight({ color: 0xccccccff, intensity: 0.5 }), transform: createTransform3D() },
|
|
169
|
+
],
|
|
170
|
+
resources: [],
|
|
171
|
+
scene: { children: [], fields: {}, kind: Node3DKind },
|
|
172
|
+
version: 1,
|
|
173
|
+
};
|
|
174
|
+
const result = createFlightDocumentScene3DMaterialization(document, createTestSchemas());
|
|
175
|
+
expect(result).toBeNull();
|
|
176
|
+
});
|
|
177
|
+
|
|
178
|
+
it('returns null for duplicate directional lights', () => {
|
|
179
|
+
const document: FlightDocumentScene3D = {
|
|
180
|
+
cameras: [],
|
|
181
|
+
kind: 'Scene3D',
|
|
182
|
+
lights: [
|
|
183
|
+
{ descriptor: createDirectionalLight(), transform: createTransform3D() },
|
|
184
|
+
{ descriptor: createDirectionalLight({ color: 0xccccccff, intensity: 0.5 }), transform: createTransform3D() },
|
|
185
|
+
],
|
|
186
|
+
resources: [],
|
|
187
|
+
scene: { children: [], fields: {}, kind: Node3DKind },
|
|
188
|
+
version: 1,
|
|
189
|
+
};
|
|
190
|
+
const result = createFlightDocumentScene3DMaterialization(document, createTestSchemas());
|
|
191
|
+
expect(result).toBeNull();
|
|
192
|
+
});
|
|
193
|
+
});
|
|
194
|
+
|
|
195
|
+
describe('createFlightDocumentScene3DMaterializationFromText', () => {
|
|
196
|
+
it('materializes a Scene3D from YAML text', () => {
|
|
197
|
+
const yaml = ['flight: 1', 'kind: Scene3D', 'scene:', ' kind: Node3D'].join('\n');
|
|
198
|
+
const schemas = createTestSchemas();
|
|
199
|
+
const result = createFlightDocumentScene3DMaterializationFromText(yaml, schemas);
|
|
200
|
+
expect(result).not.toBeNull();
|
|
201
|
+
const materialization = result as FlightDocumentScene3DMaterialization;
|
|
202
|
+
expect(materialization.scene).toBeDefined();
|
|
203
|
+
});
|
|
204
|
+
|
|
205
|
+
it('returns null for a Scene2D YAML document', () => {
|
|
206
|
+
const yaml = ['flight: 1', 'kind: Scene2D', 'scene:', ' kind: DisplayObject'].join('\n');
|
|
207
|
+
const result = createFlightDocumentScene3DMaterializationFromText(yaml, createTestSchemas());
|
|
208
|
+
expect(result).toBeNull();
|
|
209
|
+
});
|
|
210
|
+
});
|
|
211
|
+
|
|
212
|
+
describe('duplicate-light explain parity', () => {
|
|
213
|
+
// The table is annotated so each fixture is checked AGAINST THE SCHEMA rather than inferred from its own
|
|
214
|
+
// literal. Without this, `version: 1` widens to `number` and the row stops being a `FlightDocument` — and
|
|
215
|
+
// the two obvious local repairs both make the fixture worse: `1 as const` and a cast silence the widening
|
|
216
|
+
// while also silencing every other way a row could stop matching the document type, which is the only
|
|
217
|
+
// thing this parity test has to hold the fixtures to.
|
|
218
|
+
it.each<{ document: Readonly<FlightDocument>; expectedReason: FlightDocumentRefusalReason; label: string }>([
|
|
219
|
+
{
|
|
220
|
+
label: 'duplicate ambient',
|
|
221
|
+
document: {
|
|
222
|
+
cameras: [],
|
|
223
|
+
kind: 'Scene3D',
|
|
224
|
+
lights: [
|
|
225
|
+
{ descriptor: createAmbientLight(), transform: createTransform3D() },
|
|
226
|
+
{ descriptor: createAmbientLight({ color: 0xccccccff, intensity: 0.5 }), transform: createTransform3D() },
|
|
227
|
+
],
|
|
228
|
+
resources: [],
|
|
229
|
+
scene: { children: [], fields: {}, kind: Node3DKind },
|
|
230
|
+
version: 1,
|
|
231
|
+
},
|
|
232
|
+
expectedReason: FlightDocumentRefusalReason.DuplicateAmbientLight,
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
label: 'duplicate directional',
|
|
236
|
+
document: {
|
|
237
|
+
cameras: [],
|
|
238
|
+
kind: 'Scene3D',
|
|
239
|
+
lights: [
|
|
240
|
+
{ descriptor: createDirectionalLight(), transform: createTransform3D() },
|
|
241
|
+
{ descriptor: createDirectionalLight({ color: 0xccccccff, intensity: 0.5 }), transform: createTransform3D() },
|
|
242
|
+
],
|
|
243
|
+
resources: [],
|
|
244
|
+
scene: { children: [], fields: {}, kind: Node3DKind },
|
|
245
|
+
version: 1,
|
|
246
|
+
},
|
|
247
|
+
expectedReason: FlightDocumentRefusalReason.DuplicateDirectionalLight,
|
|
248
|
+
},
|
|
249
|
+
])('model and text explain agree on $label', ({ document, expectedReason }) => {
|
|
250
|
+
const modelResult = explainFlightDocumentScene3DRefusal(document);
|
|
251
|
+
const text = serializeFlightDocument(document);
|
|
252
|
+
const textResult = explainFlightDocumentScene3DRefusalFromText(text);
|
|
253
|
+
expect(modelResult).not.toBeNull();
|
|
254
|
+
expect(textResult).not.toBeNull();
|
|
255
|
+
expect(textResult!.reason).toBe(modelResult!.reason);
|
|
256
|
+
expect(textResult!.path).toBe(modelResult!.path);
|
|
257
|
+
expect(modelResult!.reason).toBe(expectedReason);
|
|
258
|
+
expect(modelResult!.path).toBe('lights');
|
|
259
|
+
});
|
|
260
|
+
});
|
|
261
|
+
|
|
262
|
+
describe('explainFlightDocumentScene3DRefusal', () => {
|
|
263
|
+
it('explains a dimension mismatch', () => {
|
|
264
|
+
const document = {
|
|
265
|
+
backgroundColor: null,
|
|
266
|
+
kind: 'Scene2D',
|
|
267
|
+
resources: [],
|
|
268
|
+
scene: { children: [], fields: {}, kind: 'DisplayObject' },
|
|
269
|
+
version: 1,
|
|
270
|
+
} as FlightDocument;
|
|
271
|
+
const explanation = explainFlightDocumentScene3DRefusal(document);
|
|
272
|
+
expect(explanation).not.toBeNull();
|
|
273
|
+
expect(explanation!.reason).toBe(FlightDocumentRefusalReason.StructureInvalid);
|
|
274
|
+
expect(explanation!.path).toBe('kind');
|
|
275
|
+
});
|
|
276
|
+
|
|
277
|
+
it('explains an unsupported version', () => {
|
|
278
|
+
const document = {
|
|
279
|
+
cameras: [],
|
|
280
|
+
kind: 'Scene3D',
|
|
281
|
+
lights: [],
|
|
282
|
+
resources: [],
|
|
283
|
+
scene: { children: [], fields: {}, kind: Node3DKind },
|
|
284
|
+
version: 99,
|
|
285
|
+
} as unknown as FlightDocumentScene3D;
|
|
286
|
+
const explanation = explainFlightDocumentScene3DRefusal(document);
|
|
287
|
+
expect(explanation).not.toBeNull();
|
|
288
|
+
expect(explanation!.reason).toBe(FlightDocumentRefusalReason.VersionUnsupported);
|
|
289
|
+
expect(explanation!.path).toBe('version');
|
|
290
|
+
expect(explanation!.version).toBe(99);
|
|
291
|
+
});
|
|
292
|
+
|
|
293
|
+
it('explains a duplicate ambient light', () => {
|
|
294
|
+
const document: FlightDocumentScene3D = {
|
|
295
|
+
cameras: [],
|
|
296
|
+
kind: 'Scene3D',
|
|
297
|
+
lights: [
|
|
298
|
+
{ descriptor: createAmbientLight(), transform: createTransform3D() },
|
|
299
|
+
{ descriptor: createAmbientLight({ color: 0xccccccff, intensity: 0.5 }), transform: createTransform3D() },
|
|
300
|
+
],
|
|
301
|
+
resources: [],
|
|
302
|
+
scene: { children: [], fields: {}, kind: Node3DKind },
|
|
303
|
+
version: 1,
|
|
304
|
+
};
|
|
305
|
+
const explanation = explainFlightDocumentScene3DRefusal(document);
|
|
306
|
+
expect(explanation).not.toBeNull();
|
|
307
|
+
expect(explanation!.reason).toBe(FlightDocumentRefusalReason.DuplicateAmbientLight);
|
|
308
|
+
expect(explanation!.path).toBe('lights');
|
|
309
|
+
});
|
|
310
|
+
|
|
311
|
+
it('explains a duplicate directional light', () => {
|
|
312
|
+
const document: FlightDocumentScene3D = {
|
|
313
|
+
cameras: [],
|
|
314
|
+
kind: 'Scene3D',
|
|
315
|
+
lights: [
|
|
316
|
+
{ descriptor: createDirectionalLight(), transform: createTransform3D() },
|
|
317
|
+
{ descriptor: createDirectionalLight({ color: 0xccccccff, intensity: 0.5 }), transform: createTransform3D() },
|
|
318
|
+
],
|
|
319
|
+
resources: [],
|
|
320
|
+
scene: { children: [], fields: {}, kind: Node3DKind },
|
|
321
|
+
version: 1,
|
|
322
|
+
};
|
|
323
|
+
const explanation = explainFlightDocumentScene3DRefusal(document);
|
|
324
|
+
expect(explanation).not.toBeNull();
|
|
325
|
+
expect(explanation!.reason).toBe(FlightDocumentRefusalReason.DuplicateDirectionalLight);
|
|
326
|
+
expect(explanation!.path).toBe('lights');
|
|
327
|
+
});
|
|
328
|
+
|
|
329
|
+
it('returns null when the document is valid', () => {
|
|
330
|
+
const document: FlightDocumentScene3D = {
|
|
331
|
+
cameras: [],
|
|
332
|
+
kind: 'Scene3D',
|
|
333
|
+
lights: [],
|
|
334
|
+
resources: [],
|
|
335
|
+
scene: { children: [], fields: {}, kind: Node3DKind },
|
|
336
|
+
version: 1,
|
|
337
|
+
};
|
|
338
|
+
const explanation = explainFlightDocumentScene3DRefusal(document);
|
|
339
|
+
expect(explanation).toBeNull();
|
|
340
|
+
});
|
|
341
|
+
});
|
|
342
|
+
|
|
343
|
+
describe('explainFlightDocumentScene3DRefusalFromText', () => {
|
|
344
|
+
it('explains an anchor refusal with parser position', () => {
|
|
345
|
+
const yaml = 'flight: 1\nkind: Scene3D\nanchor: &ref value\n';
|
|
346
|
+
const explanation = explainFlightDocumentScene3DRefusalFromText(yaml);
|
|
347
|
+
expect(explanation).not.toBeNull();
|
|
348
|
+
expect(explanation!.reason).toBe(FlightDocumentRefusalReason.AnchorUnsupported);
|
|
349
|
+
expect(explanation!.line).toBeGreaterThan(0);
|
|
350
|
+
});
|
|
351
|
+
|
|
352
|
+
it('explains a version mismatch in valid YAML', () => {
|
|
353
|
+
const yaml = 'flight: 99\nkind: Scene3D\nscene:\n kind: Node3D\n';
|
|
354
|
+
const explanation = explainFlightDocumentScene3DRefusalFromText(yaml);
|
|
355
|
+
expect(explanation).not.toBeNull();
|
|
356
|
+
expect(explanation!.reason).toBe(FlightDocumentRefusalReason.VersionUnsupported);
|
|
357
|
+
expect(explanation!.path).toBe('version');
|
|
358
|
+
expect(explanation!.version).toBe(99);
|
|
359
|
+
});
|
|
360
|
+
|
|
361
|
+
it('explains a dimension mismatch in valid YAML', () => {
|
|
362
|
+
const yaml = 'flight: 1\nkind: Scene2D\nscene:\n kind: DisplayObject\n';
|
|
363
|
+
const explanation = explainFlightDocumentScene3DRefusalFromText(yaml);
|
|
364
|
+
expect(explanation).not.toBeNull();
|
|
365
|
+
expect(explanation!.reason).toBe(FlightDocumentRefusalReason.StructureInvalid);
|
|
366
|
+
expect(explanation!.path).toBe('kind');
|
|
367
|
+
});
|
|
368
|
+
|
|
369
|
+
it('explains a duplicate ambient light from text', () => {
|
|
370
|
+
const yaml = [
|
|
371
|
+
'flight: 1',
|
|
372
|
+
'kind: Scene3D',
|
|
373
|
+
'scene:',
|
|
374
|
+
' kind: Node3D',
|
|
375
|
+
'lights:',
|
|
376
|
+
' - descriptor:',
|
|
377
|
+
' kind: AmbientLight',
|
|
378
|
+
' - descriptor:',
|
|
379
|
+
' kind: AmbientLight',
|
|
380
|
+
].join('\n');
|
|
381
|
+
const explanation = explainFlightDocumentScene3DRefusalFromText(yaml);
|
|
382
|
+
expect(explanation).not.toBeNull();
|
|
383
|
+
expect(explanation!.reason).toBe(FlightDocumentRefusalReason.DuplicateAmbientLight);
|
|
384
|
+
expect(explanation!.path).toBe('lights');
|
|
385
|
+
});
|
|
386
|
+
|
|
387
|
+
it('explains a duplicate directional light from text', () => {
|
|
388
|
+
const yaml = [
|
|
389
|
+
'flight: 1',
|
|
390
|
+
'kind: Scene3D',
|
|
391
|
+
'scene:',
|
|
392
|
+
' kind: Node3D',
|
|
393
|
+
'lights:',
|
|
394
|
+
' - descriptor:',
|
|
395
|
+
' kind: DirectionalLight',
|
|
396
|
+
' - descriptor:',
|
|
397
|
+
' kind: DirectionalLight',
|
|
398
|
+
].join('\n');
|
|
399
|
+
const explanation = explainFlightDocumentScene3DRefusalFromText(yaml);
|
|
400
|
+
expect(explanation).not.toBeNull();
|
|
401
|
+
expect(explanation!.reason).toBe(FlightDocumentRefusalReason.DuplicateDirectionalLight);
|
|
402
|
+
expect(explanation!.path).toBe('lights');
|
|
403
|
+
});
|
|
404
|
+
|
|
405
|
+
it('returns null for valid Scene3D text', () => {
|
|
406
|
+
const yaml = 'flight: 1\nkind: Scene3D\nscene:\n kind: Node3D\n';
|
|
407
|
+
const explanation = explainFlightDocumentScene3DRefusalFromText(yaml);
|
|
408
|
+
expect(explanation).toBeNull();
|
|
409
|
+
});
|
|
410
|
+
});
|
|
411
|
+
|
|
412
|
+
describe('Scene3DDocumentCamera', () => {
|
|
413
|
+
it('has no direction field', () => {
|
|
414
|
+
expectTypeOf<keyof Scene3DDocumentCamera>().toEqualTypeOf<
|
|
415
|
+
'far' | 'name' | 'near' | 'node' | 'projection' | 'transform'
|
|
416
|
+
>();
|
|
417
|
+
});
|
|
418
|
+
});
|
|
419
|
+
|
|
420
|
+
describe('Scene3DDocumentLight', () => {
|
|
421
|
+
it('has no direction field', () => {
|
|
422
|
+
expectTypeOf<keyof Scene3DDocumentLight>().toEqualTypeOf<'descriptor' | 'name' | 'node' | 'transform'>();
|
|
423
|
+
});
|
|
424
|
+
});
|
|
425
|
+
|
|
426
|
+
function createTestSchemas(): FlightDocumentSchemaRegistry {
|
|
427
|
+
const node3DSchema: FlightDocumentNodeSchema = {
|
|
428
|
+
createNode: (_fields: Readonly<FlightDocumentFields>, _resources: FlightDocumentResourceLookup) => {
|
|
429
|
+
return createNode3D();
|
|
430
|
+
},
|
|
431
|
+
fields: [],
|
|
432
|
+
kind: Node3DKind,
|
|
433
|
+
writeNodeFields: (_out: FlightDocumentFields, _source: Readonly<NodeAny>) => {
|
|
434
|
+
return true;
|
|
435
|
+
},
|
|
436
|
+
};
|
|
437
|
+
|
|
438
|
+
let nodeSchemas = createKeyedTable<FlightDocumentNodeSchema>('flight-document.node', 'none');
|
|
439
|
+
nodeSchemas = withRegistryTableEntry(nodeSchemas, Node3DKind, node3DSchema);
|
|
440
|
+
|
|
441
|
+
return {
|
|
442
|
+
nodeSchemas,
|
|
443
|
+
resourceSchemas: createKeyedTable('flight-document.resource', 'none'),
|
|
444
|
+
shapeCommandSchemas: createKeyedTable('flight-document.shape-command', 'none'),
|
|
445
|
+
};
|
|
446
|
+
}
|