@opsydyn/effect-three 0.2.0 → 0.3.0

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.
Files changed (44) hide show
  1. package/CHANGELOG.md +6 -1
  2. package/README.md +2 -1
  3. package/dist/{index-01kwfekm.js → index-8cf8t6by.js} +327 -24
  4. package/dist/index-8cf8t6by.js.map +41 -0
  5. package/dist/index.js +61 -8
  6. package/dist/index.js.map +3 -3
  7. package/dist/kernel/behaviours.d.ts.map +1 -1
  8. package/dist/kernel/build.d.ts +56 -1
  9. package/dist/kernel/build.d.ts.map +1 -1
  10. package/dist/kernel/cameraMotion.d.ts +3 -1
  11. package/dist/kernel/cameraMotion.d.ts.map +1 -1
  12. package/dist/kernel/cameraShake.d.ts +33 -0
  13. package/dist/kernel/cameraShake.d.ts.map +1 -0
  14. package/dist/kernel/description.d.ts +85 -1
  15. package/dist/kernel/description.d.ts.map +1 -1
  16. package/dist/kernel/diff.d.ts +3 -1
  17. package/dist/kernel/diff.d.ts.map +1 -1
  18. package/dist/kernel/equality.d.ts +5 -1
  19. package/dist/kernel/equality.d.ts.map +1 -1
  20. package/dist/kernel/index.d.ts +1 -1
  21. package/dist/kernel/index.d.ts.map +1 -1
  22. package/dist/kernel/index.js +12 -2
  23. package/dist/kernel/index.js.map +1 -1
  24. package/dist/kernel/pointer.d.ts.map +1 -1
  25. package/dist/kernel/resources.d.ts.map +1 -1
  26. package/dist/kernel/sceneGraph.d.ts +0 -1
  27. package/dist/kernel/sceneGraph.d.ts.map +1 -1
  28. package/dist/runtime/SceneSchema.d.ts +296 -5
  29. package/dist/runtime/SceneSchema.d.ts.map +1 -1
  30. package/package.json +1 -1
  31. package/src/kernel/behaviours.ts +5 -0
  32. package/src/kernel/bodySources.ts +1 -1
  33. package/src/kernel/build.ts +98 -0
  34. package/src/kernel/cameraMotion.ts +3 -0
  35. package/src/kernel/cameraShake.ts +97 -0
  36. package/src/kernel/description.ts +91 -1
  37. package/src/kernel/diff.ts +7 -1
  38. package/src/kernel/equality.ts +47 -0
  39. package/src/kernel/index.ts +5 -0
  40. package/src/kernel/pointer.ts +8 -0
  41. package/src/kernel/resources.ts +69 -0
  42. package/src/kernel/sceneGraph.ts +142 -1
  43. package/src/runtime/SceneSchema.ts +58 -4
  44. package/dist/index-01kwfekm.js.map +0 -40
package/dist/index.js CHANGED
@@ -39,6 +39,7 @@ import {
39
39
  applyTween2,
40
40
  fixed2,
41
41
  spin2,
42
+ billboard2,
42
43
  box2,
43
44
  sphere2,
44
45
  plane2,
@@ -46,6 +47,8 @@ import {
46
47
  torus2,
47
48
  cone2,
48
49
  capsule2,
50
+ roundedBox2,
51
+ backdrop2,
49
52
  ring2,
50
53
  circle2,
51
54
  text2,
@@ -64,6 +67,7 @@ import {
64
67
  lentGeometry2,
65
68
  sharedMaterial2,
66
69
  group2,
70
+ detailed2,
67
71
  headSpace2,
68
72
  jointSpace2,
69
73
  controllerSpace2,
@@ -108,6 +112,7 @@ import {
108
112
  hemisphereLight2,
109
113
  perspectiveCamera2,
110
114
  orthographicCamera2,
115
+ cameraShake2,
111
116
  bloom2,
112
117
  vignette2,
113
118
  film2,
@@ -163,7 +168,7 @@ import {
163
168
  createSceneLoop2,
164
169
  recordingRendererFactory2,
165
170
  createSceneGraph2
166
- } from "./index-01kwfekm.js";
171
+ } from "./index-8cf8t6by.js";
167
172
  var __defProp = Object.defineProperty;
168
173
  var __returnValue = (v) => v;
169
174
  function __exportSetter(name, newValue) {
@@ -207,6 +212,7 @@ __export(exports_SceneSchema, {
207
212
  Animation: () => Animation,
208
213
  AutoRotatedDetail: () => AutoRotatedDetail,
209
214
  Axis: () => Axis,
215
+ BackdropGeometry: () => BackdropGeometry,
210
216
  BasicMaterial: () => BasicMaterial,
211
217
  Behave: () => Behave,
212
218
  Body: () => Body,
@@ -215,6 +221,7 @@ __export(exports_SceneSchema, {
215
221
  BoxGeometry: () => BoxGeometry,
216
222
  ButtonDetail: () => ButtonDetail,
217
223
  Camera: () => Camera,
224
+ CameraShake: () => CameraShake,
218
225
  CapsuleGeometry: () => CapsuleGeometry,
219
226
  CircleGeometry: () => CircleGeometry,
220
227
  ColliderDescription: () => ColliderDescription,
@@ -270,6 +277,7 @@ __export(exports_SceneSchema, {
270
277
  Rgb: () => Rgb,
271
278
  RingGeometry: () => RingGeometry,
272
279
  Rotation: () => Rotation,
280
+ RoundedBoxGeometry: () => RoundedBoxGeometry,
273
281
  SceneDescription: () => SceneDescription,
274
282
  SceneEvent: () => SceneEvent,
275
283
  SceneNode: () => SceneNode,
@@ -442,12 +450,14 @@ var make = (options) => {
442
450
  return program.pipe(Effect3.withSpan("effect-three/SceneRuntime.make"));
443
451
  };
444
452
  // src/runtime/SceneSchema.ts
445
- import { Schema } from "effect";
453
+ import { Effect as Effect4, Schema } from "effect";
446
454
  var NonNegative = Schema.Finite.check(Schema.isGreaterThanOrEqualTo(0));
447
455
  var Positive = Schema.Finite.check(Schema.isGreaterThan(0));
448
456
  var UnitInterval = Schema.Finite.check(Schema.isBetween({ minimum: 0, maximum: 1 }));
449
457
  var Vec3 = Schema.Tuple([Schema.Finite, Schema.Finite, Schema.Finite]);
450
458
  var Axis = Schema.Literals(["x", "y", "z"]);
459
+ var absentAsNull = (schema) => Schema.NullOr(schema).pipe(Schema.withDecodingDefaultKey(Effect4.succeed(null)));
460
+ var absentAsFalse = Schema.Boolean.pipe(Schema.withDecodingDefaultKey(Effect4.succeed(false)));
451
461
  var Rgb = Schema.Int.check(Schema.isBetween({ minimum: 0, maximum: 16777215 }));
452
462
  var Rotation = Schema.Union([
453
463
  Schema.TaggedStruct("Fixed", { euler: Vec3 }),
@@ -455,6 +465,11 @@ var Rotation = Schema.Union([
455
465
  axis: Axis,
456
466
  radiansPerSecond: Schema.Finite,
457
467
  phase: Schema.Finite
468
+ }),
469
+ Schema.TaggedStruct("Billboard", {
470
+ lockX: Schema.Boolean,
471
+ lockY: Schema.Boolean,
472
+ lockZ: Schema.Boolean
458
473
  })
459
474
  ]);
460
475
  var BoxGeometry = Schema.TaggedStruct("Box", {
@@ -492,6 +507,20 @@ var CapsuleGeometry = Schema.TaggedStruct("Capsule", {
492
507
  capSegments: Schema.Int.check(Schema.isGreaterThanOrEqualTo(1)),
493
508
  radialSegments: Segments
494
509
  });
510
+ var RoundedBoxGeometry = Schema.TaggedStruct("RoundedBox", {
511
+ width: Positive,
512
+ height: Positive,
513
+ depth: Positive,
514
+ radius: NonNegative,
515
+ smoothness: Schema.Int.check(Schema.isGreaterThanOrEqualTo(1)),
516
+ bevelSegments: Schema.Int.check(Schema.isGreaterThanOrEqualTo(1)),
517
+ steps: Schema.Int.check(Schema.isGreaterThanOrEqualTo(1)),
518
+ creaseAngle: NonNegative
519
+ });
520
+ var BackdropGeometry = Schema.TaggedStruct("Backdrop", {
521
+ floor: NonNegative,
522
+ segments: Schema.Int.check(Schema.isGreaterThanOrEqualTo(1))
523
+ });
495
524
  var RingGeometry = Schema.TaggedStruct("Ring", {
496
525
  innerRadius: NonNegative,
497
526
  outerRadius: Positive,
@@ -529,7 +558,9 @@ var ShapeGeometry = Schema.Union([
529
558
  ConeGeometry,
530
559
  CapsuleGeometry,
531
560
  RingGeometry,
532
- CircleGeometry
561
+ CircleGeometry,
562
+ RoundedBoxGeometry,
563
+ BackdropGeometry
533
564
  ]);
534
565
  var Behave = Schema.Struct({
535
566
  name: Schema.String,
@@ -754,7 +785,9 @@ var BorrowedNode = Schema.TaggedStruct("Borrowed", {
754
785
  transition: Transition,
755
786
  behaviour: Schema.NullOr(Behave),
756
787
  interactive: Schema.Boolean,
757
- body: Schema.NullOr(Body)
788
+ body: Schema.NullOr(Body),
789
+ castShadow: absentAsFalse,
790
+ receiveShadow: absentAsFalse
758
791
  });
759
792
  var LabelNode = Schema.TaggedStruct("Label", {
760
793
  key: Schema.String,
@@ -872,7 +905,8 @@ var SceneNode = Schema.Union([
872
905
  interactive: Schema.Boolean,
873
906
  children: Schema.Array(Schema.suspend(() => SceneNode)),
874
907
  body: Schema.NullOr(Body),
875
- follow: Schema.NullOr(XrSpace)
908
+ follow: Schema.NullOr(XrSpace),
909
+ detail: absentAsNull(Schema.Struct({ distances: Schema.Array(NonNegative), hysteresis: NonNegative }))
876
910
  }),
877
911
  MeshNode,
878
912
  InstancesNode,
@@ -887,6 +921,18 @@ var SceneNode = Schema.Union([
887
921
  GridNode
888
922
  ]);
889
923
  var CameraDamping = Schema.Finite.check(Schema.isGreaterThanOrEqualTo(0), Schema.isLessThan(1));
924
+ var CameraShake = Schema.Struct({
925
+ intensity: NonNegative,
926
+ decay: Schema.Boolean,
927
+ decayRate: NonNegative,
928
+ maxYaw: NonNegative,
929
+ maxPitch: NonNegative,
930
+ maxRoll: NonNegative,
931
+ yawFrequency: NonNegative,
932
+ pitchFrequency: NonNegative,
933
+ rollFrequency: NonNegative,
934
+ trigger: Schema.Finite
935
+ });
890
936
  var PerspectiveCamera = Schema.TaggedStruct("Perspective", {
891
937
  fov: Schema.Finite.check(Schema.isBetween({ minimum: 0, maximum: 180, exclusiveMinimum: true })),
892
938
  near: Positive,
@@ -894,7 +940,8 @@ var PerspectiveCamera = Schema.TaggedStruct("Perspective", {
894
940
  position: Vec3,
895
941
  lookAt: Vec3,
896
942
  damping: CameraDamping,
897
- autoRotate: Schema.Finite
943
+ autoRotate: Schema.Finite,
944
+ shake: absentAsNull(CameraShake)
898
945
  });
899
946
  var OrthographicCamera = Schema.TaggedStruct("Orthographic", {
900
947
  zoom: Positive,
@@ -903,7 +950,8 @@ var OrthographicCamera = Schema.TaggedStruct("Orthographic", {
903
950
  position: Vec3,
904
951
  lookAt: Vec3,
905
952
  damping: CameraDamping,
906
- autoRotate: Schema.Finite
953
+ autoRotate: Schema.Finite,
954
+ shake: absentAsNull(CameraShake)
907
955
  });
908
956
  var Camera = Schema.Union([PerspectiveCamera, OrthographicCamera]);
909
957
  var NonNegativeFinite = Schema.Finite.check(Schema.isGreaterThanOrEqualTo(0));
@@ -1196,10 +1244,12 @@ export {
1196
1244
  animationEquals2 as animationEquals,
1197
1245
  applyTween2 as applyTween,
1198
1246
  autoRotated2 as autoRotated,
1247
+ backdrop2 as backdrop,
1199
1248
  ballCollider2 as ballCollider,
1200
1249
  basic2 as basic,
1201
1250
  behave2 as behave,
1202
1251
  behaviourEquals2 as behaviourEquals,
1252
+ billboard2 as billboard,
1203
1253
  bloom2 as bloom,
1204
1254
  body2 as body,
1205
1255
  bodyEquals2 as bodyEquals,
@@ -1209,6 +1259,7 @@ export {
1209
1259
  buildMaterial2 as buildMaterial,
1210
1260
  builtinBehaviours2 as builtinBehaviours,
1211
1261
  cameraEquals2 as cameraEquals,
1262
+ cameraShake2 as cameraShake,
1212
1263
  capacityFor2 as capacityFor,
1213
1264
  capsule2 as capsule,
1214
1265
  capsuleCollider2 as capsuleCollider,
@@ -1244,6 +1295,7 @@ export {
1244
1295
  cylinderCollider2 as cylinderCollider,
1245
1296
  defaultOrbit2 as defaultOrbit,
1246
1297
  describedColliders2 as describedColliders,
1298
+ detailed2 as detailed,
1247
1299
  diff2 as diff,
1248
1300
  directionalLight2 as directionalLight,
1249
1301
  dollyCamera2 as dollyCamera,
@@ -1319,6 +1371,7 @@ export {
1319
1371
  ropeJoint2 as ropeJoint,
1320
1372
  rotateCamera2 as rotateCamera,
1321
1373
  rotationEquals2 as rotationEquals,
1374
+ roundedBox2 as roundedBox,
1322
1375
  scene2 as scene,
1323
1376
  shaderGrid2 as shaderGrid,
1324
1377
  shadowMaterial2 as shadowMaterial,
@@ -1357,5 +1410,5 @@ export {
1357
1410
  xrMeshGeometryId2 as xrMeshGeometryId
1358
1411
  };
1359
1412
 
1360
- //# debugId=4A51874F0CADE91E64756E2164756E21
1413
+ //# debugId=B67B56D9B9035A5364756E2164756E21
1361
1414
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -6,9 +6,9 @@
6
6
  "/**\n * Where frames come from. Wraps a kernel `FrameScheduler` so a scene's per-frame callback\n * is registered for exactly the lifetime of its scope.\n *\n * @module\n */\nimport { Context, Effect, Layer } from 'effect';\n\nimport { createGatedFrames, type FrameControl, type FrameScheduler } from '../kernel/index.ts';\n\nconst registration = (scheduler: FrameScheduler, onFrame: () => void) => () => {\n const gate = createGatedFrames(scheduler);\n const unsubscribe = gate.subscribe(onFrame);\n const control: FrameControl = {\n wake: () => gate.setOpen(true),\n sleep: () => gate.setOpen(false),\n };\n return { control, unsubscribe };\n};\n\n/** The frame source service for `scheduler`, for providing directly with `provideService`. */\nexport const fromScheduler = (scheduler: FrameScheduler) => ({\n /**\n * Calls `onFrame` once per frame until the current scope closes, while awake. Returns\n * the control that puts the subscription to sleep and wakes it.\n */\n subscribe: (onFrame: () => void) => {\n const register = Effect.sync(registration(scheduler, onFrame));\n return Effect.acquireRelease(register, (registered) =>\n Effect.sync(registered.unsubscribe),\n ).pipe(Effect.map((registered) => registered.control));\n },\n});\n\nexport class FrameSource extends Context.Service<FrameSource, ReturnType<typeof fromScheduler>>()(\n 'effect-three/FrameSource',\n) {}\n\n/** Provides a frame source backed by `scheduler`. */\nexport const layer = (scheduler: FrameScheduler) =>\n Layer.succeed(FrameSource, fromScheduler(scheduler));\n",
7
7
  "/**\n * App-level owner of shared GPU resources (ADR-005). Every scene runtime built with the\n * same Layer shares one kernel resource store; the store is disposed when the Layer's\n * scope closes.\n *\n * @module\n */\nimport { Context, Effect, Layer } from 'effect';\n\nimport { createResourceStore, type ResourceStore } from '../kernel/index.ts';\n\nexport class ResourceRegistry extends Context.Service<\n ResourceRegistry,\n { readonly store: ResourceStore }\n>()('effect-three/ResourceRegistry') {}\n\nconst acquireStore = Effect.sync(createResourceStore);\n\nconst toService = (store: ResourceStore) => ({ store });\n\nconst scopedStore = Effect.acquireRelease(acquireStore, (store) => Effect.sync(store.dispose));\n\n/** Provides one shared resource store for the lifetime of the Layer. */\nexport const layer = Layer.effect(ResourceRegistry, scopedStore.pipe(Effect.map(toService)));\n",
8
8
  "/**\n * A running scene: a kernel scene graph, a renderer and a frame subscription, all owned\n * by the caller's `Scope`. Closing the scope stops the frame loop, then releases the\n * event queue, the renderer and every resource the scene acquired, in that order.\n *\n * @module\n */\nimport { Clock, Effect, Exit, Match, Option, Queue, Result, Scope, Stream } from 'effect';\n\nimport {\n createSceneClock,\n createSceneGraph,\n type Behaviour,\n createFramePacer,\n createSceneLoop,\n type Op,\n type OverlayPlacement,\n type LabelEngine,\n type PhysicsEngine,\n type ReconcileResult,\n type RendererFactory,\n type SceneDescription,\n type SceneEvent,\n type SceneClock,\n type SceneGraph,\n type SceneRenderer,\n type Viewport,\n} from '../kernel/index.ts';\nimport { InvalidScene, RendererUnavailable } from './errors.ts';\nimport { FrameSource } from './FrameSource.ts';\nimport { ResourceRegistry } from './ResourceRegistry.ts';\n\nexport type SceneRuntimeOptions = {\n readonly scene: SceneDescription;\n readonly renderer: RendererFactory;\n readonly viewport: Viewport;\n /** Events kept when the consumer falls behind; older events are dropped. Default 64. */\n readonly eventCapacity?: number;\n /** Behaviours nodes may name, beside the built-in ones. */\n readonly behaviours?: Readonly<Record<string, Behaviour>>;\n /** The physics engine for meshes with a `body`; without one, bodies stay put. */\n readonly physics?: PhysicsEngine | undefined;\n /** Draws `label` nodes (distance-field text); without one, labels are empty. */\n readonly labels?: LabelEngine | undefined;\n /** Receives where the overlays are after each drawn frame, to move their HTML there. */\n readonly placeOverlays?: (placements: ReadonlyArray<OverlayPlacement>) => void;\n};\n\nconst defaultEventCapacity = 64;\nconst noBehaviours: Readonly<Record<string, Behaviour>> = {};\nconst ignorePlacements = (_placements: ReadonlyArray<OverlayPlacement>): void => undefined;\nconst nanosPerMillisecond = 1_000_000;\nconst nanosPerSecond = 1_000_000_000;\n\nconst toResult = (result: ReconcileResult): Result.Result<ReadonlyArray<Op>, InvalidScene> =>\n Match.valueTags(result, {\n Applied: (applied) => Result.succeed(applied.ops),\n Invalid: ({ error }) => Result.fail(new InvalidScene({ error })),\n });\n\nconst applyViewport = (graph: SceneGraph, renderer: SceneRenderer, viewport: Viewport): void => {\n graph.resize(viewport.width, viewport.height);\n renderer.setViewport(viewport);\n};\n\n/** The engines a scene graph hands work to, and the renderer whose kit shades it. */\ntype Engines = Pick<SceneRuntimeOptions, 'physics' | 'labels' | 'renderer'>;\n\nconst sceneGraph =\n (\n registry: ResourceRegistry['Service'],\n behaviours: Readonly<Record<string, Behaviour>>,\n engines: Engines,\n ) =>\n () =>\n createSceneGraph({\n store: registry.store,\n behaviours,\n physics: engines.physics,\n labels: engines.labels,\n kit: engines.renderer.kit,\n });\n\n/**\n * Reconciles at the current scene time. An idle scene draws no frames, so its last tick\n * can be long past; catching up first makes new transitions start now, not back then.\n */\nconst reconcileNow = (graph: SceneGraph, sceneClock: SceneClock, scene: SceneDescription) => {\n graph.tick(sceneClock.elapsedSeconds());\n return graph.reconcile(scene);\n};\n\nconst viewportChange = (graph: SceneGraph, renderer: SceneRenderer, viewport: Viewport) => () =>\n applyViewport(graph, renderer, viewport);\n\nconst animationChange = (sceneClock: SceneClock, graph: SceneGraph, animating: boolean) => () => {\n sceneClock.setAnimating(animating);\n graph.setAnimating(animating);\n};\n\nconst acquireGraph = (\n registry: ResourceRegistry['Service'],\n behaviours: Readonly<Record<string, Behaviour>>,\n engines: Engines,\n) => {\n const create = Effect.sync(sceneGraph(registry, behaviours, engines));\n return Effect.acquireRelease(create, (graph) => Effect.sync(graph.dispose));\n};\n\nconst acquireRenderer = (factory: RendererFactory) => {\n const create = Effect.try({\n try: factory.create,\n catch: (cause) => new RendererUnavailable({ cause }),\n });\n return Effect.acquireRelease(create, (renderer) => Effect.sync(renderer.dispose));\n};\n\n/** Waits for a renderer that starts asynchronously (WebGPU); a failed start is unavailable. */\nconst awaitReady = (renderer: SceneRenderer) =>\n Option.match(Option.fromNullishOr(renderer.ready), {\n onNone: () => Effect.void,\n onSome: (ready) =>\n Effect.tryPromise({ try: ready, catch: (cause) => new RendererUnavailable({ cause }) }),\n });\n\nconst invalidationListening = (graph: SceneGraph, onInvalidated: () => void) => () =>\n graph.onInvalidated(onInvalidated);\n\nconst acquireInvalidation = (graph: SceneGraph, onInvalidated: () => void) => {\n const listen = Effect.sync(invalidationListening(graph, onInvalidated));\n return Effect.acquireRelease(listen, Effect.sync);\n};\n\nconst acquireEvents = (capacity: number) => {\n const create = Queue.sliding<SceneEvent>(capacity);\n return Effect.acquireRelease(create, Queue.shutdown);\n};\n\nfunction* startScene(options: SceneRuntimeOptions) {\n const registry = yield* ResourceRegistry;\n const frames = yield* FrameSource;\n const clock = yield* Clock.Clock;\n\n const graph = yield* acquireGraph(registry, options.behaviours ?? noBehaviours, options);\n const startupOps = yield* Effect.fromResult(toResult(graph.reconcile(options.scene)));\n const renderer = yield* acquireRenderer(options.renderer);\n yield* awaitReady(renderer);\n applyViewport(graph, renderer, options.viewport);\n const events = yield* acquireEvents(options.eventCapacity ?? defaultEventCapacity);\n\n const sceneClock = createSceneClock(\n () => Number(clock.monotonicTimeNanosUnsafe()) / nanosPerSecond,\n );\n const loop = createSceneLoop({\n graph,\n renderer,\n elapsedSeconds: sceneClock.elapsedSeconds,\n emit: (event) => {\n Queue.offerUnsafe(events, event);\n },\n now: () => Number(clock.monotonicTimeNanosUnsafe()) / nanosPerMillisecond,\n placeOverlays: options.placeOverlays ?? ignorePlacements,\n });\n yield* Effect.addFinalizer(() => Effect.sync(loop.dispose));\n const pacer = createFramePacer(loop);\n pacer.attach(yield* frames.subscribe(pacer.frame));\n yield* acquireInvalidation(graph, pacer.wake);\n\n return {\n /** The hosted scene graph, for inspection. */\n graph,\n /** The operations that built the initial scene. */\n startupOps,\n /**\n * Applies a new description and returns the operations it took. Structurally equal\n * descriptions return no operations and cost no host changes.\n */\n update: (scene: SceneDescription) =>\n Effect.suspend(() => Effect.fromResult(toResult(reconcileNow(graph, sceneClock, scene)))),\n /** Resizes the camera aspect and the renderer's drawing surface. */\n resize: (viewport: Viewport) => Effect.sync(viewportChange(graph, renderer, viewport)),\n /** Freezes (`false`) or resumes (`true`) behaviours; frozen, transitions land at once. */\n setAnimating: (animating: boolean) =>\n Effect.sync(animationChange(sceneClock, graph, animating)),\n /**\n * Draws one frame now, whatever the frame mode: React Three Fiber's `advance`, for\n * `frames: 'never'` scenes and frame-exact capture.\n */\n advance: Effect.sync(pacer.advance),\n /**\n * Draws one frame now, synchronously, for a host's own frame source to call directly:\n * an immersive (WebXR) session's animation loop.\n */\n drawNow: pacer.advance,\n /** Routes pointer input. Synchronous, so DOM listeners can call it directly. */\n pointer: loop.pointer,\n /** Routes XR input: aims, selects, sticks, buttons and surfaces. Synchronous, as `pointer`. */\n xrInput: loop.xrInput,\n /** Scene events, newest kept when the consumer falls behind. */\n events: Stream.fromQueue(events),\n /** Removes and returns every pending event without waiting. */\n drainEvents: Queue.clear(events),\n };\n}\n\n// Startup is atomic: everything is acquired into a child of the caller's scope, which is\n// closed immediately if startup fails or is interrupted. Otherwise a partial scene would\n// stay allocated until the caller's scope closed (under Foldkit: until unmount).\nfunction* startAtomically(options: SceneRuntimeOptions) {\n const parent = yield* Effect.scope;\n const child = yield* Scope.fork(parent);\n return yield* Effect.gen(() => startScene(options)).pipe(\n Scope.provide(child),\n Effect.onError((cause) => Scope.close(child, Exit.failCause(cause))),\n );\n}\n\n/**\n * Starts a scene in the current scope. Fails with `InvalidScene` if the initial\n * description is rejected and `RendererUnavailable` if the renderer can't be created.\n * A failed or interrupted start releases everything it acquired before returning.\n */\nexport const make = (options: SceneRuntimeOptions) => {\n const program = Effect.gen(() => startAtomically(options));\n return program.pipe(Effect.withSpan('effect-three/SceneRuntime.make'));\n};\n\n/** The handle `make` returns. */\nexport type SceneHandle = Effect.Success<ReturnType<typeof make>>;\n",
9
- "/**\n * Effect Schemas for scene descriptions.\n *\n * They validate untrusted descriptions at the boundary, type the Foldkit `scene`\n * property and derive property-test generators. Each decoded `Type` is checked at compile\n * time to be exactly the kernel's description type, so the two can't drift.\n *\n * @module\n */\nimport { Schema } from 'effect';\n\nimport { handJoints, type SceneNode as KernelSceneNode } from '../kernel/description.ts';\n\nconst NonNegative = Schema.Finite.check(Schema.isGreaterThanOrEqualTo(0));\nconst Positive = Schema.Finite.check(Schema.isGreaterThan(0));\nconst UnitInterval = Schema.Finite.check(Schema.isBetween({ minimum: 0, maximum: 1 }));\n\n/** A three-component vector `[x, y, z]` of finite numbers. */\nexport const Vec3 = Schema.Tuple([Schema.Finite, Schema.Finite, Schema.Finite]);\n\n/** A rotation axis. */\nexport const Axis = Schema.Literals(['x', 'y', 'z']);\n\n/** A 24-bit RGB colour, for example `0x3366ff`. */\nexport const Rgb = Schema.Int.check(Schema.isBetween({ minimum: 0, maximum: 0xffffff }));\n\n/** Model-owned Euler angles, or a spin behaviour that owns the rotation. */\nexport const Rotation = Schema.Union([\n Schema.TaggedStruct('Fixed', { euler: Vec3 }),\n Schema.TaggedStruct('Spin', {\n axis: Axis,\n radiansPerSecond: Schema.Finite,\n phase: Schema.Finite,\n }),\n]);\n\n/** Box geometry parameters. */\nexport const BoxGeometry = Schema.TaggedStruct('Box', {\n width: Positive,\n height: Positive,\n depth: Positive,\n});\n\nconst Segments = Schema.Int.check(Schema.isGreaterThanOrEqualTo(3));\n\n/** Sphere geometry parameters. */\nexport const SphereGeometry = Schema.TaggedStruct('Sphere', {\n radius: Positive,\n widthSegments: Segments,\n heightSegments: Schema.Int.check(Schema.isGreaterThanOrEqualTo(2)),\n});\n\n/** Plane geometry parameters. */\nexport const PlaneGeometry = Schema.TaggedStruct('Plane', { width: Positive, height: Positive });\n\n/** Cylinder geometry parameters. A zero radius makes a cone. */\nexport const CylinderGeometry = Schema.TaggedStruct('Cylinder', {\n radiusTop: NonNegative,\n radiusBottom: NonNegative,\n height: Positive,\n radialSegments: Segments,\n});\n\n/** Torus geometry parameters. */\nexport const TorusGeometry = Schema.TaggedStruct('Torus', {\n radius: Positive,\n tube: Positive,\n radialSegments: Segments,\n tubularSegments: Segments,\n});\n\n/** Cone geometry parameters. */\nexport const ConeGeometry = Schema.TaggedStruct('Cone', {\n radius: Positive,\n height: Positive,\n radialSegments: Segments,\n});\n\n/** Capsule geometry parameters. */\nexport const CapsuleGeometry = Schema.TaggedStruct('Capsule', {\n radius: Positive,\n height: NonNegative,\n capSegments: Schema.Int.check(Schema.isGreaterThanOrEqualTo(1)),\n radialSegments: Segments,\n});\n\n/** Ring geometry parameters. */\nexport const RingGeometry = Schema.TaggedStruct('Ring', {\n innerRadius: NonNegative,\n outerRadius: Positive,\n thetaSegments: Segments,\n});\n\n/** Circle geometry parameters. */\nexport const CircleGeometry = Schema.TaggedStruct('Circle', {\n radius: Positive,\n segments: Segments,\n});\n\nconst Steps = Schema.Int.check(Schema.isGreaterThanOrEqualTo(1));\n\n/** Text from a lent typeface font. */\nexport const TextGeometry = Schema.TaggedStruct('Text', {\n text: Schema.String,\n font: Schema.String,\n size: Positive,\n depth: NonNegative,\n curveSegments: Steps,\n bevel: Schema.NullOr(\n Schema.Struct({\n thickness: NonNegative,\n size: NonNegative,\n offset: Schema.Finite,\n segments: Steps,\n }),\n ),\n center: Schema.Boolean,\n letterSpacing: Schema.Finite,\n lineHeight: NonNegative,\n align: Schema.Literals(['left', 'center', 'right']),\n});\n\n/** Any geometry shape. */\nexport const ShapeGeometry = Schema.Union([\n TextGeometry,\n BoxGeometry,\n SphereGeometry,\n PlaneGeometry,\n CylinderGeometry,\n TorusGeometry,\n ConeGeometry,\n CapsuleGeometry,\n RingGeometry,\n CircleGeometry,\n]);\n\n/** A registered behaviour, by name, with numeric parameters. */\nexport const Behave = Schema.Struct({\n name: Schema.String,\n params: Schema.Record(Schema.String, Schema.Finite),\n});\n\n/** How a transition progresses. */\nexport const Easing = Schema.Literals(['linear', 'easeInOutCubic', 'easeOutCubic', 'easeOutBack']);\n\n/** How position and scale changes are shown. */\nexport const Transition = Schema.Union([\n Schema.TaggedStruct('Instant', {}),\n Schema.TaggedStruct('Ease', { seconds: Positive, easing: Easing }),\n]);\n\n/** Which faces a material draws. */\nexport const MaterialSide = Schema.Literals(['front', 'back', 'double']);\n\n/** A texture lent to the store, by id, or `null` for none. */\nconst TextureId = Schema.NullOr(Schema.String);\n\nconst surface = {\n opacity: UnitInterval,\n transparent: Schema.Boolean,\n side: MaterialSide,\n wireframe: Schema.Boolean,\n};\n\nconst shaded = { ...surface, flatShading: Schema.Boolean };\n\n/** Unlit material parameters. */\nexport const BasicMaterial = Schema.TaggedStruct('Basic', {\n color: Rgb,\n map: TextureId,\n ...surface,\n});\n\n/** Matte material parameters. */\nexport const LambertMaterial = Schema.TaggedStruct('Lambert', {\n color: Rgb,\n map: TextureId,\n emissive: Rgb,\n ...shaded,\n});\n\n/** Shiny material parameters. */\nexport const PhongMaterial = Schema.TaggedStruct('Phong', {\n color: Rgb,\n map: TextureId,\n emissive: Rgb,\n specular: Rgb,\n shininess: NonNegative,\n ...shaded,\n});\n\nconst pbr = {\n color: Rgb,\n map: TextureId,\n roughness: UnitInterval,\n metalness: UnitInterval,\n emissive: Rgb,\n emissiveIntensity: NonNegative,\n};\n\n/** Standard (PBR) material parameters. */\nexport const StandardMaterial = Schema.TaggedStruct('Standard', { ...pbr, ...shaded });\n\n/** Physical material parameters: index of refraction in [1, 2.333], the range three.js documents. */\nexport const PhysicalMaterial = Schema.TaggedStruct('Physical', {\n ...pbr,\n clearcoat: UnitInterval,\n clearcoatRoughness: UnitInterval,\n transmission: UnitInterval,\n ior: Schema.Finite.check(Schema.isBetween({ minimum: 1, maximum: 2.333 })),\n ...shaded,\n});\n\n/** Normal-coloured material parameters. */\nexport const NormalMaterial = Schema.TaggedStruct('Normal', shaded);\n\n/** A shadow catcher: only the shadows cast onto it. */\nexport const ShadowMaterial = Schema.TaggedStruct('Shadow', { color: Rgb, opacity: UnitInterval });\n\n/** Any material kind. */\nexport const SurfaceMaterial = Schema.Union([\n ShadowMaterial,\n BasicMaterial,\n LambertMaterial,\n PhongMaterial,\n StandardMaterial,\n PhysicalMaterial,\n NormalMaterial,\n]);\n\n/** An owned geometry or a reference to a shared one. */\nexport const GeometryRef = Schema.Union([\n ...ShapeGeometry.members,\n Schema.TaggedStruct('SharedGeometry', { id: Schema.String }),\n Schema.TaggedStruct('LentGeometry', { id: Schema.String }),\n]);\n\n/** An owned material or a reference to a shared one. */\nexport const MaterialRef = Schema.Union([\n ...SurfaceMaterial.members,\n Schema.TaggedStruct('SharedMaterial', { id: Schema.String }),\n]);\n\n/** Shared resource definitions. */\nexport const ResourceDefinitions = Schema.Struct({\n geometries: Schema.Array(Schema.Struct({ id: Schema.String, geometry: ShapeGeometry })),\n materials: Schema.Array(Schema.Struct({ id: Schema.String, material: SurfaceMaterial })),\n});\n\n/** A renderable mesh. */\nconst Upright = { halfHeight: Positive, radius: Positive };\n\n/** A collider of a body's own, placed in it. */\nexport const ColliderDescription = Schema.Struct({\n shape: Schema.Union([\n Schema.TaggedStruct('Cuboid', { halfExtents: Vec3 }),\n Schema.TaggedStruct('Ball', { radius: Positive }),\n Schema.TaggedStruct('Capsule', Upright),\n Schema.TaggedStruct('Cylinder', Upright),\n Schema.TaggedStruct('Cone', Upright),\n ]),\n position: Vec3,\n rotation: Vec3,\n name: Schema.NullOr(Schema.String),\n});\n\nconst Group = Schema.Int.check(Schema.isBetween({ minimum: 0, maximum: 15 }));\n\n/** Collision groups: those a body is in, and those it interacts with (null: all). */\nexport const InteractionGroups = Schema.Struct({\n memberships: Schema.Array(Group),\n filters: Schema.NullOr(Schema.Array(Group)),\n});\n\n/** A rigid body for a mesh, group, model or instances. */\nexport const Body = Schema.Struct({\n type: Schema.Literals(['dynamic', 'fixed', 'kinematic']),\n collider: Schema.Literals(['cuboid', 'ball', 'hull', 'trimesh']),\n mass: Schema.NullOr(Positive),\n friction: NonNegative,\n restitution: NonNegative,\n linearDamping: NonNegative,\n angularDamping: NonNegative,\n gravityScale: Schema.Finite,\n ccd: Schema.Boolean,\n sensor: Schema.Boolean,\n linearVelocity: Vec3,\n angularVelocity: Vec3,\n impulse: Schema.NullOr(Schema.Struct({ id: Schema.Finite, impulse: Vec3 })),\n colliders: Schema.NullOr(Schema.Array(ColliderDescription)),\n contactForces: Schema.NullOr(NonNegative),\n collisionGroups: Schema.NullOr(InteractionGroups),\n solverGroups: Schema.NullOr(InteractionGroups),\n});\n\n/** A physics world. */\nconst Handedness = Schema.Literals(['left', 'right']);\n\n/** A space an immersive session tracks, for a group to follow. */\nexport const XrSpace = Schema.Union([\n Schema.TaggedStruct('Head', {}),\n Schema.TaggedStruct('Joint', { hand: Handedness, joint: Schema.Literals(handJoints) }),\n Schema.TaggedStruct('Controller', { hand: Handedness, space: Schema.Literals(['grip', 'ray']) }),\n Schema.TaggedStruct('Anchor', { id: Schema.String }),\n Schema.TaggedStruct('Plane', { id: Schema.String }),\n Schema.TaggedStruct('Mesh', { id: Schema.String }),\n]);\n\n/** A body a joint holds: a node's, or one instance's. */\nexport const BodyRef = Schema.Struct({\n key: Schema.String,\n instance: Schema.NullOr(Schema.String),\n});\n\n/** A joint's motor: a target position and velocity, and how hard it pursues each. */\nexport const JointMotor = Schema.Struct({\n position: Schema.Finite,\n velocity: Schema.Finite,\n stiffness: NonNegative,\n damping: NonNegative,\n});\n\n/** A joint's range of motion. */\nexport const JointLimits = Schema.Tuple([Schema.Finite, Schema.Finite]);\n\n/** How a joint holds its bodies. */\nexport const JointKind = Schema.Union([\n Schema.TaggedStruct('Fixed', { frameA: Vec3, frameB: Vec3 }),\n Schema.TaggedStruct('Spherical', {}),\n Schema.TaggedStruct('Revolute', {\n axis: Vec3,\n limits: Schema.NullOr(JointLimits),\n motor: Schema.NullOr(JointMotor),\n }),\n Schema.TaggedStruct('Prismatic', {\n axis: Vec3,\n limits: Schema.NullOr(JointLimits),\n motor: Schema.NullOr(JointMotor),\n }),\n Schema.TaggedStruct('Rope', { length: Schema.Finite }),\n Schema.TaggedStruct('Spring', {\n restLength: Schema.Finite,\n stiffness: Schema.Finite,\n damping: Schema.Finite,\n }),\n]);\n\n/** A joint between two bodies. */\nexport const Joint = Schema.Struct({\n key: Schema.String,\n a: BodyRef,\n b: BodyRef,\n anchorA: Vec3,\n anchorB: Vec3,\n kind: JointKind,\n contacts: Schema.Boolean,\n});\n\nexport const Physics = Schema.Struct({\n gravity: Vec3,\n paused: Schema.Boolean,\n timeStep: Positive,\n interpolate: Schema.Boolean,\n debug: Schema.Boolean,\n joints: Schema.Array(Joint),\n});\n\nexport const MeshNode = Schema.TaggedStruct('Mesh', {\n key: Schema.String,\n position: Vec3,\n rotation: Rotation,\n scale: Vec3,\n transition: Transition,\n behaviour: Schema.NullOr(Behave),\n geometry: GeometryRef,\n material: MaterialRef,\n interactive: Schema.Boolean,\n castShadow: Schema.Boolean,\n receiveShadow: Schema.Boolean,\n body: Schema.NullOr(Body),\n});\n\n/** One instance of an instances node. */\nexport const Instance = Schema.Struct({\n key: Schema.String,\n position: Vec3,\n rotation: Vec3,\n scale: Vec3,\n color: Rgb,\n});\n\n/** Many instances of one geometry and material. */\nexport const InstancesNode = Schema.TaggedStruct('Instances', {\n key: Schema.String,\n position: Vec3,\n rotation: Rotation,\n scale: Vec3,\n transition: Transition,\n behaviour: Schema.NullOr(Behave),\n geometry: GeometryRef,\n material: MaterialRef,\n interactive: Schema.Boolean,\n castShadow: Schema.Boolean,\n receiveShadow: Schema.Boolean,\n instances: Schema.Array(Instance),\n body: Schema.NullOr(Body),\n});\n\n/** An application object lent to the store under `id`. */\nexport const Animation = Schema.Struct({\n clip: Schema.String,\n speed: Schema.Finite,\n loop: Schema.Boolean,\n});\n\nexport const BorrowedNode = Schema.TaggedStruct('Borrowed', {\n key: Schema.String,\n id: Schema.String,\n animation: Schema.NullOr(Animation),\n position: Vec3,\n rotation: Rotation,\n scale: Vec3,\n transition: Transition,\n behaviour: Schema.NullOr(Behave),\n interactive: Schema.Boolean,\n body: Schema.NullOr(Body),\n});\n\n/** Distance-field text. */\nexport const LabelNode = Schema.TaggedStruct('Label', {\n key: Schema.String,\n position: Vec3,\n rotation: Rotation,\n scale: Vec3,\n transition: Transition,\n behaviour: Schema.NullOr(Behave),\n interactive: Schema.Boolean,\n text: Schema.String,\n font: Schema.NullOr(Schema.String),\n fontSize: Positive,\n color: Rgb,\n fillOpacity: NonNegative,\n anchorX: Schema.Union([Schema.Literals(['left', 'center', 'right']), Schema.Finite]),\n anchorY: Schema.Union([\n Schema.Literals(['top', 'top-baseline', 'middle', 'bottom-baseline', 'bottom']),\n Schema.Finite,\n ]),\n maxWidth: Schema.NullOr(Positive),\n lineHeight: Schema.NullOr(Positive),\n letterSpacing: Schema.Finite,\n textAlign: Schema.Literals(['left', 'right', 'center', 'justify']),\n outlineWidth: NonNegative,\n outlineColor: Rgb,\n outlineOpacity: NonNegative,\n outlineBlur: NonNegative,\n colorRanges: Schema.Array(\n Schema.Struct({ start: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0)), color: Rgb }),\n ),\n curveRadius: Schema.Finite,\n material: Schema.NullOr(MaterialRef),\n});\n\n/** Uniform ambient light. */\nexport const AmbientLightNode = Schema.TaggedStruct('AmbientLight', {\n key: Schema.String,\n color: Rgb,\n intensity: NonNegative,\n});\n\n/** Directional light. */\nconst isPowerOfTwo = (size: number) =>\n Number.isInteger(Math.log2(size)) || 'expected a power of two';\n\n/** Shadow map size: a power of two from 16 to 8192 texels. */\nconst ShadowMapSize = Schema.Int.check(\n Schema.isBetween({ minimum: 16, maximum: 8192 }),\n Schema.makeFilter(isPowerOfTwo),\n);\n\nexport const DirectionalLightNode = Schema.TaggedStruct('DirectionalLight', {\n key: Schema.String,\n color: Rgb,\n intensity: NonNegative,\n position: Vec3,\n castShadow: Schema.Boolean,\n shadowMapSize: ShadowMapSize,\n shadowBias: Schema.Finite,\n shadowArea: Positive,\n});\n\n/** Point light. */\nexport const PointLightNode = Schema.TaggedStruct('PointLight', {\n key: Schema.String,\n color: Rgb,\n intensity: NonNegative,\n position: Vec3,\n distance: NonNegative,\n decay: NonNegative,\n castShadow: Schema.Boolean,\n shadowMapSize: ShadowMapSize,\n shadowBias: Schema.Finite,\n});\n\n/** Spot light: `angle` in (0, π/2], `penumbra` in [0, 1]. */\nexport const SpotLightNode = Schema.TaggedStruct('SpotLight', {\n key: Schema.String,\n color: Rgb,\n intensity: NonNegative,\n position: Vec3,\n target: Vec3,\n distance: NonNegative,\n angle: Schema.Finite.check(\n Schema.isBetween({ minimum: 0, maximum: Math.PI / 2, exclusiveMinimum: true }),\n ),\n penumbra: Schema.Finite.check(Schema.isBetween({ minimum: 0, maximum: 1 })),\n decay: NonNegative,\n castShadow: Schema.Boolean,\n shadowMapSize: ShadowMapSize,\n shadowBias: Schema.Finite,\n});\n\n/** Hemisphere light. */\n/** A grid of lines on the XZ plane. */\nexport const GridNode = Schema.TaggedStruct('Grid', {\n key: Schema.String,\n position: Vec3,\n size: Positive,\n divisions: Schema.Int.check(Schema.isGreaterThanOrEqualTo(1)),\n color: Rgb,\n centerColor: Rgb,\n});\n\n/** Drei's shader grid. */\nexport const ShaderGridNode = Schema.TaggedStruct('ShaderGrid', {\n key: Schema.String,\n position: Vec3,\n rotation: Vec3,\n size: Schema.Tuple([Positive, Positive]),\n cellSize: Positive,\n cellThickness: NonNegative,\n cellColor: Rgb,\n sectionSize: Positive,\n sectionThickness: NonNegative,\n sectionColor: Rgb,\n infinite: Schema.Boolean,\n followCamera: Schema.Boolean,\n fadeDistance: Positive,\n fadeStrength: NonNegative,\n fadeFrom: Schema.Finite,\n side: Schema.Literals(['front', 'back', 'double']),\n});\n\nexport const HemisphereLightNode = Schema.TaggedStruct('HemisphereLight', {\n key: Schema.String,\n color: Rgb,\n groundColor: Rgb,\n intensity: NonNegative,\n position: Vec3,\n});\n\n/** Any scene node. Groups nest recursively. */\nexport const SceneNode: Schema.Codec<KernelSceneNode> = Schema.Union([\n Schema.TaggedStruct('Group', {\n key: Schema.String,\n position: Vec3,\n rotation: Rotation,\n scale: Vec3,\n transition: Transition,\n behaviour: Schema.NullOr(Behave),\n interactive: Schema.Boolean,\n children: Schema.Array(Schema.suspend((): Schema.Codec<KernelSceneNode> => SceneNode)),\n body: Schema.NullOr(Body),\n follow: Schema.NullOr(XrSpace),\n }),\n MeshNode,\n InstancesNode,\n BorrowedNode,\n LabelNode,\n ShaderGridNode,\n AmbientLightNode,\n DirectionalLightNode,\n PointLightNode,\n SpotLightNode,\n HemisphereLightNode,\n GridNode,\n]);\n\n/** The fraction of the way a camera closes every sixtieth of a second: 0 jumps. */\nconst CameraDamping = Schema.Finite.check(Schema.isGreaterThanOrEqualTo(0), Schema.isLessThan(1));\n\n/** A perspective camera. */\nexport const PerspectiveCamera = Schema.TaggedStruct('Perspective', {\n fov: Schema.Finite.check(Schema.isBetween({ minimum: 0, maximum: 180, exclusiveMinimum: true })),\n near: Positive,\n far: Positive,\n position: Vec3,\n lookAt: Vec3,\n damping: CameraDamping,\n autoRotate: Schema.Finite,\n});\n\n/** An orthographic camera; `zoom` is CSS pixels per world unit. */\nexport const OrthographicCamera = Schema.TaggedStruct('Orthographic', {\n zoom: Positive,\n near: Positive,\n far: Positive,\n position: Vec3,\n lookAt: Vec3,\n damping: CameraDamping,\n autoRotate: Schema.Finite,\n});\n\n/** The active camera. */\nexport const Camera = Schema.Union([PerspectiveCamera, OrthographicCamera]);\n\nconst NonNegativeFinite = Schema.Finite.check(Schema.isGreaterThanOrEqualTo(0));\n\n/** A post-processing effect. */\nexport const PostEffect = Schema.Union([\n Schema.TaggedStruct('Bloom', {\n strength: NonNegativeFinite,\n radius: NonNegativeFinite,\n threshold: NonNegativeFinite,\n }),\n Schema.TaggedStruct('Vignette', { offset: NonNegativeFinite, darkness: NonNegativeFinite }),\n Schema.TaggedStruct('Film', { intensity: NonNegativeFinite, grayscale: Schema.Boolean }),\n]);\n\n/** Scene-wide render settings. */\nexport const RenderSettings = Schema.Struct({\n effects: Schema.Array(PostEffect),\n frames: Schema.Literals(['always', 'demand', 'never']),\n resolution: Schema.Finite.check(\n Schema.isBetween({ minimum: 0, maximum: 1, exclusiveMinimum: true }),\n ),\n shadows: Schema.Literals(['off', 'basic', 'percentage', 'soft', 'variance']),\n toneMapping: Schema.Literals(['none', 'linear', 'reinhard', 'cineon', 'aces', 'agx', 'neutral']),\n exposure: Positive,\n colorSpace: Schema.Literals(['srgb', 'linear']),\n});\n\n/** A view of the scene into part of the canvas. */\nexport const View = Schema.Struct({\n key: Schema.String,\n camera: Camera,\n rect: Schema.Struct({\n x: Schema.Finite,\n y: Schema.Finite,\n width: Schema.Finite.check(Schema.isGreaterThan(0)),\n height: Schema.Finite.check(Schema.isGreaterThan(0)),\n }),\n});\n\n/** A scene rendered into a texture lent under `id`. */\nexport const RenderTexture = Schema.Struct({\n id: Schema.String,\n width: Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 8192 })),\n height: Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 8192 })),\n camera: Camera,\n background: Schema.NullOr(Rgb),\n children: Schema.Array(SceneNode),\n});\n\n/** A complete scene description. */\n/** A point to show HTML at. */\nexport const Overlay = Schema.Struct({\n key: Schema.String,\n node: Schema.NullOr(Schema.String),\n position: Vec3,\n center: Schema.Boolean,\n distanceFactor: Schema.NullOr(Positive),\n occlude: Schema.Boolean,\n zIndexRange: Schema.Tuple([Schema.Int, Schema.Int]),\n view: Schema.NullOr(Schema.String),\n});\n\n/** Image-based lighting and background. */\nexport const Environment = Schema.Struct({\n map: Schema.NullOr(Schema.String),\n background: Schema.Union([Schema.Boolean, Schema.Literal('only')]),\n backgroundBlurriness: Schema.Finite.check(Schema.isBetween({ minimum: 0, maximum: 1 })),\n backgroundIntensity: NonNegative,\n environmentIntensity: NonNegative,\n});\n\n/** A daylight sky. */\nexport const Sky = Schema.Struct({\n sunPosition: Vec3,\n turbidity: NonNegative,\n rayleigh: NonNegative,\n mieCoefficient: NonNegative,\n mieDirectionalG: UnitInterval,\n clouds: UnitInterval,\n distance: Positive,\n});\n\n/** Soft ground shadows. */\nexport const ContactShadows = Schema.Struct({\n position: Vec3,\n size: Schema.Tuple([Positive, Positive]),\n near: Schema.Finite,\n far: Positive,\n blur: NonNegative,\n smooth: Schema.Boolean,\n opacity: UnitInterval,\n color: Rgb,\n resolution: Schema.Int.check(Schema.isBetween({ minimum: 16, maximum: 4096 })),\n});\n\n/** Immersive presentation. */\n/** An anchor the description places in the scene. */\nexport const XrAnchor = Schema.Struct({ id: Schema.String, position: Vec3, rotation: Vec3 });\n\nexport const Xr = Schema.Struct({\n origin: Vec3,\n heading: Schema.Finite,\n referenceSpace: Schema.Literals(['local-floor', 'local', 'bounded-floor']),\n framebufferScale: Positive,\n hitTest: Schema.Boolean,\n showInputs: Schema.Boolean,\n anchors: Schema.Array(XrAnchor),\n planes: Schema.Boolean,\n meshes: Schema.Boolean,\n domOverlay: Schema.Boolean,\n glide: Schema.NullOr(\n Schema.Struct({\n speed: NonNegative,\n turn: Schema.Literals(['smooth', 'snap']),\n turnSpeed: NonNegative,\n snapDegrees: NonNegative,\n }),\n ),\n});\n\n/** Whether the scene claims the pointer's gestures from the page. */\nexport const Gestures = Schema.Literals(['page', 'scene']);\n\nexport const SceneDescription = Schema.Struct({\n camera: Camera,\n gestures: Gestures,\n views: Schema.Array(View),\n renderTextures: Schema.Array(RenderTexture),\n overlays: Schema.Array(Overlay),\n environment: Schema.NullOr(Environment),\n sky: Schema.NullOr(Sky),\n contactShadows: Schema.NullOr(ContactShadows),\n physics: Schema.NullOr(Physics),\n xr: Schema.NullOr(Xr),\n measure: Schema.Array(Schema.String),\n render: RenderSettings,\n resources: ResourceDefinitions,\n children: Schema.Array(SceneNode),\n});\n\n/** Detail of pointer-leave events: the interactive mesh's key. */\nexport const KeyDetail = Schema.Struct({ key: Schema.String });\n\n/**\n * Where the pointer met an interactive mesh: its key and ancestor path, the world-space\n * hit point, the distance from the camera, the world-space face normal, the texture\n * coordinates and the pointer's world-space ray.\n */\nexport const HitDetail = Schema.Struct({\n key: Schema.String,\n instance: Schema.optionalKey(Schema.String),\n part: Schema.optionalKey(Schema.String),\n view: Schema.optionalKey(Schema.String),\n path: Schema.Array(Schema.String),\n point: Vec3,\n distance: Schema.Finite,\n normal: Vec3,\n uv: Schema.Tuple([Schema.Finite, Schema.Finite]),\n ray: Schema.Struct({ origin: Vec3, direction: Vec3 }),\n});\n\n/** Detail of button events: the hit plus `MouseEvent.button`. */\nexport const ButtonDetail = Schema.Struct({ ...HitDetail.fields, button: Schema.Int });\n\n/** Detail of wheel events: the hit plus `WheelEvent.deltaX` and `deltaY`. */\nexport const WheelDetail = Schema.Struct({\n ...HitDetail.fields,\n deltaX: Schema.Finite,\n deltaY: Schema.Finite,\n});\n\n/** Detail of a click that hit no interactive mesh. */\nexport const MissDetail = Schema.Struct({ button: Schema.Int });\n\n/** A world-space ray: an origin and a unit direction. */\nexport const Ray = HitDetail.fields.ray;\n\n/** Detail of drag events: the captured mesh, the pressed button and the pointer's ray. */\nexport const DragDetail = Schema.Struct({ key: Schema.String, button: Schema.Int, ray: Ray });\n\n/** Detail of performance changes: the fps average and the new factor (0 to 1). */\nexport const PerformanceDetail = Schema.Struct({\n fps: Schema.Finite,\n factor: Schema.Finite.check(Schema.isBetween({ minimum: 0, maximum: 1 })),\n});\n\n/** Modifier keys held during an input. */\nexport const Modifiers = Schema.Struct({\n shift: Schema.Boolean,\n control: Schema.Boolean,\n meta: Schema.Boolean,\n alt: Schema.Boolean,\n});\n\nconst regionFields = {\n view: Schema.optionalKey(Schema.String),\n width: Schema.Finite,\n height: Schema.Finite,\n x: Schema.Finite,\n y: Schema.Finite,\n};\n\n/** A drag, wheel or pinch on the canvas: distances in CSS pixels since the last one. */\nexport const Gesture = Schema.Union([\n Schema.TaggedStruct('Drag', {\n button: Schema.Int,\n modifiers: Modifiers,\n key: Schema.optionalKey(Schema.String),\n ...regionFields,\n deltaX: Schema.Finite,\n deltaY: Schema.Finite,\n }),\n Schema.TaggedStruct('Wheel', {\n modifiers: Modifiers,\n ...regionFields,\n deltaX: Schema.Finite,\n deltaY: Schema.Finite,\n }),\n Schema.TaggedStruct('Pinch', {\n ...regionFields,\n scale: Schema.Finite,\n deltaX: Schema.Finite,\n deltaY: Schema.Finite,\n }),\n]);\n\n/**\n * Detail of collision events: the two bodies' keys (and instances', for bodies on\n * instances), and whether they began touching.\n */\nexport const CollisionDetail = Schema.Struct({\n a: Schema.String,\n aInstance: Schema.optionalKey(Schema.String),\n aPart: Schema.optionalKey(Schema.String),\n b: Schema.String,\n bInstance: Schema.optionalKey(Schema.String),\n bPart: Schema.optionalKey(Schema.String),\n started: Schema.Boolean,\n});\n\nconst XrHand = Schema.Literals(['left', 'right', 'none']);\n\n/** Detail of XR stick events: a thumbstick pushed past halfway, or let back. */\nexport const XrStickDetail = Schema.Struct({\n hand: XrHand,\n direction: Schema.Literals(['center', 'left', 'right', 'forward', 'back']),\n});\n\n/** Detail of XR button events: a controller button pressed or released. */\nexport const XrButtonDetail = Schema.Struct({\n hand: XrHand,\n button: Schema.Literals(['trigger', 'squeeze', 'touchpad', 'thumbstick', 'primary', 'secondary']),\n pressed: Schema.Boolean,\n});\n\n/** Detail of XR moved events: where gliding left the player. */\nexport const XrMovedDetail = Schema.Struct({ origin: Vec3, heading: Schema.Finite });\n\n/** Detail of XR surface events: in AR, where a select met a real surface. */\nexport const XrSurfaceDetail = Schema.Struct({ hand: XrHand, point: Vec3, normal: Vec3 });\n\n/** A detected plane, in the scene's space. */\nexport const XrPlane = Schema.Struct({\n id: Schema.String,\n orientation: Schema.Literals(['horizontal', 'vertical']),\n label: Schema.String,\n position: Vec3,\n rotation: Vec3,\n polygon: Schema.Array(Vec3),\n});\n\n/** Detail of XR planes events: every plane the session has detected, as it is now. */\nexport const XrPlanesDetail = Schema.Struct({ planes: Schema.Array(XrPlane) });\n\n/** A detected mesh, in the scene's space: its geometry is lent for `xrMesh(id)`. */\nexport const XrMesh = Schema.Struct({\n id: Schema.String,\n label: Schema.String,\n position: Vec3,\n rotation: Vec3,\n});\n\n/** Detail of XR meshes events: every mesh the session has detected, as it is now. */\nexport const XrMeshesDetail = Schema.Struct({ meshes: Schema.Array(XrMesh) });\n\n/** Detail of contact force events: the two bodies, and how hard they pushed. */\nexport const ContactForceDetail = Schema.Struct({\n a: Schema.String,\n aInstance: Schema.optionalKey(Schema.String),\n aPart: Schema.optionalKey(Schema.String),\n b: Schema.String,\n bInstance: Schema.optionalKey(Schema.String),\n bPart: Schema.optionalKey(Schema.String),\n totalForce: Vec3,\n totalForceMagnitude: Schema.Finite,\n maxForceDirection: Vec3,\n maxForceMagnitude: Schema.Finite,\n});\n\nconst Rect = Schema.Tuple([Schema.Finite, Schema.Finite, Schema.Finite, Schema.Finite]);\n\n/** Detail of label measured events: a label's laid-out size in its own units. */\nexport const LabelMeasuredDetail = Schema.Struct({\n key: Schema.String,\n block: Rect,\n visible: Rect,\n});\n\n/** Detail of measured events: a node's world bounding box. */\nexport const MeasuredDetail = Schema.Struct({ key: Schema.String, min: Vec3, max: Vec3 });\n\n/** Detail of auto-rotated events: where a camera turning by itself got to. */\nexport const AutoRotatedDetail = Schema.Struct({\n view: Schema.optionalKey(Schema.String),\n position: Vec3,\n});\n\n/** Detail of gesture events. */\nexport const GestureDetail = Schema.Struct({ gesture: Gesture });\n\n/** A pointer interaction with an interactive mesh, or a miss. */\nexport const SceneEvent = Schema.Union([\n Schema.TaggedStruct('PointerEnter', HitDetail.fields),\n Schema.TaggedStruct('PointerLeave', KeyDetail.fields),\n Schema.TaggedStruct('PointerMove', HitDetail.fields),\n Schema.TaggedStruct('PointerDown', ButtonDetail.fields),\n Schema.TaggedStruct('PointerUp', ButtonDetail.fields),\n Schema.TaggedStruct('Click', ButtonDetail.fields),\n Schema.TaggedStruct('DoubleClick', ButtonDetail.fields),\n Schema.TaggedStruct('ContextMenu', HitDetail.fields),\n Schema.TaggedStruct('Wheel', WheelDetail.fields),\n Schema.TaggedStruct('PointerMissed', MissDetail.fields),\n Schema.TaggedStruct('Drag', DragDetail.fields),\n Schema.TaggedStruct('DragEnd', DragDetail.fields),\n Schema.TaggedStruct('Gesture', GestureDetail.fields),\n Schema.TaggedStruct('AutoRotated', AutoRotatedDetail.fields),\n Schema.TaggedStruct('Collision', CollisionDetail.fields),\n Schema.TaggedStruct('Measured', MeasuredDetail.fields),\n Schema.TaggedStruct('LabelMeasured', LabelMeasuredDetail.fields),\n Schema.TaggedStruct('ContactForce', ContactForceDetail.fields),\n Schema.TaggedStruct('XrStick', XrStickDetail.fields),\n Schema.TaggedStruct('XrButton', XrButtonDetail.fields),\n Schema.TaggedStruct('XrSurface', XrSurfaceDetail.fields),\n Schema.TaggedStruct('XrMoved', XrMovedDetail.fields),\n Schema.TaggedStruct('XrPlanes', XrPlanesDetail.fields),\n Schema.TaggedStruct('XrMeshes', XrMeshesDetail.fields),\n Schema.TaggedStruct('PerformanceChanged', PerformanceDetail.fields),\n]);\n\n/** Why a scene description was rejected. */\nexport const DescriptionError = Schema.Union([\n Schema.TaggedStruct('DuplicateKey', { key: Schema.String }),\n Schema.TaggedStruct('DuplicateResourceId', {\n resource: Schema.Literals(['geometry', 'material']),\n id: Schema.String,\n }),\n Schema.TaggedStruct('UnknownSharedGeometry', { nodeKey: Schema.String, id: Schema.String }),\n Schema.TaggedStruct('UnknownSharedMaterial', { nodeKey: Schema.String, id: Schema.String }),\n Schema.TaggedStruct('DuplicateInstanceKey', { nodeKey: Schema.String, key: Schema.String }),\n Schema.TaggedStruct('UnknownBehaviour', { nodeKey: Schema.String, name: Schema.String }),\n Schema.TaggedStruct('DuplicateViewKey', { key: Schema.String }),\n Schema.TaggedStruct('DuplicateOverlayKey', { key: Schema.String }),\n Schema.TaggedStruct('UnknownOverlayNode', { key: Schema.String, node: Schema.String }),\n Schema.TaggedStruct('UnknownOverlayView', { key: Schema.String, view: Schema.String }),\n Schema.TaggedStruct('UnknownMeasuredNode', { key: Schema.String }),\n Schema.TaggedStruct('DuplicateJointKey', { key: Schema.String }),\n Schema.TaggedStruct('UnknownJointBody', { joint: Schema.String, body: Schema.String }),\n Schema.TaggedStruct('DuplicateRenderTextureId', { id: Schema.String }),\n]);\n"
9
+ "/**\n * Effect Schemas for scene descriptions.\n *\n * They validate untrusted descriptions at the boundary, type the Foldkit `scene`\n * property and derive property-test generators. Each decoded `Type` is checked at compile\n * time to be exactly the kernel's description type, so the two can't drift.\n *\n * @module\n */\nimport { Effect, Schema } from 'effect';\n\nimport { handJoints, type SceneNode as KernelSceneNode } from '../kernel/description.ts';\n\nconst NonNegative = Schema.Finite.check(Schema.isGreaterThanOrEqualTo(0));\nconst Positive = Schema.Finite.check(Schema.isGreaterThan(0));\nconst UnitInterval = Schema.Finite.check(Schema.isBetween({ minimum: 0, maximum: 1 }));\n\n/** A three-component vector `[x, y, z]` of finite numbers. */\nexport const Vec3 = Schema.Tuple([Schema.Finite, Schema.Finite, Schema.Finite]);\n\n/** A rotation axis. */\nexport const Axis = Schema.Literals(['x', 'y', 'z']);\n\n/**\n * Fields added after 0.2.0 decode as their builder's default when absent, so descriptions\n * stored before them (a camera kept in a Model, say) still decode.\n */\nconst absentAsNull = <S extends Schema.Top>(schema: S) =>\n Schema.NullOr(schema).pipe(Schema.withDecodingDefaultKey(Effect.succeed(null)));\nconst absentAsFalse = Schema.Boolean.pipe(Schema.withDecodingDefaultKey(Effect.succeed(false)));\n\n/** A 24-bit RGB colour, for example `0x3366ff`. */\nexport const Rgb = Schema.Int.check(Schema.isBetween({ minimum: 0, maximum: 0xffffff }));\n\n/** Model-owned Euler angles, a spin behaviour, or facing the camera (a billboard). */\nexport const Rotation = Schema.Union([\n Schema.TaggedStruct('Fixed', { euler: Vec3 }),\n Schema.TaggedStruct('Spin', {\n axis: Axis,\n radiansPerSecond: Schema.Finite,\n phase: Schema.Finite,\n }),\n Schema.TaggedStruct('Billboard', {\n lockX: Schema.Boolean,\n lockY: Schema.Boolean,\n lockZ: Schema.Boolean,\n }),\n]);\n\n/** Box geometry parameters. */\nexport const BoxGeometry = Schema.TaggedStruct('Box', {\n width: Positive,\n height: Positive,\n depth: Positive,\n});\n\nconst Segments = Schema.Int.check(Schema.isGreaterThanOrEqualTo(3));\n\n/** Sphere geometry parameters. */\nexport const SphereGeometry = Schema.TaggedStruct('Sphere', {\n radius: Positive,\n widthSegments: Segments,\n heightSegments: Schema.Int.check(Schema.isGreaterThanOrEqualTo(2)),\n});\n\n/** Plane geometry parameters. */\nexport const PlaneGeometry = Schema.TaggedStruct('Plane', { width: Positive, height: Positive });\n\n/** Cylinder geometry parameters. A zero radius makes a cone. */\nexport const CylinderGeometry = Schema.TaggedStruct('Cylinder', {\n radiusTop: NonNegative,\n radiusBottom: NonNegative,\n height: Positive,\n radialSegments: Segments,\n});\n\n/** Torus geometry parameters. */\nexport const TorusGeometry = Schema.TaggedStruct('Torus', {\n radius: Positive,\n tube: Positive,\n radialSegments: Segments,\n tubularSegments: Segments,\n});\n\n/** Cone geometry parameters. */\nexport const ConeGeometry = Schema.TaggedStruct('Cone', {\n radius: Positive,\n height: Positive,\n radialSegments: Segments,\n});\n\n/** Capsule geometry parameters. */\nexport const CapsuleGeometry = Schema.TaggedStruct('Capsule', {\n radius: Positive,\n height: NonNegative,\n capSegments: Schema.Int.check(Schema.isGreaterThanOrEqualTo(1)),\n radialSegments: Segments,\n});\n\n/** Rounded box geometry parameters (Drei's `RoundedBox`). */\nexport const RoundedBoxGeometry = Schema.TaggedStruct('RoundedBox', {\n width: Positive,\n height: Positive,\n depth: Positive,\n radius: NonNegative,\n smoothness: Schema.Int.check(Schema.isGreaterThanOrEqualTo(1)),\n bevelSegments: Schema.Int.check(Schema.isGreaterThanOrEqualTo(1)),\n steps: Schema.Int.check(Schema.isGreaterThanOrEqualTo(1)),\n creaseAngle: NonNegative,\n});\n\n/** Backdrop geometry parameters (Drei's `Backdrop`). */\nexport const BackdropGeometry = Schema.TaggedStruct('Backdrop', {\n floor: NonNegative,\n segments: Schema.Int.check(Schema.isGreaterThanOrEqualTo(1)),\n});\n\n/** Ring geometry parameters. */\nexport const RingGeometry = Schema.TaggedStruct('Ring', {\n innerRadius: NonNegative,\n outerRadius: Positive,\n thetaSegments: Segments,\n});\n\n/** Circle geometry parameters. */\nexport const CircleGeometry = Schema.TaggedStruct('Circle', {\n radius: Positive,\n segments: Segments,\n});\n\nconst Steps = Schema.Int.check(Schema.isGreaterThanOrEqualTo(1));\n\n/** Text from a lent typeface font. */\nexport const TextGeometry = Schema.TaggedStruct('Text', {\n text: Schema.String,\n font: Schema.String,\n size: Positive,\n depth: NonNegative,\n curveSegments: Steps,\n bevel: Schema.NullOr(\n Schema.Struct({\n thickness: NonNegative,\n size: NonNegative,\n offset: Schema.Finite,\n segments: Steps,\n }),\n ),\n center: Schema.Boolean,\n letterSpacing: Schema.Finite,\n lineHeight: NonNegative,\n align: Schema.Literals(['left', 'center', 'right']),\n});\n\n/** Any geometry shape. */\nexport const ShapeGeometry = Schema.Union([\n TextGeometry,\n BoxGeometry,\n SphereGeometry,\n PlaneGeometry,\n CylinderGeometry,\n TorusGeometry,\n ConeGeometry,\n CapsuleGeometry,\n RingGeometry,\n CircleGeometry,\n RoundedBoxGeometry,\n BackdropGeometry,\n]);\n\n/** A registered behaviour, by name, with numeric parameters. */\nexport const Behave = Schema.Struct({\n name: Schema.String,\n params: Schema.Record(Schema.String, Schema.Finite),\n});\n\n/** How a transition progresses. */\nexport const Easing = Schema.Literals(['linear', 'easeInOutCubic', 'easeOutCubic', 'easeOutBack']);\n\n/** How position and scale changes are shown. */\nexport const Transition = Schema.Union([\n Schema.TaggedStruct('Instant', {}),\n Schema.TaggedStruct('Ease', { seconds: Positive, easing: Easing }),\n]);\n\n/** Which faces a material draws. */\nexport const MaterialSide = Schema.Literals(['front', 'back', 'double']);\n\n/** A texture lent to the store, by id, or `null` for none. */\nconst TextureId = Schema.NullOr(Schema.String);\n\nconst surface = {\n opacity: UnitInterval,\n transparent: Schema.Boolean,\n side: MaterialSide,\n wireframe: Schema.Boolean,\n};\n\nconst shaded = { ...surface, flatShading: Schema.Boolean };\n\n/** Unlit material parameters. */\nexport const BasicMaterial = Schema.TaggedStruct('Basic', {\n color: Rgb,\n map: TextureId,\n ...surface,\n});\n\n/** Matte material parameters. */\nexport const LambertMaterial = Schema.TaggedStruct('Lambert', {\n color: Rgb,\n map: TextureId,\n emissive: Rgb,\n ...shaded,\n});\n\n/** Shiny material parameters. */\nexport const PhongMaterial = Schema.TaggedStruct('Phong', {\n color: Rgb,\n map: TextureId,\n emissive: Rgb,\n specular: Rgb,\n shininess: NonNegative,\n ...shaded,\n});\n\nconst pbr = {\n color: Rgb,\n map: TextureId,\n roughness: UnitInterval,\n metalness: UnitInterval,\n emissive: Rgb,\n emissiveIntensity: NonNegative,\n};\n\n/** Standard (PBR) material parameters. */\nexport const StandardMaterial = Schema.TaggedStruct('Standard', { ...pbr, ...shaded });\n\n/** Physical material parameters: index of refraction in [1, 2.333], the range three.js documents. */\nexport const PhysicalMaterial = Schema.TaggedStruct('Physical', {\n ...pbr,\n clearcoat: UnitInterval,\n clearcoatRoughness: UnitInterval,\n transmission: UnitInterval,\n ior: Schema.Finite.check(Schema.isBetween({ minimum: 1, maximum: 2.333 })),\n ...shaded,\n});\n\n/** Normal-coloured material parameters. */\nexport const NormalMaterial = Schema.TaggedStruct('Normal', shaded);\n\n/** A shadow catcher: only the shadows cast onto it. */\nexport const ShadowMaterial = Schema.TaggedStruct('Shadow', { color: Rgb, opacity: UnitInterval });\n\n/** Any material kind. */\nexport const SurfaceMaterial = Schema.Union([\n ShadowMaterial,\n BasicMaterial,\n LambertMaterial,\n PhongMaterial,\n StandardMaterial,\n PhysicalMaterial,\n NormalMaterial,\n]);\n\n/** An owned geometry or a reference to a shared one. */\nexport const GeometryRef = Schema.Union([\n ...ShapeGeometry.members,\n Schema.TaggedStruct('SharedGeometry', { id: Schema.String }),\n Schema.TaggedStruct('LentGeometry', { id: Schema.String }),\n]);\n\n/** An owned material or a reference to a shared one. */\nexport const MaterialRef = Schema.Union([\n ...SurfaceMaterial.members,\n Schema.TaggedStruct('SharedMaterial', { id: Schema.String }),\n]);\n\n/** Shared resource definitions. */\nexport const ResourceDefinitions = Schema.Struct({\n geometries: Schema.Array(Schema.Struct({ id: Schema.String, geometry: ShapeGeometry })),\n materials: Schema.Array(Schema.Struct({ id: Schema.String, material: SurfaceMaterial })),\n});\n\n/** A renderable mesh. */\nconst Upright = { halfHeight: Positive, radius: Positive };\n\n/** A collider of a body's own, placed in it. */\nexport const ColliderDescription = Schema.Struct({\n shape: Schema.Union([\n Schema.TaggedStruct('Cuboid', { halfExtents: Vec3 }),\n Schema.TaggedStruct('Ball', { radius: Positive }),\n Schema.TaggedStruct('Capsule', Upright),\n Schema.TaggedStruct('Cylinder', Upright),\n Schema.TaggedStruct('Cone', Upright),\n ]),\n position: Vec3,\n rotation: Vec3,\n name: Schema.NullOr(Schema.String),\n});\n\nconst Group = Schema.Int.check(Schema.isBetween({ minimum: 0, maximum: 15 }));\n\n/** Collision groups: those a body is in, and those it interacts with (null: all). */\nexport const InteractionGroups = Schema.Struct({\n memberships: Schema.Array(Group),\n filters: Schema.NullOr(Schema.Array(Group)),\n});\n\n/** A rigid body for a mesh, group, model or instances. */\nexport const Body = Schema.Struct({\n type: Schema.Literals(['dynamic', 'fixed', 'kinematic']),\n collider: Schema.Literals(['cuboid', 'ball', 'hull', 'trimesh']),\n mass: Schema.NullOr(Positive),\n friction: NonNegative,\n restitution: NonNegative,\n linearDamping: NonNegative,\n angularDamping: NonNegative,\n gravityScale: Schema.Finite,\n ccd: Schema.Boolean,\n sensor: Schema.Boolean,\n linearVelocity: Vec3,\n angularVelocity: Vec3,\n impulse: Schema.NullOr(Schema.Struct({ id: Schema.Finite, impulse: Vec3 })),\n colliders: Schema.NullOr(Schema.Array(ColliderDescription)),\n contactForces: Schema.NullOr(NonNegative),\n collisionGroups: Schema.NullOr(InteractionGroups),\n solverGroups: Schema.NullOr(InteractionGroups),\n});\n\n/** A physics world. */\nconst Handedness = Schema.Literals(['left', 'right']);\n\n/** A space an immersive session tracks, for a group to follow. */\nexport const XrSpace = Schema.Union([\n Schema.TaggedStruct('Head', {}),\n Schema.TaggedStruct('Joint', { hand: Handedness, joint: Schema.Literals(handJoints) }),\n Schema.TaggedStruct('Controller', { hand: Handedness, space: Schema.Literals(['grip', 'ray']) }),\n Schema.TaggedStruct('Anchor', { id: Schema.String }),\n Schema.TaggedStruct('Plane', { id: Schema.String }),\n Schema.TaggedStruct('Mesh', { id: Schema.String }),\n]);\n\n/** A body a joint holds: a node's, or one instance's. */\nexport const BodyRef = Schema.Struct({\n key: Schema.String,\n instance: Schema.NullOr(Schema.String),\n});\n\n/** A joint's motor: a target position and velocity, and how hard it pursues each. */\nexport const JointMotor = Schema.Struct({\n position: Schema.Finite,\n velocity: Schema.Finite,\n stiffness: NonNegative,\n damping: NonNegative,\n});\n\n/** A joint's range of motion. */\nexport const JointLimits = Schema.Tuple([Schema.Finite, Schema.Finite]);\n\n/** How a joint holds its bodies. */\nexport const JointKind = Schema.Union([\n Schema.TaggedStruct('Fixed', { frameA: Vec3, frameB: Vec3 }),\n Schema.TaggedStruct('Spherical', {}),\n Schema.TaggedStruct('Revolute', {\n axis: Vec3,\n limits: Schema.NullOr(JointLimits),\n motor: Schema.NullOr(JointMotor),\n }),\n Schema.TaggedStruct('Prismatic', {\n axis: Vec3,\n limits: Schema.NullOr(JointLimits),\n motor: Schema.NullOr(JointMotor),\n }),\n Schema.TaggedStruct('Rope', { length: Schema.Finite }),\n Schema.TaggedStruct('Spring', {\n restLength: Schema.Finite,\n stiffness: Schema.Finite,\n damping: Schema.Finite,\n }),\n]);\n\n/** A joint between two bodies. */\nexport const Joint = Schema.Struct({\n key: Schema.String,\n a: BodyRef,\n b: BodyRef,\n anchorA: Vec3,\n anchorB: Vec3,\n kind: JointKind,\n contacts: Schema.Boolean,\n});\n\nexport const Physics = Schema.Struct({\n gravity: Vec3,\n paused: Schema.Boolean,\n timeStep: Positive,\n interpolate: Schema.Boolean,\n debug: Schema.Boolean,\n joints: Schema.Array(Joint),\n});\n\nexport const MeshNode = Schema.TaggedStruct('Mesh', {\n key: Schema.String,\n position: Vec3,\n rotation: Rotation,\n scale: Vec3,\n transition: Transition,\n behaviour: Schema.NullOr(Behave),\n geometry: GeometryRef,\n material: MaterialRef,\n interactive: Schema.Boolean,\n castShadow: Schema.Boolean,\n receiveShadow: Schema.Boolean,\n body: Schema.NullOr(Body),\n});\n\n/** One instance of an instances node. */\nexport const Instance = Schema.Struct({\n key: Schema.String,\n position: Vec3,\n rotation: Vec3,\n scale: Vec3,\n color: Rgb,\n});\n\n/** Many instances of one geometry and material. */\nexport const InstancesNode = Schema.TaggedStruct('Instances', {\n key: Schema.String,\n position: Vec3,\n rotation: Rotation,\n scale: Vec3,\n transition: Transition,\n behaviour: Schema.NullOr(Behave),\n geometry: GeometryRef,\n material: MaterialRef,\n interactive: Schema.Boolean,\n castShadow: Schema.Boolean,\n receiveShadow: Schema.Boolean,\n instances: Schema.Array(Instance),\n body: Schema.NullOr(Body),\n});\n\n/** An application object lent to the store under `id`. */\nexport const Animation = Schema.Struct({\n clip: Schema.String,\n speed: Schema.Finite,\n loop: Schema.Boolean,\n});\n\nexport const BorrowedNode = Schema.TaggedStruct('Borrowed', {\n key: Schema.String,\n id: Schema.String,\n animation: Schema.NullOr(Animation),\n position: Vec3,\n rotation: Rotation,\n scale: Vec3,\n transition: Transition,\n behaviour: Schema.NullOr(Behave),\n interactive: Schema.Boolean,\n body: Schema.NullOr(Body),\n castShadow: absentAsFalse,\n receiveShadow: absentAsFalse,\n});\n\n/** Distance-field text. */\nexport const LabelNode = Schema.TaggedStruct('Label', {\n key: Schema.String,\n position: Vec3,\n rotation: Rotation,\n scale: Vec3,\n transition: Transition,\n behaviour: Schema.NullOr(Behave),\n interactive: Schema.Boolean,\n text: Schema.String,\n font: Schema.NullOr(Schema.String),\n fontSize: Positive,\n color: Rgb,\n fillOpacity: NonNegative,\n anchorX: Schema.Union([Schema.Literals(['left', 'center', 'right']), Schema.Finite]),\n anchorY: Schema.Union([\n Schema.Literals(['top', 'top-baseline', 'middle', 'bottom-baseline', 'bottom']),\n Schema.Finite,\n ]),\n maxWidth: Schema.NullOr(Positive),\n lineHeight: Schema.NullOr(Positive),\n letterSpacing: Schema.Finite,\n textAlign: Schema.Literals(['left', 'right', 'center', 'justify']),\n outlineWidth: NonNegative,\n outlineColor: Rgb,\n outlineOpacity: NonNegative,\n outlineBlur: NonNegative,\n colorRanges: Schema.Array(\n Schema.Struct({ start: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0)), color: Rgb }),\n ),\n curveRadius: Schema.Finite,\n material: Schema.NullOr(MaterialRef),\n});\n\n/** Uniform ambient light. */\nexport const AmbientLightNode = Schema.TaggedStruct('AmbientLight', {\n key: Schema.String,\n color: Rgb,\n intensity: NonNegative,\n});\n\n/** Directional light. */\nconst isPowerOfTwo = (size: number) =>\n Number.isInteger(Math.log2(size)) || 'expected a power of two';\n\n/** Shadow map size: a power of two from 16 to 8192 texels. */\nconst ShadowMapSize = Schema.Int.check(\n Schema.isBetween({ minimum: 16, maximum: 8192 }),\n Schema.makeFilter(isPowerOfTwo),\n);\n\nexport const DirectionalLightNode = Schema.TaggedStruct('DirectionalLight', {\n key: Schema.String,\n color: Rgb,\n intensity: NonNegative,\n position: Vec3,\n castShadow: Schema.Boolean,\n shadowMapSize: ShadowMapSize,\n shadowBias: Schema.Finite,\n shadowArea: Positive,\n});\n\n/** Point light. */\nexport const PointLightNode = Schema.TaggedStruct('PointLight', {\n key: Schema.String,\n color: Rgb,\n intensity: NonNegative,\n position: Vec3,\n distance: NonNegative,\n decay: NonNegative,\n castShadow: Schema.Boolean,\n shadowMapSize: ShadowMapSize,\n shadowBias: Schema.Finite,\n});\n\n/** Spot light: `angle` in (0, π/2], `penumbra` in [0, 1]. */\nexport const SpotLightNode = Schema.TaggedStruct('SpotLight', {\n key: Schema.String,\n color: Rgb,\n intensity: NonNegative,\n position: Vec3,\n target: Vec3,\n distance: NonNegative,\n angle: Schema.Finite.check(\n Schema.isBetween({ minimum: 0, maximum: Math.PI / 2, exclusiveMinimum: true }),\n ),\n penumbra: Schema.Finite.check(Schema.isBetween({ minimum: 0, maximum: 1 })),\n decay: NonNegative,\n castShadow: Schema.Boolean,\n shadowMapSize: ShadowMapSize,\n shadowBias: Schema.Finite,\n});\n\n/** Hemisphere light. */\n/** A grid of lines on the XZ plane. */\nexport const GridNode = Schema.TaggedStruct('Grid', {\n key: Schema.String,\n position: Vec3,\n size: Positive,\n divisions: Schema.Int.check(Schema.isGreaterThanOrEqualTo(1)),\n color: Rgb,\n centerColor: Rgb,\n});\n\n/** Drei's shader grid. */\nexport const ShaderGridNode = Schema.TaggedStruct('ShaderGrid', {\n key: Schema.String,\n position: Vec3,\n rotation: Vec3,\n size: Schema.Tuple([Positive, Positive]),\n cellSize: Positive,\n cellThickness: NonNegative,\n cellColor: Rgb,\n sectionSize: Positive,\n sectionThickness: NonNegative,\n sectionColor: Rgb,\n infinite: Schema.Boolean,\n followCamera: Schema.Boolean,\n fadeDistance: Positive,\n fadeStrength: NonNegative,\n fadeFrom: Schema.Finite,\n side: Schema.Literals(['front', 'back', 'double']),\n});\n\nexport const HemisphereLightNode = Schema.TaggedStruct('HemisphereLight', {\n key: Schema.String,\n color: Rgb,\n groundColor: Rgb,\n intensity: NonNegative,\n position: Vec3,\n});\n\n/** Any scene node. Groups nest recursively. */\nexport const SceneNode: Schema.Codec<KernelSceneNode, unknown> = Schema.Union([\n Schema.TaggedStruct('Group', {\n key: Schema.String,\n position: Vec3,\n rotation: Rotation,\n scale: Vec3,\n transition: Transition,\n behaviour: Schema.NullOr(Behave),\n interactive: Schema.Boolean,\n children: Schema.Array(Schema.suspend((): Schema.Codec<KernelSceneNode, unknown> => SceneNode)),\n body: Schema.NullOr(Body),\n follow: Schema.NullOr(XrSpace),\n detail: absentAsNull(\n Schema.Struct({ distances: Schema.Array(NonNegative), hysteresis: NonNegative }),\n ),\n }),\n MeshNode,\n InstancesNode,\n BorrowedNode,\n LabelNode,\n ShaderGridNode,\n AmbientLightNode,\n DirectionalLightNode,\n PointLightNode,\n SpotLightNode,\n HemisphereLightNode,\n GridNode,\n]);\n\n/** The fraction of the way a camera closes every sixtieth of a second: 0 jumps. */\nconst CameraDamping = Schema.Finite.check(Schema.isGreaterThanOrEqualTo(0), Schema.isLessThan(1));\n\n/** Camera shake (Drei's `CameraShake`). */\nexport const CameraShake = Schema.Struct({\n intensity: NonNegative,\n decay: Schema.Boolean,\n decayRate: NonNegative,\n maxYaw: NonNegative,\n maxPitch: NonNegative,\n maxRoll: NonNegative,\n yawFrequency: NonNegative,\n pitchFrequency: NonNegative,\n rollFrequency: NonNegative,\n trigger: Schema.Finite,\n});\n\n/** A perspective camera. */\nexport const PerspectiveCamera = Schema.TaggedStruct('Perspective', {\n fov: Schema.Finite.check(Schema.isBetween({ minimum: 0, maximum: 180, exclusiveMinimum: true })),\n near: Positive,\n far: Positive,\n position: Vec3,\n lookAt: Vec3,\n damping: CameraDamping,\n autoRotate: Schema.Finite,\n shake: absentAsNull(CameraShake),\n});\n\n/** An orthographic camera; `zoom` is CSS pixels per world unit. */\nexport const OrthographicCamera = Schema.TaggedStruct('Orthographic', {\n zoom: Positive,\n near: Positive,\n far: Positive,\n position: Vec3,\n lookAt: Vec3,\n damping: CameraDamping,\n autoRotate: Schema.Finite,\n shake: absentAsNull(CameraShake),\n});\n\n/** The active camera. */\nexport const Camera = Schema.Union([PerspectiveCamera, OrthographicCamera]);\n\nconst NonNegativeFinite = Schema.Finite.check(Schema.isGreaterThanOrEqualTo(0));\n\n/** A post-processing effect. */\nexport const PostEffect = Schema.Union([\n Schema.TaggedStruct('Bloom', {\n strength: NonNegativeFinite,\n radius: NonNegativeFinite,\n threshold: NonNegativeFinite,\n }),\n Schema.TaggedStruct('Vignette', { offset: NonNegativeFinite, darkness: NonNegativeFinite }),\n Schema.TaggedStruct('Film', { intensity: NonNegativeFinite, grayscale: Schema.Boolean }),\n]);\n\n/** Scene-wide render settings. */\nexport const RenderSettings = Schema.Struct({\n effects: Schema.Array(PostEffect),\n frames: Schema.Literals(['always', 'demand', 'never']),\n resolution: Schema.Finite.check(\n Schema.isBetween({ minimum: 0, maximum: 1, exclusiveMinimum: true }),\n ),\n shadows: Schema.Literals(['off', 'basic', 'percentage', 'soft', 'variance']),\n toneMapping: Schema.Literals(['none', 'linear', 'reinhard', 'cineon', 'aces', 'agx', 'neutral']),\n exposure: Positive,\n colorSpace: Schema.Literals(['srgb', 'linear']),\n});\n\n/** A view of the scene into part of the canvas. */\nexport const View = Schema.Struct({\n key: Schema.String,\n camera: Camera,\n rect: Schema.Struct({\n x: Schema.Finite,\n y: Schema.Finite,\n width: Schema.Finite.check(Schema.isGreaterThan(0)),\n height: Schema.Finite.check(Schema.isGreaterThan(0)),\n }),\n});\n\n/** A scene rendered into a texture lent under `id`. */\nexport const RenderTexture = Schema.Struct({\n id: Schema.String,\n width: Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 8192 })),\n height: Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 8192 })),\n camera: Camera,\n background: Schema.NullOr(Rgb),\n children: Schema.Array(SceneNode),\n});\n\n/** A complete scene description. */\n/** A point to show HTML at. */\nexport const Overlay = Schema.Struct({\n key: Schema.String,\n node: Schema.NullOr(Schema.String),\n position: Vec3,\n center: Schema.Boolean,\n distanceFactor: Schema.NullOr(Positive),\n occlude: Schema.Boolean,\n zIndexRange: Schema.Tuple([Schema.Int, Schema.Int]),\n view: Schema.NullOr(Schema.String),\n});\n\n/** Image-based lighting and background. */\nexport const Environment = Schema.Struct({\n map: Schema.NullOr(Schema.String),\n background: Schema.Union([Schema.Boolean, Schema.Literal('only')]),\n backgroundBlurriness: Schema.Finite.check(Schema.isBetween({ minimum: 0, maximum: 1 })),\n backgroundIntensity: NonNegative,\n environmentIntensity: NonNegative,\n});\n\n/** A daylight sky. */\nexport const Sky = Schema.Struct({\n sunPosition: Vec3,\n turbidity: NonNegative,\n rayleigh: NonNegative,\n mieCoefficient: NonNegative,\n mieDirectionalG: UnitInterval,\n clouds: UnitInterval,\n distance: Positive,\n});\n\n/** Soft ground shadows. */\nexport const ContactShadows = Schema.Struct({\n position: Vec3,\n size: Schema.Tuple([Positive, Positive]),\n near: Schema.Finite,\n far: Positive,\n blur: NonNegative,\n smooth: Schema.Boolean,\n opacity: UnitInterval,\n color: Rgb,\n resolution: Schema.Int.check(Schema.isBetween({ minimum: 16, maximum: 4096 })),\n});\n\n/** Immersive presentation. */\n/** An anchor the description places in the scene. */\nexport const XrAnchor = Schema.Struct({ id: Schema.String, position: Vec3, rotation: Vec3 });\n\nexport const Xr = Schema.Struct({\n origin: Vec3,\n heading: Schema.Finite,\n referenceSpace: Schema.Literals(['local-floor', 'local', 'bounded-floor']),\n framebufferScale: Positive,\n hitTest: Schema.Boolean,\n showInputs: Schema.Boolean,\n anchors: Schema.Array(XrAnchor),\n planes: Schema.Boolean,\n meshes: Schema.Boolean,\n domOverlay: Schema.Boolean,\n glide: Schema.NullOr(\n Schema.Struct({\n speed: NonNegative,\n turn: Schema.Literals(['smooth', 'snap']),\n turnSpeed: NonNegative,\n snapDegrees: NonNegative,\n }),\n ),\n});\n\n/** Whether the scene claims the pointer's gestures from the page. */\nexport const Gestures = Schema.Literals(['page', 'scene']);\n\nexport const SceneDescription = Schema.Struct({\n camera: Camera,\n gestures: Gestures,\n views: Schema.Array(View),\n renderTextures: Schema.Array(RenderTexture),\n overlays: Schema.Array(Overlay),\n environment: Schema.NullOr(Environment),\n sky: Schema.NullOr(Sky),\n contactShadows: Schema.NullOr(ContactShadows),\n physics: Schema.NullOr(Physics),\n xr: Schema.NullOr(Xr),\n measure: Schema.Array(Schema.String),\n render: RenderSettings,\n resources: ResourceDefinitions,\n children: Schema.Array(SceneNode),\n});\n\n/** Detail of pointer-leave events: the interactive mesh's key. */\nexport const KeyDetail = Schema.Struct({ key: Schema.String });\n\n/**\n * Where the pointer met an interactive mesh: its key and ancestor path, the world-space\n * hit point, the distance from the camera, the world-space face normal, the texture\n * coordinates and the pointer's world-space ray.\n */\nexport const HitDetail = Schema.Struct({\n key: Schema.String,\n instance: Schema.optionalKey(Schema.String),\n part: Schema.optionalKey(Schema.String),\n view: Schema.optionalKey(Schema.String),\n path: Schema.Array(Schema.String),\n point: Vec3,\n distance: Schema.Finite,\n normal: Vec3,\n uv: Schema.Tuple([Schema.Finite, Schema.Finite]),\n ray: Schema.Struct({ origin: Vec3, direction: Vec3 }),\n});\n\n/** Detail of button events: the hit plus `MouseEvent.button`. */\nexport const ButtonDetail = Schema.Struct({ ...HitDetail.fields, button: Schema.Int });\n\n/** Detail of wheel events: the hit plus `WheelEvent.deltaX` and `deltaY`. */\nexport const WheelDetail = Schema.Struct({\n ...HitDetail.fields,\n deltaX: Schema.Finite,\n deltaY: Schema.Finite,\n});\n\n/** Detail of a click that hit no interactive mesh. */\nexport const MissDetail = Schema.Struct({ button: Schema.Int });\n\n/** A world-space ray: an origin and a unit direction. */\nexport const Ray = HitDetail.fields.ray;\n\n/** Detail of drag events: the captured mesh, the pressed button and the pointer's ray. */\nexport const DragDetail = Schema.Struct({ key: Schema.String, button: Schema.Int, ray: Ray });\n\n/** Detail of performance changes: the fps average and the new factor (0 to 1). */\nexport const PerformanceDetail = Schema.Struct({\n fps: Schema.Finite,\n factor: Schema.Finite.check(Schema.isBetween({ minimum: 0, maximum: 1 })),\n});\n\n/** Modifier keys held during an input. */\nexport const Modifiers = Schema.Struct({\n shift: Schema.Boolean,\n control: Schema.Boolean,\n meta: Schema.Boolean,\n alt: Schema.Boolean,\n});\n\nconst regionFields = {\n view: Schema.optionalKey(Schema.String),\n width: Schema.Finite,\n height: Schema.Finite,\n x: Schema.Finite,\n y: Schema.Finite,\n};\n\n/** A drag, wheel or pinch on the canvas: distances in CSS pixels since the last one. */\nexport const Gesture = Schema.Union([\n Schema.TaggedStruct('Drag', {\n button: Schema.Int,\n modifiers: Modifiers,\n key: Schema.optionalKey(Schema.String),\n ...regionFields,\n deltaX: Schema.Finite,\n deltaY: Schema.Finite,\n }),\n Schema.TaggedStruct('Wheel', {\n modifiers: Modifiers,\n ...regionFields,\n deltaX: Schema.Finite,\n deltaY: Schema.Finite,\n }),\n Schema.TaggedStruct('Pinch', {\n ...regionFields,\n scale: Schema.Finite,\n deltaX: Schema.Finite,\n deltaY: Schema.Finite,\n }),\n]);\n\n/**\n * Detail of collision events: the two bodies' keys (and instances', for bodies on\n * instances), and whether they began touching.\n */\nexport const CollisionDetail = Schema.Struct({\n a: Schema.String,\n aInstance: Schema.optionalKey(Schema.String),\n aPart: Schema.optionalKey(Schema.String),\n b: Schema.String,\n bInstance: Schema.optionalKey(Schema.String),\n bPart: Schema.optionalKey(Schema.String),\n started: Schema.Boolean,\n});\n\nconst XrHand = Schema.Literals(['left', 'right', 'none']);\n\n/** Detail of XR stick events: a thumbstick pushed past halfway, or let back. */\nexport const XrStickDetail = Schema.Struct({\n hand: XrHand,\n direction: Schema.Literals(['center', 'left', 'right', 'forward', 'back']),\n});\n\n/** Detail of XR button events: a controller button pressed or released. */\nexport const XrButtonDetail = Schema.Struct({\n hand: XrHand,\n button: Schema.Literals(['trigger', 'squeeze', 'touchpad', 'thumbstick', 'primary', 'secondary']),\n pressed: Schema.Boolean,\n});\n\n/** Detail of XR moved events: where gliding left the player. */\nexport const XrMovedDetail = Schema.Struct({ origin: Vec3, heading: Schema.Finite });\n\n/** Detail of XR surface events: in AR, where a select met a real surface. */\nexport const XrSurfaceDetail = Schema.Struct({ hand: XrHand, point: Vec3, normal: Vec3 });\n\n/** A detected plane, in the scene's space. */\nexport const XrPlane = Schema.Struct({\n id: Schema.String,\n orientation: Schema.Literals(['horizontal', 'vertical']),\n label: Schema.String,\n position: Vec3,\n rotation: Vec3,\n polygon: Schema.Array(Vec3),\n});\n\n/** Detail of XR planes events: every plane the session has detected, as it is now. */\nexport const XrPlanesDetail = Schema.Struct({ planes: Schema.Array(XrPlane) });\n\n/** A detected mesh, in the scene's space: its geometry is lent for `xrMesh(id)`. */\nexport const XrMesh = Schema.Struct({\n id: Schema.String,\n label: Schema.String,\n position: Vec3,\n rotation: Vec3,\n});\n\n/** Detail of XR meshes events: every mesh the session has detected, as it is now. */\nexport const XrMeshesDetail = Schema.Struct({ meshes: Schema.Array(XrMesh) });\n\n/** Detail of contact force events: the two bodies, and how hard they pushed. */\nexport const ContactForceDetail = Schema.Struct({\n a: Schema.String,\n aInstance: Schema.optionalKey(Schema.String),\n aPart: Schema.optionalKey(Schema.String),\n b: Schema.String,\n bInstance: Schema.optionalKey(Schema.String),\n bPart: Schema.optionalKey(Schema.String),\n totalForce: Vec3,\n totalForceMagnitude: Schema.Finite,\n maxForceDirection: Vec3,\n maxForceMagnitude: Schema.Finite,\n});\n\nconst Rect = Schema.Tuple([Schema.Finite, Schema.Finite, Schema.Finite, Schema.Finite]);\n\n/** Detail of label measured events: a label's laid-out size in its own units. */\nexport const LabelMeasuredDetail = Schema.Struct({\n key: Schema.String,\n block: Rect,\n visible: Rect,\n});\n\n/** Detail of measured events: a node's world bounding box. */\nexport const MeasuredDetail = Schema.Struct({ key: Schema.String, min: Vec3, max: Vec3 });\n\n/** Detail of auto-rotated events: where a camera turning by itself got to. */\nexport const AutoRotatedDetail = Schema.Struct({\n view: Schema.optionalKey(Schema.String),\n position: Vec3,\n});\n\n/** Detail of gesture events. */\nexport const GestureDetail = Schema.Struct({ gesture: Gesture });\n\n/** A pointer interaction with an interactive mesh, or a miss. */\nexport const SceneEvent = Schema.Union([\n Schema.TaggedStruct('PointerEnter', HitDetail.fields),\n Schema.TaggedStruct('PointerLeave', KeyDetail.fields),\n Schema.TaggedStruct('PointerMove', HitDetail.fields),\n Schema.TaggedStruct('PointerDown', ButtonDetail.fields),\n Schema.TaggedStruct('PointerUp', ButtonDetail.fields),\n Schema.TaggedStruct('Click', ButtonDetail.fields),\n Schema.TaggedStruct('DoubleClick', ButtonDetail.fields),\n Schema.TaggedStruct('ContextMenu', HitDetail.fields),\n Schema.TaggedStruct('Wheel', WheelDetail.fields),\n Schema.TaggedStruct('PointerMissed', MissDetail.fields),\n Schema.TaggedStruct('Drag', DragDetail.fields),\n Schema.TaggedStruct('DragEnd', DragDetail.fields),\n Schema.TaggedStruct('Gesture', GestureDetail.fields),\n Schema.TaggedStruct('AutoRotated', AutoRotatedDetail.fields),\n Schema.TaggedStruct('Collision', CollisionDetail.fields),\n Schema.TaggedStruct('Measured', MeasuredDetail.fields),\n Schema.TaggedStruct('LabelMeasured', LabelMeasuredDetail.fields),\n Schema.TaggedStruct('ContactForce', ContactForceDetail.fields),\n Schema.TaggedStruct('XrStick', XrStickDetail.fields),\n Schema.TaggedStruct('XrButton', XrButtonDetail.fields),\n Schema.TaggedStruct('XrSurface', XrSurfaceDetail.fields),\n Schema.TaggedStruct('XrMoved', XrMovedDetail.fields),\n Schema.TaggedStruct('XrPlanes', XrPlanesDetail.fields),\n Schema.TaggedStruct('XrMeshes', XrMeshesDetail.fields),\n Schema.TaggedStruct('PerformanceChanged', PerformanceDetail.fields),\n]);\n\n/** Why a scene description was rejected. */\nexport const DescriptionError = Schema.Union([\n Schema.TaggedStruct('DuplicateKey', { key: Schema.String }),\n Schema.TaggedStruct('DuplicateResourceId', {\n resource: Schema.Literals(['geometry', 'material']),\n id: Schema.String,\n }),\n Schema.TaggedStruct('UnknownSharedGeometry', { nodeKey: Schema.String, id: Schema.String }),\n Schema.TaggedStruct('UnknownSharedMaterial', { nodeKey: Schema.String, id: Schema.String }),\n Schema.TaggedStruct('DuplicateInstanceKey', { nodeKey: Schema.String, key: Schema.String }),\n Schema.TaggedStruct('UnknownBehaviour', { nodeKey: Schema.String, name: Schema.String }),\n Schema.TaggedStruct('DuplicateViewKey', { key: Schema.String }),\n Schema.TaggedStruct('DuplicateOverlayKey', { key: Schema.String }),\n Schema.TaggedStruct('UnknownOverlayNode', { key: Schema.String, node: Schema.String }),\n Schema.TaggedStruct('UnknownOverlayView', { key: Schema.String, view: Schema.String }),\n Schema.TaggedStruct('UnknownMeasuredNode', { key: Schema.String }),\n Schema.TaggedStruct('DuplicateJointKey', { key: Schema.String }),\n Schema.TaggedStruct('UnknownJointBody', { joint: Schema.String, body: Schema.String }),\n Schema.TaggedStruct('DuplicateRenderTextureId', { id: Schema.String }),\n]);\n"
10
10
  ],
11
- "mappings": "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",
12
- "debugId": "4A51874F0CADE91E64756E2164756E21",
11
+ "mappings": "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",
12
+ "debugId": "B67B56D9B9035A5364756E2164756E21",
13
13
  "names": []
14
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"behaviours.d.ts","sourceRoot":"","sources":["../../src/kernel/behaviours.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAEnC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,wDAAwD;AACxD,eAAO,MAAM,SAAS,SACd,OAAO,CAAC,QAAQ,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,kBAClC,MAAM,KACrB,MAA6D,CAAC;AAEjE,kEAAkE;AAClE,eAAO,MAAM,aAAa,WAAY,KAAK,YAAY,QAAQ,kBAAkB,MAAM,KAAG,IAiBzF,CAAC"}
1
+ {"version":3,"file":"behaviours.d.ts","sourceRoot":"","sources":["../../src/kernel/behaviours.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAEnC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,wDAAwD;AACxD,eAAO,MAAM,SAAS,SACd,OAAO,CAAC,QAAQ,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,kBAClC,MAAM,KACrB,MAA6D,CAAC;AAEjE,kEAAkE;AAClE,eAAO,MAAM,aAAa,WAAY,KAAK,YAAY,QAAQ,kBAAkB,MAAM,KAAG,IAsBzF,CAAC"}