@opsydyn/effect-three 0.3.0 → 0.6.4

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 (143) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/README.md +15 -1
  3. package/dist/{index-8cf8t6by.js → index-re3rrfwd.js} +2935 -104
  4. package/dist/index-re3rrfwd.js.map +56 -0
  5. package/dist/index-ttwy0znv.js +145 -0
  6. package/dist/index-ttwy0znv.js.map +12 -0
  7. package/dist/index.js +557 -147
  8. package/dist/index.js.map +8 -6
  9. package/dist/kernel/bodies.d.ts +20 -1
  10. package/dist/kernel/bodies.d.ts.map +1 -1
  11. package/dist/kernel/boxSelect.d.ts +22 -0
  12. package/dist/kernel/boxSelect.d.ts.map +1 -0
  13. package/dist/kernel/build.d.ts +165 -7
  14. package/dist/kernel/build.d.ts.map +1 -1
  15. package/dist/kernel/cameraShake.d.ts.map +1 -1
  16. package/dist/kernel/describeScene.d.ts +50 -0
  17. package/dist/kernel/describeScene.d.ts.map +1 -0
  18. package/dist/kernel/description.d.ts +223 -1
  19. package/dist/kernel/description.d.ts.map +1 -1
  20. package/dist/kernel/diff.d.ts +15 -0
  21. package/dist/kernel/diff.d.ts.map +1 -1
  22. package/dist/kernel/equality.d.ts +11 -1
  23. package/dist/kernel/equality.d.ts.map +1 -1
  24. package/dist/kernel/gizmo.d.ts +69 -0
  25. package/dist/kernel/gizmo.d.ts.map +1 -0
  26. package/dist/kernel/history.d.ts +61 -0
  27. package/dist/kernel/history.d.ts.map +1 -0
  28. package/dist/kernel/index.d.ts +19 -6
  29. package/dist/kernel/index.d.ts.map +1 -1
  30. package/dist/kernel/index.js +124 -3
  31. package/dist/kernel/index.js.map +1 -1
  32. package/dist/kernel/inspect.d.ts +85 -0
  33. package/dist/kernel/inspect.d.ts.map +1 -0
  34. package/dist/kernel/lineGeometry.d.ts +25 -0
  35. package/dist/kernel/lineGeometry.d.ts.map +1 -0
  36. package/dist/kernel/lockstep.d.ts +114 -0
  37. package/dist/kernel/lockstep.d.ts.map +1 -0
  38. package/dist/kernel/loop.d.ts.map +1 -1
  39. package/dist/kernel/materials.d.ts.map +1 -1
  40. package/dist/kernel/paintOrder.d.ts +53 -0
  41. package/dist/kernel/paintOrder.d.ts.map +1 -0
  42. package/dist/kernel/physics.d.ts +39 -0
  43. package/dist/kernel/physics.d.ts.map +1 -1
  44. package/dist/kernel/pivot.d.ts +54 -0
  45. package/dist/kernel/pivot.d.ts.map +1 -0
  46. package/dist/kernel/pointBuffers.d.ts +17 -0
  47. package/dist/kernel/pointBuffers.d.ts.map +1 -0
  48. package/dist/kernel/pointer.d.ts +31 -1
  49. package/dist/kernel/pointer.d.ts.map +1 -1
  50. package/dist/kernel/preview.d.ts +32 -0
  51. package/dist/kernel/preview.d.ts.map +1 -0
  52. package/dist/kernel/renderKit.d.ts +21 -1
  53. package/dist/kernel/renderKit.d.ts.map +1 -1
  54. package/dist/kernel/renderer.d.ts +6 -0
  55. package/dist/kernel/renderer.d.ts.map +1 -1
  56. package/dist/kernel/sceneChanges.d.ts +87 -0
  57. package/dist/kernel/sceneChanges.d.ts.map +1 -0
  58. package/dist/kernel/sceneGraph.d.ts +9 -1
  59. package/dist/kernel/sceneGraph.d.ts.map +1 -1
  60. package/dist/kernel/sceneIndex.d.ts +5 -0
  61. package/dist/kernel/sceneIndex.d.ts.map +1 -1
  62. package/dist/kernel/seeded.d.ts +9 -0
  63. package/dist/kernel/seeded.d.ts.map +1 -0
  64. package/dist/kernel/shots.d.ts +26 -0
  65. package/dist/kernel/shots.d.ts.map +1 -0
  66. package/dist/kernel/tape.d.ts +38 -0
  67. package/dist/kernel/tape.d.ts.map +1 -0
  68. package/dist/kernel/timeline.d.ts +60 -0
  69. package/dist/kernel/timeline.d.ts.map +1 -0
  70. package/dist/kernel/trail.d.ts +31 -0
  71. package/dist/kernel/trail.d.ts.map +1 -0
  72. package/dist/kernel/viewportGizmo.d.ts +25 -0
  73. package/dist/kernel/viewportGizmo.d.ts.map +1 -0
  74. package/dist/runtime/Inspector.d.ts +20 -0
  75. package/dist/runtime/Inspector.d.ts.map +1 -0
  76. package/dist/runtime/SceneFile.d.ts +462 -0
  77. package/dist/runtime/SceneFile.d.ts.map +1 -0
  78. package/dist/runtime/SceneSchema.d.ts +404 -0
  79. package/dist/runtime/SceneSchema.d.ts.map +1 -1
  80. package/dist/runtime/errors.d.ts +9 -0
  81. package/dist/runtime/errors.d.ts.map +1 -1
  82. package/dist/runtime/index.d.ts +3 -1
  83. package/dist/runtime/index.d.ts.map +1 -1
  84. package/dist/webgl/index.d.ts.map +1 -1
  85. package/dist/webgl/index.js +228 -3
  86. package/dist/webgl/index.js.map +6 -4
  87. package/dist/webgl/line.d.ts +4 -0
  88. package/dist/webgl/line.d.ts.map +1 -0
  89. package/dist/webgl/points.d.ts +4 -0
  90. package/dist/webgl/points.d.ts.map +1 -0
  91. package/dist/webgpu/index.d.ts.map +1 -1
  92. package/dist/webgpu/index.js +206 -26
  93. package/dist/webgpu/index.js.map +6 -4
  94. package/dist/webgpu/line.d.ts +4 -0
  95. package/dist/webgpu/line.d.ts.map +1 -0
  96. package/dist/webgpu/points.d.ts +4 -0
  97. package/dist/webgpu/points.d.ts.map +1 -0
  98. package/package.json +4 -2
  99. package/src/kernel/bodies.ts +299 -17
  100. package/src/kernel/boxSelect.ts +73 -0
  101. package/src/kernel/build.ts +374 -1
  102. package/src/kernel/cameraShake.ts +3 -13
  103. package/src/kernel/describeScene.ts +224 -0
  104. package/src/kernel/description.ts +243 -0
  105. package/src/kernel/diff.ts +39 -0
  106. package/src/kernel/equality.ts +123 -0
  107. package/src/kernel/gizmo.ts +478 -0
  108. package/src/kernel/history.ts +118 -0
  109. package/src/kernel/index.ts +110 -1
  110. package/src/kernel/inspect.ts +214 -0
  111. package/src/kernel/lineGeometry.ts +75 -0
  112. package/src/kernel/lockstep.ts +237 -0
  113. package/src/kernel/loop.ts +7 -0
  114. package/src/kernel/materials.ts +3 -0
  115. package/src/kernel/paintOrder.ts +274 -0
  116. package/src/kernel/physics.ts +86 -1
  117. package/src/kernel/pivot.ts +418 -0
  118. package/src/kernel/pointBuffers.ts +115 -0
  119. package/src/kernel/pointer.ts +98 -17
  120. package/src/kernel/preview.ts +467 -0
  121. package/src/kernel/renderKit.ts +23 -1
  122. package/src/kernel/renderer.ts +6 -0
  123. package/src/kernel/sceneChanges.ts +265 -0
  124. package/src/kernel/sceneGraph.ts +354 -11
  125. package/src/kernel/sceneIndex.ts +8 -0
  126. package/src/kernel/seeded.ts +18 -0
  127. package/src/kernel/shots.ts +167 -0
  128. package/src/kernel/tape.ts +124 -0
  129. package/src/kernel/timeline.ts +93 -0
  130. package/src/kernel/trail.ts +170 -0
  131. package/src/kernel/viewportGizmo.ts +194 -0
  132. package/src/runtime/Inspector.ts +43 -0
  133. package/src/runtime/SceneFile.ts +46 -0
  134. package/src/runtime/SceneSchema.ts +319 -0
  135. package/src/runtime/errors.ts +6 -0
  136. package/src/runtime/index.ts +3 -1
  137. package/src/webgl/index.ts +4 -0
  138. package/src/webgl/line.ts +66 -0
  139. package/src/webgl/points.ts +205 -0
  140. package/src/webgpu/index.ts +4 -0
  141. package/src/webgpu/line.ts +67 -0
  142. package/src/webgpu/points.ts +193 -0
  143. package/dist/index-8cf8t6by.js.map +0 -41
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Lockstep, as data (roadmap, "Beyond parity" 2): peers that run the same `update` stay
3
+ * in the same state by applying the same inputs in the same order. Time is cut into
4
+ * turns; every member sends one packet for each turn (empty when it did nothing), and a
5
+ * turn applies only once every member's packet for it has arrived, its inputs in peer
6
+ * order. Any transport that delivers each packet to every peer will do: a
7
+ * `BroadcastChannel` between tabs, a socket relay between machines.
8
+ *
9
+ * Membership changes in step too. The leader (the member whose id sorts first) admits
10
+ * a newcomer with an entry in its own packet; when that turn applies, everywhere at
11
+ * once, the newcomer becomes a member `lead + 1` turns later, and the leader sends it
12
+ * the state as it is then (`welcomeDue`), from which it carries on. A member that leaves
13
+ * says which turn it sent last (`leave`); one that goes quiet is dropped by the leader
14
+ * from the turn everyone is waiting on, which no one can have applied.
15
+ *
16
+ * Pure functions over a value, like the rest of the kernel: an app keeps the `Lockstep`
17
+ * in its Model, sends what `send` gives it, passes what arrives to `receive`, and
18
+ * applies what `advance` returns. Use it as a namespace: `Lockstep.make(self)`.
19
+ *
20
+ * @module
21
+ */
22
+ /** What a turn carries: an app's input, or the leader admitting a newcomer. */
23
+ export type Entry<I> = {
24
+ readonly _tag: 'Input';
25
+ readonly input: I;
26
+ } | {
27
+ readonly _tag: 'Admit';
28
+ readonly peer: string;
29
+ };
30
+ /** One member's packet for one turn. */
31
+ export type Packet<I> = {
32
+ readonly peer: string;
33
+ readonly turn: number;
34
+ readonly entries: ReadonlyArray<Entry<I>>;
35
+ };
36
+ /** A member: the first turn it sends for, and the turn it stopped before, once it has. */
37
+ export type Member = {
38
+ readonly peer: string;
39
+ readonly from: number;
40
+ readonly until: number | null;
41
+ };
42
+ export type Lockstep<I> = {
43
+ readonly self: string;
44
+ readonly members: ReadonlyArray<Member>;
45
+ /** The next turn to apply. */
46
+ readonly turn: number;
47
+ /** The next turn this peer sends for. */
48
+ readonly sent: number;
49
+ /** How many turns ahead of the applied one a peer may send: inputs wait this long. */
50
+ readonly lead: number;
51
+ /** Entries waiting for this peer's next packet. */
52
+ readonly pending: ReadonlyArray<Entry<I>>;
53
+ /** Packets for turns not yet applied, this peer's own among them. */
54
+ readonly received: ReadonlyArray<Packet<I>>;
55
+ };
56
+ /** An input applied: the turn, and the peer it came from. */
57
+ export type Applied<I> = {
58
+ readonly turn: number;
59
+ readonly peer: string;
60
+ readonly input: I;
61
+ };
62
+ /** The members a turn waits for, in the order their inputs apply. */
63
+ export declare const membersAt: <I>(state: Lockstep<I>, turn: number) => ReadonlyArray<string>;
64
+ /** The member who admits and drops others at `turn`: the one whose id sorts first. */
65
+ export declare const leaderAt: <I>(state: Lockstep<I>, turn: number) => string | undefined;
66
+ /** A session of one: this peer alone, from turn 0. */
67
+ export declare const make: <I>(self: string, lead?: number) => Lockstep<I>;
68
+ /**
69
+ * A newcomer's session, from the leader's welcome: the members and the turn it starts
70
+ * at, with whatever packets it heard while it waited.
71
+ */
72
+ export declare const join: <I>(self: string, welcome: {
73
+ readonly turn: number;
74
+ readonly members: ReadonlyArray<Member>;
75
+ readonly lead: number;
76
+ }, heard?: ReadonlyArray<Packet<I>>) => Lockstep<I>;
77
+ /** `input` waits for this peer's next packet. */
78
+ export declare const submit: <I>(state: Lockstep<I>, input: I) => Lockstep<I>;
79
+ /** The leader asks for `peer` to be admitted; anyone else, or a known peer, changes nothing. */
80
+ export declare const admit: <I>(state: Lockstep<I>, peer: string) => Lockstep<I>;
81
+ /**
82
+ * A packet arriving: kept until its turn applies. Ones for turns already applied, from
83
+ * peers not members then, and second copies are dropped.
84
+ */
85
+ export declare const receive: <I>(state: Lockstep<I>, packet: Packet<I>) => Lockstep<I>;
86
+ /**
87
+ * This peer's packet for its next turn, with what is pending, when it is a member then
88
+ * and not more than `lead` turns ahead; it keeps its own copy.
89
+ */
90
+ export declare const send: <I>(state: Lockstep<I>) => {
91
+ readonly state: Lockstep<I>;
92
+ readonly packet: Packet<I> | undefined;
93
+ };
94
+ /** Peers whose packet for the next turn has not arrived: what the session waits on. */
95
+ export declare const waitingOn: <I>(state: Lockstep<I>) => ReadonlyArray<string>;
96
+ /**
97
+ * Every turn whose packets have all arrived, applied in order: the new state, and the
98
+ * inputs to apply to the app, oldest first and in peer order within a turn.
99
+ */
100
+ export declare const advance: <I>(state: Lockstep<I>) => {
101
+ readonly state: Lockstep<I>;
102
+ readonly applied: ReadonlyArray<Applied<I>>;
103
+ };
104
+ /**
105
+ * Newcomers this peer, as leader, should welcome now: those who become members at the
106
+ * turn about to apply, once every turn before it has (the state is then theirs to start
107
+ * from). Each is due once: at the moment `before` (the previous turn) is passed.
108
+ */
109
+ export declare const welcomeDue: <I>(before: number, state: Lockstep<I>) => ReadonlyArray<string>;
110
+ /** This peer leaving: the turn it sent last, for the others to stop waiting after. */
111
+ export declare const leave: <I>(state: Lockstep<I>) => number;
112
+ /** `peer` stops being a member from `until`; its packets from then are dropped. */
113
+ export declare const remove: <I>(state: Lockstep<I>, peer: string, until: number) => Lockstep<I>;
114
+ //# sourceMappingURL=lockstep.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lockstep.d.ts","sourceRoot":"","sources":["../../src/kernel/lockstep.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/kernel/loop.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,gBAAgB,EAAiB,MAAM,eAAe,CAAC;AACrE,OAAO,EAA4B,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACrF;;;;;GAKG;AACH,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,UAAU,EAChB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAgB,aAAa,EAAE,MAAM,eAAe,CAAC;AAEjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAmB,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AAE7D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,mEAAmE;IACnE,QAAQ,CAAC,cAAc,EAAE,MAAM,MAAM,CAAC;IACtC,kDAAkD;IAClD,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IAC3C,mFAAmF;IACnF,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B,yCAAyC;IACzC,QAAQ,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC;IAC1C;;;OAGG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,aAAa,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;CAChF,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,iEAAiE;IACjE,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,OAAO,CAAC;IACpC,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,aAAa,CAAC,UAAU,CAAC,CAAC;IACrE,uFAAuF;IACvF,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,aAAa,CAAC,UAAU,CAAC,CAAC;CACjE,CAAC;AAKF,eAAO,MAAM,eAAe,YAAa,gBAAgB,KAAG,SAyL3D,CAAC"}
1
+ {"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/kernel/loop.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,gBAAgB,EAAiB,MAAM,eAAe,CAAC;AACrE,OAAO,EAA4B,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACrF;;;;;GAKG;AACH,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,UAAU,EAChB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAgB,aAAa,EAAE,MAAM,eAAe,CAAC;AAEjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAmB,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AAE7D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,mEAAmE;IACnE,QAAQ,CAAC,cAAc,EAAE,MAAM,MAAM,CAAC;IACtC,kDAAkD;IAClD,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IAC3C,mFAAmF;IACnF,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B,yCAAyC;IACzC,QAAQ,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC;IAC1C;;;OAGG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,aAAa,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;CAChF,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,iEAAiE;IACjE,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,OAAO,CAAC;IACpC,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,aAAa,CAAC,UAAU,CAAC,CAAC;IACrE,uFAAuF;IACvF,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,aAAa,CAAC,UAAU,CAAC,CAAC;CACjE,CAAC;AAKF,eAAO,MAAM,eAAe,YAAa,gBAAgB,KAAG,SAgM3D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"materials.d.ts","sourceRoot":"","sources":["../../src/kernel/materials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAIL,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,IAAI,mBAAmB,EAErC,KAAK,OAAO,EACb,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EASV,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAE1B,4CAA4C;AAC5C,MAAM,MAAM,QAAQ,GAAG,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,GAAG,SAAS,CAAC;AAgB3D,oDAAoD;AACpD,MAAM,MAAM,YAAY,GACpB,iBAAiB,GACjB,mBAAmB,GACnB,iBAAiB,GACjB,oBAAoB,GACpB,oBAAoB,GACpB,kBAAkB,GAClB,mBAAmB,CAAC;AA6GxB,+CAA+C;AAC/C,eAAO,MAAM,aAAa,gBACX,eAAe,aAClB,QAAQ,KACjB,YAsCF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,aACf,YAAY,eACT,eAAe,aAClB,QAAQ,KACjB,OAkCF,CAAC"}
1
+ {"version":3,"file":"materials.d.ts","sourceRoot":"","sources":["../../src/kernel/materials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAIL,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,IAAI,mBAAmB,EAErC,KAAK,OAAO,EACb,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EASV,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAE1B,4CAA4C;AAC5C,MAAM,MAAM,QAAQ,GAAG,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,GAAG,SAAS,CAAC;AAgB3D,oDAAoD;AACpD,MAAM,MAAM,YAAY,GACpB,iBAAiB,GACjB,mBAAmB,GACnB,iBAAiB,GACjB,oBAAoB,GACpB,oBAAoB,GACpB,kBAAkB,GAClB,mBAAmB,CAAC;AAgHxB,+CAA+C;AAC/C,eAAO,MAAM,aAAa,gBACX,eAAe,aAClB,QAAQ,KACjB,YAsCF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,aACf,YAAY,eACT,eAAe,aAClB,QAAQ,KACjB,OAkCF,CAAC"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * The order to paint a still in, far to near from one eye, exactly: a binary space
3
+ * partition (Fuchs, Kedem and Naylor, 1980) of what is drawn, where sorting by depth
4
+ * would paint a floor over what stands on it. It partitions objects rather than faces: an
5
+ * object none of whose faces can hide another (any convex solid, its back faces culled)
6
+ * is painted as it is, and is told which side of a plane it lies by its bounding sphere
7
+ * before its faces are looked at, so a scene of many objects stays quick. Splitting
8
+ * planes are chosen to cut few objects and to share them out evenly.
9
+ *
10
+ * @module
11
+ */
12
+ import { Sphere, Vector3 } from 'three';
13
+ /** A flat convex polygon in the world, and what it is painted as. */
14
+ export type Facet<T> = {
15
+ readonly _tag: 'Facet';
16
+ readonly points: ReadonlyArray<Vector3>;
17
+ readonly item: T;
18
+ };
19
+ /** Something without area (a line, a point) at a place in the world. */
20
+ export type Mark<T> = {
21
+ readonly _tag: 'Mark';
22
+ readonly at: Vector3;
23
+ readonly item: T;
24
+ };
25
+ /** What one object draws, and whether its facets may be painted in any order. */
26
+ export type Unit<T> = {
27
+ readonly facets: ReadonlyArray<Facet<T>>;
28
+ readonly marks: ReadonlyArray<Mark<T>>;
29
+ readonly bounds: Sphere;
30
+ readonly selfOrdered: boolean;
31
+ };
32
+ /** A plane, `normal · p = constant`. */
33
+ export type Plane = {
34
+ readonly normal: Vector3;
35
+ readonly constant: number;
36
+ };
37
+ type Parts<T> = {
38
+ readonly front?: Facet<T>;
39
+ readonly back?: Facet<T>;
40
+ readonly on?: Facet<T>;
41
+ };
42
+ /** A facet split by a plane: what lies in front of it, behind it, and in it. */
43
+ export declare const split: <T>(plane: Plane, facet: Facet<T>) => Parts<T>;
44
+ /**
45
+ * Gathers what one object draws. Its facets may be painted in any order when the eye is
46
+ * in front of each and every other lies on or behind each one's plane: then none comes
47
+ * between the eye and another.
48
+ */
49
+ export declare const unitOf: <T>(facets: ReadonlyArray<Facet<T>>, marks: ReadonlyArray<Mark<T>>, eye: Vector3) => Unit<T>;
50
+ /** What `units` draw, in the order to paint it seen from `eye`: farthest first. */
51
+ export declare const paintOrder: <T>(units: ReadonlyArray<Unit<T>>, eye: Vector3) => ReadonlyArray<Facet<T> | Mark<T>>;
52
+ export {};
53
+ //# sourceMappingURL=paintOrder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paintOrder.d.ts","sourceRoot":"","sources":["../../src/kernel/paintOrder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAExC,qEAAqE;AACrE,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI;IACrB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACxC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;CAClB,CAAC;AAEF,wEAAwE;AACxE,MAAM,MAAM,IAAI,CAAC,CAAC,IAAI;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;CAAE,CAAC;AAExF,iFAAiF;AACjF,MAAM,MAAM,IAAI,CAAC,CAAC,IAAI;IACpB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF,wCAAwC;AACxC,MAAM,MAAM,KAAK,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAyB5E,KAAK,KAAK,CAAC,CAAC,IAAI;IACd,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,QAAQ,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;CACxB,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,KAAK,GAAI,CAAC,SAAS,KAAK,SAAS,KAAK,CAAC,CAAC,CAAC,KAAG,KAAK,CAAC,CAAC,CAwB/D,CAAC;AAeF;;;;GAIG;AACH,eAAO,MAAM,MAAM,GAAI,CAAC,UACd,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SACxB,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OACxB,OAAO,KACX,IAAI,CAAC,CAAC,CAKR,CAAC;AAoJF,mFAAmF;AACnF,eAAO,MAAM,UAAU,GAAI,CAAC,SACnB,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OACxB,OAAO,KACX,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAIlC,CAAC"}
@@ -135,11 +135,50 @@ export type PhysicsWorld = {
135
135
  /** Whether any dynamic body is still moving (not asleep). */
136
136
  readonly awake: () => boolean;
137
137
  readonly dispose: () => void;
138
+ /**
139
+ * For a world that does what it is asked elsewhere (in a worker, ADR-017): the
140
+ * collisions that have come back since the last call, and whether anything it was asked
141
+ * is still to come back. Until it has, `pose`, `contactForces` and `debugLines` are as
142
+ * of what has, and `step` returns no collisions. The scene graph takes it every frame,
143
+ * and reports a world on `until` as there only once nothing is pending, so its checksum
144
+ * is of the engine's own poses. Absent for a world that does what it is asked at once.
145
+ */
146
+ readonly received?: () => Received;
147
+ /**
148
+ * The world as it is between steps, for `PhysicsEngine.restoreWorld` to make again:
149
+ * every body, collider and joint, and whatever the engine carries from step to step.
150
+ * A world working elsewhere gives `undefined` until it has the snapshot it asked for
151
+ * (`received` is pending meanwhile). Absent for an engine that cannot.
152
+ */
153
+ readonly snapshot?: () => Uint8Array | undefined;
154
+ };
155
+ /** What a world stepping elsewhere has sent back (`PhysicsWorld.received`). */
156
+ export type Received = {
157
+ readonly collisions: ReadonlyArray<Collision>;
158
+ readonly pending: boolean;
159
+ };
160
+ /**
161
+ * A world made from a snapshot, and what it holds already: the ids of its bodies and of
162
+ * its joints, which the scene graph takes on rather than adding again.
163
+ */
164
+ export type RestoredWorld = {
165
+ readonly world: PhysicsWorld;
166
+ readonly bodies: ReadonlyArray<string>;
167
+ readonly joints: ReadonlyArray<string>;
138
168
  };
139
169
  /** Makes physics worlds. Provide one to the scene graph (in Foldkit, the environment). */
140
170
  export type PhysicsEngine = {
141
171
  readonly createWorld: (physics: Physics) => PhysicsWorld;
172
+ /**
173
+ * Makes a world from a snapshot one of this engine's worlds took (`snapshot`), as it
174
+ * was then, for `physics({ from })`. Absent for an engine that cannot.
175
+ */
176
+ readonly restoreWorld?: (physics: Physics, snapshot: Uint8Array) => RestoredWorld;
142
177
  };
178
+ /** A snapshot as text (base64), as `PhysicsReached` carries it and a message can. */
179
+ export declare const snapshotText: (bytes: Uint8Array) => string;
180
+ /** The bytes of a snapshot written by `snapshotText`. */
181
+ export declare const snapshotBytes: (text: string) => Uint8Array;
143
182
  /**
144
183
  * The collider for one geometry at world `scale`, centred where its geometry is: what a
145
184
  * mesh with a body of its own gets.
@@ -1 +1 @@
1
- {"version":3,"file":"physics.d.ts","sourceRoot":"","sources":["../../src/kernel/physics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"physics.d.ts","sourceRoot":"","sources":["../../src/kernel/physics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import type { SceneNode, Vec3 } from './description.ts';
2
+ import type { Placement } from './gizmo.ts';
3
+ import type { Ray } from './pointer.ts';
4
+ type Axis = 'x' | 'y' | 'z';
5
+ /** A handle: what it does, and the axis it is on (a square's and an arc's normal). */
6
+ export type PivotHandle = `${'arrow' | 'slider' | 'rotator' | 'sphere'}-${Axis}`;
7
+ /** A drag in progress: the handle, the placement it began at and the frame it moves in. */
8
+ export type PivotGrab = {
9
+ readonly handle: PivotHandle;
10
+ readonly start: Placement;
11
+ /** Where the press hit the handle. */
12
+ readonly point: Vec3;
13
+ /** The handle's directions in the world: its axis, or its plane's two and normal. */
14
+ readonly e1: Vec3;
15
+ readonly e2: Vec3;
16
+ readonly normal: Vec3;
17
+ };
18
+ export type Pivot = {
19
+ /** The handles' size in scene units: an arrow's length (Drei's `scale`, 1). */
20
+ readonly scale: number;
21
+ /** Whether the object hides the handles behind it (Drei's `depthTest`, true). */
22
+ readonly depthTest: boolean;
23
+ /** Leave out kinds of handle, as Drei's `disable*`. */
24
+ readonly disableAxes: boolean;
25
+ readonly disableSliders: boolean;
26
+ readonly disableRotations: boolean;
27
+ readonly disableScaling: boolean;
28
+ /** The handle under the pointer, drawn in Drei's hovered yellow. */
29
+ readonly hovered: PivotHandle | null;
30
+ readonly grab: PivotGrab | null;
31
+ };
32
+ /** Pivot controls with Drei's defaults: size 1, depth tested, every handle shown. */
33
+ export declare const pivot: (options?: Partial<Omit<Pivot, 'hovered' | 'grab'>>) => Pivot;
34
+ /** A press on `handle` at `point`, with the object at `placement`: takes hold. */
35
+ export declare const pressPivot: (state: Pivot, placement: Placement, handle: PivotHandle, point: Vec3) => Pivot;
36
+ export declare const releasePivot: (state: Pivot) => Pivot;
37
+ export declare const hoverPivot: (state: Pivot, handle: PivotHandle | null) => Pivot;
38
+ /**
39
+ * The placement a drag ray gives, or `undefined` while nothing is held. `snap` rounds
40
+ * turns to ten degrees and scales to tenths, as Drei's shift does.
41
+ */
42
+ export declare const dragPivot: (state: Pivot, ray: Ray, options?: {
43
+ readonly snap?: boolean;
44
+ }) => Placement | undefined;
45
+ /** The handle a hit names, if it is one of this pivot's. */
46
+ export declare const pivotHandleOf: (key: string, hit: string) => PivotHandle | undefined;
47
+ /**
48
+ * The handles for `placement`: a group at the object, turned with it (and not scaled),
49
+ * its handles keyed `${key}:arrow-x`, `${key}:slider-z`, `${key}:rotator-y`,
50
+ * `${key}:sphere-x` and so on, each pickable.
51
+ */
52
+ export declare const pivotNodes: (key: string, state: Pivot, placement: Placement) => SceneNode;
53
+ export {};
54
+ //# sourceMappingURL=pivot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pivot.d.ts","sourceRoot":"","sources":["../../src/kernel/pivot.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAExC,KAAK,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAE5B,sFAAsF;AACtF,MAAM,MAAM,WAAW,GAAG,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,IAAI,IAAI,EAAE,CAAC;AAEjF,2FAA2F;AAC3F,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,sCAAsC;IACtC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;IACrB,qFAAqF;IACrF,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG;IAClB,+EAA+E;IAC/E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,iFAAiF;IACjF,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,uDAAuD;IACvD,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,oEAAoE;IACpE,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC;CACjC,CAAC;AAEF,qFAAqF;AACrF,eAAO,MAAM,KAAK,aAAa,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAAC,CAAC,KAAQ,KAS7E,CAAC;AAoCH,kFAAkF;AAClF,eAAO,MAAM,UAAU,UACd,KAAK,aACD,SAAS,UACZ,WAAW,SACZ,IAAI,KACV,KAaF,CAAC;AAEF,eAAO,MAAM,YAAY,UAAW,KAAK,KAAG,KAAmC,CAAC;AAEhF,eAAO,MAAM,UAAU,UAAW,KAAK,UAAU,WAAW,GAAG,IAAI,KAAG,KACJ,CAAC;AAmGnE;;;GAGG;AACH,eAAO,MAAM,SAAS,UACb,KAAK,OACP,GAAG,YACC;IAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,KACnC,SAAS,GAAG,SASd,CAAC;AAUF,4DAA4D;AAC5D,eAAO,MAAM,aAAa,QAAS,MAAM,OAAO,MAAM,KAAG,WAAW,GAAG,SAMtE,CAAC;AA0IF;;;;GAIG;AACH,eAAO,MAAM,UAAU,QAAS,MAAM,SAAS,KAAK,aAAa,SAAS,KAAG,SAWzE,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { PointLook } from './description.ts';
2
+ /** Per-point attributes: three numbers a point for positions, colours and noise. */
3
+ export type PointBuffers = {
4
+ readonly count: number;
5
+ readonly positions: Float32Array;
6
+ readonly colors: Float32Array;
7
+ readonly sizes: Float32Array;
8
+ /** Sparkles only: each mote's drift speed, opacity and noise. */
9
+ readonly speeds: Float32Array;
10
+ readonly opacities: Float32Array;
11
+ readonly noise: Float32Array;
12
+ };
13
+ /** The buffers for a look. */
14
+ export declare const pointBuffers: (look: PointLook) => PointBuffers;
15
+ /** Whether a look moves on its own: sparkles drift and stars twinkle in scene time. */
16
+ export declare const animatedLook: (look: PointLook) => boolean;
17
+ //# sourceMappingURL=pointBuffers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pointBuffers.d.ts","sourceRoot":"","sources":["../../src/kernel/pointBuffers.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlD,oFAAoF;AACpF,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,iEAAiE;IACjE,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;CAC9B,CAAC;AA+EF,8BAA8B;AAC9B,eAAO,MAAM,YAAY,SAAU,SAAS,KAAG,YAS9C,CAAC;AAEF,uFAAuF;AACvF,eAAO,MAAM,YAAY,SAAU,SAAS,KAAG,OAA+B,CAAC"}
@@ -8,10 +8,14 @@ export type Modifiers = {
8
8
  readonly meta: boolean;
9
9
  readonly alt: boolean;
10
10
  };
11
+ /** What pressed: `PointerEvent.pointerType`. A finger is less steady than a mouse or pen. */
12
+ export type PointerDevice = 'mouse' | 'pen' | 'touch';
11
13
  /**
12
14
  * Pointer input in normalised device coordinates. `button` follows `MouseEvent.button`.
13
15
  * `pointer` is the input's `PointerEvent.pointerId` (0 when absent): with two pointers
14
- * pressed (two fingers), the second only takes part in pinches.
16
+ * pressed (two fingers), the second only takes part in pinches. A press's `device` is
17
+ * what pressed (a mouse when absent); it decides how far a press may travel and still be
18
+ * a click on nothing.
15
19
  */
16
20
  export type PointerInput = {
17
21
  readonly _tag: 'PointerMove';
@@ -25,6 +29,7 @@ export type PointerInput = {
25
29
  readonly button: number;
26
30
  readonly pointer?: number;
27
31
  readonly modifiers?: Modifiers;
32
+ readonly device?: PointerDevice;
28
33
  } | {
29
34
  readonly _tag: 'PointerUp';
30
35
  readonly x: number;
@@ -195,6 +200,18 @@ export type SceneEvent = HitEvent<'PointerEnter'> | {
195
200
  readonly _tag: 'Gesture';
196
201
  readonly gesture: Gesture;
197
202
  }
203
+ /**
204
+ * A gesture that moved has ended: released, or the pointer left. Only after a `Drag`
205
+ * or `Pinch`, with the press's button, modifiers, mesh and view: the moment to finish
206
+ * what the gesture drew, such as a selection box.
207
+ */
208
+ | {
209
+ readonly _tag: 'GestureEnd';
210
+ readonly button: number;
211
+ readonly modifiers: Modifiers;
212
+ readonly key?: string;
213
+ readonly view?: string;
214
+ }
198
215
  /**
199
216
  * A gesture is about to begin on a camera that has turned by itself (`autoRotate`):
200
217
  * where it got to, so the Model can keep it (`autoRotated(camera, detail)`) and the
@@ -277,6 +294,19 @@ export type SceneEvent = HitEvent<'PointerEnter'> | {
277
294
  readonly maxForceDirection: Vec3;
278
295
  readonly maxForceMagnitude: number;
279
296
  }
297
+ /**
298
+ * A world on `physics({ until })` reached that step and waits there: its run, its
299
+ * step count, and a checksum of every body's pose, which peers running the same inputs
300
+ * share (ADR-014). It comes after the collisions of the steps that led there. At
301
+ * `physics({ snapshotAt })` it carries a snapshot of the world, to start another `from`.
302
+ */
303
+ | {
304
+ readonly _tag: 'PhysicsReached';
305
+ readonly run: number;
306
+ readonly step: number;
307
+ readonly checksum: string;
308
+ readonly snapshot?: string;
309
+ }
280
310
  /**
281
311
  * A measured label's laid-out size changed (`scene({ measure })`, after its glyphs are
282
312
  * laid out): in its own units, before its scale, for sizing what goes behind it, as
@@ -1 +1 @@
1
- {"version":3,"file":"pointer.d.ts","sourceRoot":"","sources":["../../src/kernel/pointer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pointer.d.ts","sourceRoot":"","sources":["../../src/kernel/pointer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import type { Rgb, SceneDescription } from './description.ts';
2
+ import type { ResourceStore } from './resources.ts';
3
+ import { type SceneGraphOptions } from './sceneGraph.ts';
4
+ import type { DescriptionError } from './sceneIndex.ts';
5
+ export type PreviewOptions = {
6
+ /** The picture's size in pixels; the camera takes its aspect ratio. */
7
+ readonly width: number;
8
+ readonly height: number;
9
+ /** The moment of scene time shown, in seconds: behaviours and clips as they are then. */
10
+ readonly at?: number;
11
+ /** A colour behind the scene; transparent without one. */
12
+ readonly background?: Rgb | null;
13
+ /** Lends what borrowed nodes, maps by id and text name; nothing is lent without one. */
14
+ readonly store?: ResourceStore;
15
+ /** Behaviours nodes may name, beyond the built-in ones, as for the scene graph. */
16
+ readonly behaviours?: SceneGraphOptions['behaviours'];
17
+ /** Digits after the decimal point in coordinates. */
18
+ readonly precision?: number;
19
+ };
20
+ export type PreviewResult = {
21
+ readonly _tag: 'Preview';
22
+ readonly svg: string;
23
+ } | {
24
+ readonly _tag: 'Invalid';
25
+ readonly error: DescriptionError;
26
+ };
27
+ /**
28
+ * Draws `description` as SVG text `width` by `height` pixels, at `at` seconds of scene time,
29
+ * or says why the description is invalid.
30
+ */
31
+ export declare const previewSvg: (description: SceneDescription, options: PreviewOptions) => PreviewResult;
32
+ //# sourceMappingURL=preview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../../src/kernel/preview.ts"],"names":[],"mappings":"AA6DA,OAAO,KAAK,EAAE,GAAG,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAU9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,MAAM,MAAM,cAAc,GAAG;IAC3B,uEAAuE;IACvE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,yFAAyF;IACzF,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,QAAQ,CAAC,UAAU,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC;IACjC,wFAAwF;IACxF,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC;IAC/B,mFAAmF;IACnF,QAAQ,CAAC,UAAU,CAAC,EAAE,iBAAiB,CAAC,YAAY,CAAC,CAAC;IACtD,qDAAqD;IACrD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,aAAa,GACrB;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAClD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAA;CAAE,CAAC;AA2MnE;;;GAGG;AACH,eAAO,MAAM,UAAU,gBACR,gBAAgB,WACpB,cAAc,KACtB,aAmKF,CAAC"}
@@ -8,7 +8,7 @@
8
8
  * @module
9
9
  */
10
10
  import type { Object3D, Scene } from 'three';
11
- import type { ContactShadows, ShaderGridNode, Sky } from './description.ts';
11
+ import type { ContactShadows, LineNode, PointsNode, ShaderGridNode, Sky } from './description.ts';
12
12
  import type { SceneRenderer } from './renderer.ts';
13
13
  /** A sky as a kit draws it: the object the graph adds to its scene, never picked. */
14
14
  export type HostedSky = {
@@ -22,6 +22,22 @@ export type HostedShaderGrid = {
22
22
  readonly update: (previous: ShaderGridNode, next: ShaderGridNode) => void;
23
23
  readonly dispose: () => void;
24
24
  };
25
+ /** A line as a kit draws it (three's fat lines), inside the node's wrapper. */
26
+ export type HostedLine = {
27
+ readonly object: Object3D;
28
+ /** Applies new points or a new look; the wrapper carries the transform. */
29
+ readonly update: (line: LineNode) => void;
30
+ readonly dispose: () => void;
31
+ };
32
+ /** Points as a kit draws them, inside the node's wrapper. */
33
+ export type HostedPoints = {
34
+ readonly object: Object3D;
35
+ /** Applies a new look; the wrapper carries the transform. */
36
+ readonly update: (points: PointsNode) => void;
37
+ /** Moves sparkles and twinkles stars to scene time `seconds`. */
38
+ readonly tick: (seconds: number) => void;
39
+ readonly dispose: () => void;
40
+ };
25
41
  /** The contact shadow passes for one scene, drawn by the frame loop before each frame. */
26
42
  export type ContactShadowPasses = {
27
43
  /** Draws the scene's contact shadows, if it has any, before the frame is drawn. */
@@ -44,6 +60,10 @@ export type RenderKit = {
44
60
  readonly shading: 'webgl' | 'tsl';
45
61
  readonly sky: () => HostedSky;
46
62
  readonly shaderGrid: (node: ShaderGridNode) => HostedShaderGrid;
63
+ /** Draws a line; a kit without lines leaves them empty. */
64
+ readonly line?: (node: LineNode) => HostedLine;
65
+ /** Draws points; a kit without points leaves them empty. */
66
+ readonly points?: (node: PointsNode) => HostedPoints;
47
67
  readonly contactShadows: (graph: ShadowedScene, renderer: SceneRenderer) => ContactShadowPasses;
48
68
  };
49
69
  //# sourceMappingURL=renderKit.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"renderKit.d.ts","sourceRoot":"","sources":["../../src/kernel/renderKit.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAE7C,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,qFAAqF;AACrF,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B,CAAC;AAEF,+EAA+E;AAC/E,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;IAC1E,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B,CAAC;AAEF,0FAA0F;AAC1F,MAAM,MAAM,mBAAmB,GAAG;IAChC,mFAAmF;IACnF,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B,CAAC;AAEF,qFAAqF;AACrF,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,cAAc,EAAE,MAAM,cAAc,GAAG,IAAI,CAAC;CACtD,CAAC;AAEF,iCAAiC;AACjC,MAAM,MAAM,SAAS,GAAG;IACtB;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,KAAK,CAAC;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,SAAS,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,gBAAgB,CAAC;IAChE,QAAQ,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,KAAK,mBAAmB,CAAC;CACjG,CAAC"}
1
+ {"version":3,"file":"renderKit.d.ts","sourceRoot":"","sources":["../../src/kernel/renderKit.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAE7C,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAClG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,qFAAqF;AACrF,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B,CAAC;AAEF,+EAA+E;AAC/E,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;IAC1E,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B,CAAC;AAEF,+EAA+E;AAC/E,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,2EAA2E;IAC3E,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B,CAAC;AAEF,6DAA6D;AAC7D,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,6DAA6D;IAC7D,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IAC9C,iEAAiE;IACjE,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B,CAAC;AAEF,0FAA0F;AAC1F,MAAM,MAAM,mBAAmB,GAAG;IAChC,mFAAmF;IACnF,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B,CAAC;AAEF,qFAAqF;AACrF,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,cAAc,EAAE,MAAM,cAAc,GAAG,IAAI,CAAC;CACtD,CAAC;AAEF,iCAAiC;AACjC,MAAM,MAAM,SAAS,GAAG;IACtB;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,KAAK,CAAC;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,SAAS,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,gBAAgB,CAAC;IAChE,2DAA2D;IAC3D,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,UAAU,CAAC;IAC/C,4DAA4D;IAC5D,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,YAAY,CAAC;IACrD,QAAQ,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,KAAK,mBAAmB,CAAC;CACjG,CAAC"}
@@ -37,6 +37,12 @@ export type SceneRenderer = {
37
37
  * otherwise across the whole surface.
38
38
  */
39
39
  readonly render: (scene: Scene, camera: Camera, area?: RenderArea, target?: RenderTarget) => void;
40
+ /**
41
+ * Draws `scene` over what the surface already shows, across the whole of it: keeping
42
+ * the colour, clearing only depth (a HUD, as Drei's `Hud` draws). Without it, a HUD is
43
+ * not drawn. Not while presenting immersively.
44
+ */
45
+ readonly renderOver?: (scene: Scene, camera: Camera) => void;
40
46
  /** Creates an offscreen target of `width` × `height` pixels to render into. */
41
47
  readonly createTarget: (width: number, height: number) => RenderTarget;
42
48
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/kernel/renderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/kernel/renderer.ts"],"names":[],"mappings":"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"}