tosijs-3d 0.7.2 → 0.7.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 (153) hide show
  1. package/CHANGELOG.md +900 -0
  2. package/dist/b3d-aircraft.d.ts +14 -0
  3. package/dist/b3d-aircraft.d.ts.map +1 -1
  4. package/dist/b3d-aircraft.js +45 -0
  5. package/dist/b3d-aircraft.js.map +1 -1
  6. package/dist/b3d-ambient.d.ts +12 -0
  7. package/dist/b3d-ambient.d.ts.map +1 -1
  8. package/dist/b3d-ambient.js +83 -1
  9. package/dist/b3d-ambient.js.map +1 -1
  10. package/dist/b3d-biped.d.ts +290 -0
  11. package/dist/b3d-biped.d.ts.map +1 -1
  12. package/dist/b3d-biped.js +1366 -22
  13. package/dist/b3d-biped.js.map +1 -1
  14. package/dist/b3d-collisions.d.ts.map +1 -1
  15. package/dist/b3d-collisions.js +45 -7
  16. package/dist/b3d-collisions.js.map +1 -1
  17. package/dist/b3d-controllable.d.ts +50 -0
  18. package/dist/b3d-controllable.d.ts.map +1 -1
  19. package/dist/b3d-controllable.js +61 -0
  20. package/dist/b3d-controllable.js.map +1 -1
  21. package/dist/b3d-death.d.ts +26 -0
  22. package/dist/b3d-death.d.ts.map +1 -1
  23. package/dist/b3d-death.js +224 -2
  24. package/dist/b3d-death.js.map +1 -1
  25. package/dist/b3d-interactive.d.ts +80 -0
  26. package/dist/b3d-interactive.d.ts.map +1 -0
  27. package/dist/b3d-interactive.js +284 -0
  28. package/dist/b3d-interactive.js.map +1 -0
  29. package/dist/b3d-library.d.ts +39 -0
  30. package/dist/b3d-library.d.ts.map +1 -1
  31. package/dist/b3d-library.js +67 -0
  32. package/dist/b3d-library.js.map +1 -1
  33. package/dist/b3d-svg-plane.d.ts +35 -0
  34. package/dist/b3d-svg-plane.d.ts.map +1 -1
  35. package/dist/b3d-svg-plane.js +96 -8
  36. package/dist/b3d-svg-plane.js.map +1 -1
  37. package/dist/b3d-water.d.ts.map +1 -1
  38. package/dist/b3d-water.js +32 -6
  39. package/dist/b3d-water.js.map +1 -1
  40. package/dist/buoyancy.d.ts +90 -0
  41. package/dist/buoyancy.d.ts.map +1 -0
  42. package/dist/buoyancy.js +150 -0
  43. package/dist/buoyancy.js.map +1 -0
  44. package/dist/curve-field.d.ts +39 -0
  45. package/dist/curve-field.d.ts.map +1 -0
  46. package/dist/curve-field.js +491 -0
  47. package/dist/curve-field.js.map +1 -0
  48. package/dist/curve.d.ts +241 -0
  49. package/dist/curve.d.ts.map +1 -0
  50. package/dist/curve.js +559 -0
  51. package/dist/curve.js.map +1 -0
  52. package/dist/dialog-placement.d.ts +69 -7
  53. package/dist/dialog-placement.d.ts.map +1 -1
  54. package/dist/dialog-placement.js +90 -9
  55. package/dist/dialog-placement.js.map +1 -1
  56. package/dist/embed-font.d.ts +48 -0
  57. package/dist/embed-font.d.ts.map +1 -0
  58. package/dist/embed-font.js +135 -0
  59. package/dist/embed-font.js.map +1 -0
  60. package/dist/footprint-field.d.ts +30 -0
  61. package/dist/footprint-field.d.ts.map +1 -0
  62. package/dist/footprint-field.js +256 -0
  63. package/dist/footprint-field.js.map +1 -0
  64. package/dist/frame-panel.d.ts.map +1 -1
  65. package/dist/frame-panel.js +15 -12
  66. package/dist/frame-panel.js.map +1 -1
  67. package/dist/glb-manifest.d.ts +75 -0
  68. package/dist/glb-manifest.d.ts.map +1 -0
  69. package/dist/glb-manifest.js +198 -0
  70. package/dist/glb-manifest.js.map +1 -0
  71. package/dist/icon-data.d.ts.map +1 -1
  72. package/dist/icon-data.js +20 -1
  73. package/dist/icon-data.js.map +1 -1
  74. package/dist/index.d.ts +33 -4
  75. package/dist/index.d.ts.map +1 -1
  76. package/dist/index.js +38 -3
  77. package/dist/index.js.map +1 -1
  78. package/dist/interaction.d.ts +66 -0
  79. package/dist/interaction.d.ts.map +1 -0
  80. package/dist/interaction.js +117 -0
  81. package/dist/interaction.js.map +1 -0
  82. package/dist/interactive-behavior.d.ts +105 -0
  83. package/dist/interactive-behavior.d.ts.map +1 -0
  84. package/dist/interactive-behavior.js +253 -0
  85. package/dist/interactive-behavior.js.map +1 -0
  86. package/dist/key-layout.d.ts +70 -0
  87. package/dist/key-layout.d.ts.map +1 -1
  88. package/dist/key-layout.js +122 -0
  89. package/dist/key-layout.js.map +1 -1
  90. package/dist/keyboard-gamepad.d.ts.map +1 -1
  91. package/dist/keyboard-gamepad.js +19 -6
  92. package/dist/keyboard-gamepad.js.map +1 -1
  93. package/dist/keyboard.d.ts +100 -1
  94. package/dist/keyboard.d.ts.map +1 -1
  95. package/dist/keyboard.js +280 -35
  96. package/dist/keyboard.js.map +1 -1
  97. package/dist/mantle.d.ts +56 -0
  98. package/dist/mantle.d.ts.map +1 -0
  99. package/dist/mantle.js +115 -0
  100. package/dist/mantle.js.map +1 -0
  101. package/dist/popup-surface.d.ts +5 -1
  102. package/dist/popup-surface.d.ts.map +1 -1
  103. package/dist/popup-surface.js +181 -14
  104. package/dist/popup-surface.js.map +1 -1
  105. package/dist/surface.d.ts.map +1 -1
  106. package/dist/surface.js +111 -15
  107. package/dist/surface.js.map +1 -1
  108. package/dist/svg-icons.d.ts.map +1 -1
  109. package/dist/svg-icons.js +13 -1
  110. package/dist/svg-icons.js.map +1 -1
  111. package/dist/svg-texture.d.ts.map +1 -1
  112. package/dist/svg-texture.js +40 -1
  113. package/dist/svg-texture.js.map +1 -1
  114. package/dist/swim-aim.d.ts +78 -0
  115. package/dist/swim-aim.d.ts.map +1 -0
  116. package/dist/swim-aim.js +140 -0
  117. package/dist/swim-aim.js.map +1 -0
  118. package/dist/theme-editor.d.ts +41 -0
  119. package/dist/theme-editor.d.ts.map +1 -0
  120. package/dist/theme-editor.js +303 -0
  121. package/dist/theme-editor.js.map +1 -0
  122. package/dist/tosi-b3d.d.ts +24 -4
  123. package/dist/tosi-b3d.d.ts.map +1 -1
  124. package/dist/tosi-b3d.js +238 -37
  125. package/dist/tosi-b3d.js.map +1 -1
  126. package/dist/vector-field.d.ts +58 -0
  127. package/dist/vector-field.d.ts.map +1 -0
  128. package/dist/vector-field.js +321 -0
  129. package/dist/vector-field.js.map +1 -0
  130. package/dist/virtual-gamepad.d.ts.map +1 -1
  131. package/dist/virtual-gamepad.js +46 -9
  132. package/dist/virtual-gamepad.js.map +1 -1
  133. package/dist/w3d-theme.d.ts +115 -17
  134. package/dist/w3d-theme.d.ts.map +1 -1
  135. package/dist/w3d-theme.js +311 -0
  136. package/dist/w3d-theme.js.map +1 -1
  137. package/dist/water-normal.d.ts +26 -0
  138. package/dist/water-normal.d.ts.map +1 -0
  139. package/dist/water-normal.js +105 -0
  140. package/dist/water-normal.js.map +1 -0
  141. package/dist/widgets3d-layout.d.ts +58 -0
  142. package/dist/widgets3d-layout.d.ts.map +1 -1
  143. package/dist/widgets3d-layout.js +79 -1
  144. package/dist/widgets3d-layout.js.map +1 -1
  145. package/dist/widgets3d.d.ts +51 -2
  146. package/dist/widgets3d.d.ts.map +1 -1
  147. package/dist/widgets3d.js +418 -112
  148. package/dist/widgets3d.js.map +1 -1
  149. package/dist/wreck-fall.d.ts +86 -0
  150. package/dist/wreck-fall.d.ts.map +1 -0
  151. package/dist/wreck-fall.js +129 -0
  152. package/dist/wreck-fall.js.map +1 -0
  153. package/package.json +9 -6
@@ -0,0 +1,284 @@
1
+ /*#
2
+ # b3d-interactive
3
+
4
+ **Makes a mesh touchable.** Point at it, reach it, use it — and it tells you, by
5
+ callback or by bubbling event. It is the substrate doors, knobs, switches,
6
+ levers, consoles and lamps all stand on; the rules it enforces are pure and
7
+ tested in [interaction](?interaction.ts), and the scene bridge is
8
+ [interactive-behavior](?interactive-behavior.ts).
9
+
10
+ `b3d-button` is a floating Babylon GUI widget. This is the other thing: *world
11
+ geometry you reach out to*.
12
+
13
+ ## Demo
14
+
15
+ ```js
16
+ import { b3d, b3dBox, b3dSphere, b3dGround, b3dLight, b3dSkybox, b3dInteractive } from 'tosijs-3d'
17
+ import { orbitCam } from 'tosijs-3d/demo-utils'
18
+ import { tosi, elements } from 'tosijs'
19
+ const { div, p, span } = elements
20
+
21
+ const { demo } = tosi({ demo: { status: 'Click a brass knob.', key: 'no key' } })
22
+
23
+ // Two sliding doors. Each is a BOX plus a KNOB, and the interactive targets the
24
+ // KNOB — the sub-mesh you actually touch, not the whole panel. Knobs sit at -z
25
+ // because the default camera is on that side; a knob on the far face is behind
26
+ // its own door and unpickable, which reads as "the interactive is broken".
27
+ const doorL = b3dBox({ meshName: 'doorL', width: 1.6, height: 2.4, depth: 0.14, x: -2.2, y: 1.2, color: '#7a5236' })
28
+ const knobL = b3dSphere({ meshName: 'knobL', diameter: 0.22, x: -1.55, y: 1.2, z: -0.14, color: '#d9a441' })
29
+ const doorR = b3dBox({ meshName: 'doorR', width: 1.6, height: 2.4, depth: 0.14, x: 2.2, y: 1.2, color: '#7a5236' })
30
+ const knobR = b3dSphere({ meshName: 'knobR', diameter: 0.22, x: 1.55, y: 1.2, z: -0.14, color: '#b0483c' })
31
+
32
+ // A key on a plinth. Picking it up is just another interactive.
33
+ const key = b3dBox({ meshName: 'key', width: 0.35, height: 0.1, depth: 0.1, x: 0, y: 1.05, z: -0.1, color: '#ffd45e', glow: 0.8 })
34
+ const plinth = b3dBox({ meshName: 'plinth', width: 0.6, height: 1, depth: 0.6, x: 0, y: 0.5, color: '#555a60' })
35
+
36
+ // A lamp and its switch — the same primitive doing something that isn't a door.
37
+ const ambient = b3dLight({ y: 1, intensity: 0.35 })
38
+ const lamp = b3dSphere({ meshName: 'lamp', diameter: 0.5, x: 0, y: 3.2, color: '#332a12', glow: 0.1 })
39
+ const post = b3dBox({ meshName: 'post', width: 0.12, height: 1.3, depth: 0.12, x: 0.9, y: 0.65, z: -0.9, color: '#4b5057' })
40
+ const lampSwitch = b3dBox({ meshName: 'switch', width: 0.3, height: 0.4, depth: 0.12, x: 0.9, y: 1.35, z: -0.9, color: '#c8ccd0' })
41
+
42
+ let hasKey = false
43
+ let openL = 0, wantL = 0, openR = 0, wantR = 0, lit = false
44
+
45
+ // LEFT door: unlocked. Note it moves the ELEMENT (`x`), never `mesh.position` —
46
+ // an element that manages a node owns its transform, so writing the mesh is
47
+ // undone on the next render.
48
+ const useL = b3dInteractive({
49
+ target: 'knobL',
50
+ whenActivated: () => { wantL = wantL ? 0 : 1; demo.status.value = wantL ? 'Left door opening.' : 'Left door closing.' },
51
+ })
52
+
53
+ // RIGHT door: locked, by COMPOSITION. `lockable` is a veto on the same piece —
54
+ // the interactive never learns what a lock is, and a refusal names the refuser.
55
+ const useR = b3dInteractive({
56
+ target: 'knobR',
57
+ whenActivated: () => { wantR = wantR ? 0 : 1; demo.status.value = wantR ? 'Right door opening.' : 'Right door closing.' },
58
+ whenRefused: (info) => { demo.status.value = `It will not budge — ${info.reason}.` },
59
+ })
60
+ useR.vetoes.push({ name: 'locked', blocks: () => !hasKey })
61
+
62
+ const takeKey = b3dInteractive({
63
+ target: 'key',
64
+ whenActivated: () => {
65
+ hasKey = true
66
+ demo.key.value = 'brass key'
67
+ demo.status.value = 'You take the key. The red knob will turn now.'
68
+ key.remove()
69
+ // Material, not placement — b3d-primitives build their material once, so a
70
+ // live recolour goes through the material rather than the `color` attribute.
71
+ knobR.mesh.material.diffuseColor.set(0.85, 0.64, 0.25)
72
+ },
73
+ })
74
+
75
+ const flick = b3dInteractive({
76
+ target: 'switch',
77
+ whenActivated: () => {
78
+ lit = !lit
79
+ ambient.intensity = lit ? 1.1 : 0.35
80
+ lamp.mesh.material.emissiveColor.set(lit ? 1 : 0.1, lit ? 0.94 : 0.08, lit ? 0.72 : 0.04)
81
+ demo.status.value = lit ? 'Lamp on.' : 'Lamp off.'
82
+ },
83
+ })
84
+
85
+ // Cosmetic easing only — the doors slide by writing their elements' x.
86
+ setInterval(() => {
87
+ openL += (wantL - openL) * 0.12
88
+ openR += (wantR - openR) * 0.12
89
+ doorL.x = -2.2 - openL * 1.55; knobL.x = -1.55 - openL * 1.55
90
+ doorR.x = 2.2 + openR * 1.55; knobR.x = 1.55 + openR * 1.55
91
+ }, 16)
92
+
93
+ preview.append(
94
+ b3d(
95
+ {
96
+ glowLayerIntensity: 0.7,
97
+ sceneCreated(el) {
98
+ orbitCam(el, { alphaDeg: -90, betaDeg: 68, radius: 11, target: [0, 1.2, 0] })
99
+ },
100
+ },
101
+ ambient,
102
+ b3dSkybox({ timeOfDay: 17 }),
103
+ b3dGround({ size: 30, color: '#4a4f45' }),
104
+ doorL, knobL, doorR, knobR, plinth, key, lamp, post, lampSwitch,
105
+ useL, useR, takeKey, flick,
106
+ ),
107
+ div(
108
+ { style: 'position:absolute; top:8px; left:8px; background:rgba(0,0,0,0.6); color:white; padding:8px 12px; border-radius:6px; font:14px monospace' },
109
+ p('Hover highlights. Press and release ON a thing to use it.'),
110
+ span({ bindText: demo.status }),
111
+ p({ style: 'opacity:0.7' }, 'carrying: ', span({ bindText: demo.key })),
112
+ )
113
+ )
114
+ ```
115
+
116
+ ## Attributes
117
+
118
+ | Attribute | Default | Description |
119
+ |-----------|---------|-------------|
120
+ | `target` | `''` | Mesh or node name to make touchable. Empty = the mesh of the element this one is nested inside |
121
+ | `include` | `'subtree'` | `'subtree'` counts the named node and everything under it; `'self'` counts only the node itself |
122
+ | `reach` | `0` | Max distance in world units; `0` means no limit |
123
+ | `disabled` | `false` | Refuses hover, and drops a press already in flight |
124
+ | `highlight` | `'#ffcc44'` | Hover outline colour; `'none'` for no highlight |
125
+
126
+ ## Events and callbacks
127
+
128
+ Every one carries `{ mesh, point, distance }`; `refused` adds `reason`.
129
+
130
+ | Event | Callback prop | When |
131
+ |---|---|---|
132
+ | `hover` | `whenHovered` | The pointer arrived (and is in reach) |
133
+ | `unhover` | `whenUnhovered` | It left, or the thing was disabled under it |
134
+ | `activate` | `whenActivated` | A press that started AND ended on it, with no veto |
135
+ | `refused` | `whenRefused` | The same press, but a veto said no |
136
+
137
+ Callbacks are named `whenX`, not `onX`, on purpose: `elementCreator` treats any
138
+ `on*` prop as a DOM event listener, so an `onActivate` prop would silently become
139
+ `addEventListener('activate')` and your function would never be called.
140
+
141
+ ## Composing other features onto it
142
+
143
+ Push a veto and something else on the same piece can refuse an activation
144
+ without either feature knowing the other exists:
145
+
146
+ ```javascript
147
+ import { b3dInteractive } from 'tosijs-3d'
148
+
149
+ const use = b3dInteractive({ target: 'hatch' })
150
+ use.vetoes.push({ name: 'powered', blocks: () => !reactor.online })
151
+ use.vetoes.push({ name: 'locked', blocks: () => !player.has('hatch-key') })
152
+ ```
153
+
154
+ The first refuser's name comes back on the `refused` event, which is the
155
+ difference between a locked door and a broken one.
156
+
157
+ ## Reaching it without pointing at it
158
+
159
+ `useNearest(scene, position)` activates the closest thing within its own reach —
160
+ the "walk up and press E" control, for wiring to `ControlInput.interact`:
161
+
162
+ ```javascript
163
+ import { useNearest } from 'tosijs-3d'
164
+ if (input.interact) useNearest(scene, camera.globalPosition)
165
+ ```
166
+ */
167
+ /*{ "parent": "World Sim" }*/
168
+ import * as BABYLON from '@babylonjs/core';
169
+ import { B3dChild, semanticParent } from './b3d-utils';
170
+ import { InteractiveBehavior, } from './interactive-behavior';
171
+ export class B3dInteractive extends B3dChild {
172
+ static styleSpec = {
173
+ ':host': {
174
+ display: 'none',
175
+ },
176
+ };
177
+ static initAttributes = {
178
+ /** Mesh/node name. Empty = the mesh of the element this is nested inside. */
179
+ target: '',
180
+ /** `'subtree'` (the node and its children) or `'self'`. */
181
+ include: 'subtree',
182
+ /** Max distance in world units; 0 = no limit. */
183
+ reach: 0,
184
+ // `disabled`, not `active` — an absent boolean attribute is false, so a
185
+ // default-true boolean could never turn on (and tosijs now throws on one).
186
+ disabled: false,
187
+ /** Hover outline colour, or `'none'`. */
188
+ highlight: '#ffcc44',
189
+ };
190
+ owner = null;
191
+ whenActivated = null;
192
+ whenHovered = null;
193
+ whenUnhovered = null;
194
+ whenRefused = null;
195
+ /**
196
+ * Other features' refusals — see the doc above. Lives on the element (not
197
+ * behind the behaviour) so a `lockable` can be pushed before the scene is up.
198
+ */
199
+ vetoes = [];
200
+ _behavior = null;
201
+ _cache = null;
202
+ content = () => '';
203
+ sceneReady(owner, _scene) {
204
+ this.owner = owner;
205
+ const attrs = this;
206
+ const behavior = new InteractiveBehavior(owner, this, {
207
+ meshes: () => this._meshes(),
208
+ reach: () => attrs.reach,
209
+ enabled: () => !attrs.disabled,
210
+ highlight: () => attrs.highlight,
211
+ });
212
+ behavior.vetoes = this.vetoes;
213
+ // Forward to the element's own props so a consumer can reassign them later.
214
+ behavior.whenActivated = (info) => this.whenActivated?.(info);
215
+ behavior.whenHovered = (info) => this.whenHovered?.(info);
216
+ behavior.whenUnhovered = (info) => this.whenUnhovered?.(info);
217
+ behavior.whenRefused = (info) => this.whenRefused?.(info);
218
+ behavior.attach();
219
+ this._behavior = behavior;
220
+ }
221
+ sceneDispose() {
222
+ this._behavior?.dispose();
223
+ this._behavior = null;
224
+ this._cache = null;
225
+ this.owner = null;
226
+ }
227
+ /** Is the pointer on it right now? */
228
+ get hovered() {
229
+ return this._behavior?.hovered ?? false;
230
+ }
231
+ /** True when nothing refuses an activation — i.e. using it would do something. */
232
+ get operable() {
233
+ return this._behavior?.operable ?? false;
234
+ }
235
+ /** Use it without pointing at it (a key press, an NPC, a test). */
236
+ activate(info) {
237
+ return this._behavior?.activate(info) ?? false;
238
+ }
239
+ /**
240
+ * Tuned state for the console / `hj eval`. Says whether the target NAME
241
+ * resolved, which is the one thing that silently makes an interactive inert.
242
+ */
243
+ get debugState() {
244
+ const attrs = this;
245
+ const meshes = this._meshes();
246
+ return {
247
+ target: attrs.target || '(nested parent)',
248
+ resolved: meshes.length > 0,
249
+ ...(this._behavior?.debugState ?? { attached: false }),
250
+ };
251
+ }
252
+ /**
253
+ * The meshes that count as "this thing".
254
+ *
255
+ * Cached, because a pointer move fires on every frame the mouse is in motion
256
+ * and `getChildMeshes` allocates — but re-resolved whenever the cache is empty
257
+ * or anything in it has been disposed, so a GLB that loads late starts working
258
+ * when it arrives instead of never.
259
+ */
260
+ _meshes() {
261
+ const cache = this._cache;
262
+ if (cache && cache.length > 0 && !cache.some((m) => m.isDisposed())) {
263
+ return cache;
264
+ }
265
+ const scene = this.owner?.scene;
266
+ if (!scene)
267
+ return [];
268
+ const attrs = this;
269
+ const name = attrs.target;
270
+ const root = name
271
+ ? scene.getMeshByName(name) ?? scene.getTransformNodeByName(name)
272
+ : semanticParent(this)?.mesh ?? null;
273
+ if (!root)
274
+ return [];
275
+ const self = root instanceof BABYLON.AbstractMesh ? [root] : [];
276
+ this._cache =
277
+ attrs.include === 'self' ? self : [...self, ...root.getChildMeshes(false)];
278
+ return this._cache;
279
+ }
280
+ }
281
+ export const b3dInteractive = B3dInteractive.elementCreator({
282
+ tag: 'tosi-b3d-interactive',
283
+ });
284
+ //# sourceMappingURL=b3d-interactive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"b3d-interactive.js","sourceRoot":"","sources":["../src/b3d-interactive.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { B3dChild } from './b3d-utils';
2
2
  import * as BABYLON from '@babylonjs/core';
3
3
  import type { B3d } from './tosi-b3d';
4
+ import { type LibraryManifest } from './glb-manifest';
4
5
  /**
5
6
  * The `.model` naming convention, pure (unit-tested): a node named
6
7
  * `<name>.model` declares itself an INTENDED EXPORT of the library file.
@@ -80,6 +81,44 @@ export declare class B3dLibrary extends B3dChild {
80
81
  /** Every node (meshes AND transform nodes — a multi-part model's top node is
81
82
  * usually a TransformNode) eligible for listing. */
82
83
  private _allNodes;
84
+ /**
85
+ * **The library's own catalogue**, or `null` if the glb does not carry one.
86
+ *
87
+ * Built from `metadata.gltf.extras` on the loaded nodes, which Babylon's
88
+ * `ExtrasAsMetadata` extension populates for free. Note it does NOT come from
89
+ * `scenes[0].extras.library`, even though the pipeline writes a fuller index
90
+ * there: Babylon surfaces extras for nodes, cameras, materials and animations
91
+ * and drops them for SCENES. Verified by loading a real library headlessly —
92
+ * every item node arrives with its extras, and nothing anywhere carries the
93
+ * scene block. (three.js does hand that one back as `gltf.scene.userData`,
94
+ * so it is not dead weight upstream, just invisible here.)
95
+ */
96
+ getManifest(): LibraryManifest | null;
97
+ /**
98
+ * What the library says about ONE item — `{category, tags, clips, size}` —
99
+ * without instantiating it.
100
+ *
101
+ * `clips` is the point: it answers "what animations does this model have"
102
+ * before anything is placed, which is what a clip picker in a property panel
103
+ * needs and what `instance.metadata.animationGroups` cannot provide (it
104
+ * requires an instance to exist first).
105
+ */
106
+ getInfo(name: string): Record<string, any> | null;
107
+ /**
108
+ * Public names of the things an author may ask for.
109
+ *
110
+ * **A declared catalogue wins.** When the glb's nodes carry library extras,
111
+ * those items ARE the export list — the data-driven twin of the `.model`
112
+ * naming convention, and it narrows for the same reason. Without it a packed
113
+ * kit over-reports: measured on `pirate-kit.glb`, 80 names for 72 declared
114
+ * items, the extras being a stray Blender `Group` plus sub-parts (a chest's
115
+ * `lid`, a ship's `sail-a`, `paddles`). Those are real subsystem targets and
116
+ * useless as palette entries — an author offered "lid" has been shown an
117
+ * implementation detail.
118
+ *
119
+ * `getRootNames()`/`getHierarchy()` still expose everything, so the sub-part
120
+ * cases keep working. Reported by the ensemble pipeline as #45.
121
+ */
83
122
  getNames(): string[];
84
123
  getRootNames(): string[];
85
124
  getHierarchy(): {
@@ -1 +1 @@
1
- {"version":3,"file":"b3d-library.d.ts","sourceRoot":"","sources":["../src/b3d-library.ts"],"names":[],"mappings":"AA6LA,OAAO,EAAE,QAAQ,EAAyB,MAAM,aAAa,CAAA;AAC7D,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAA;AAC1C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAA;AAGrC;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAQ1D;AAED;mEACmE;AACnE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAY3E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,OAAO,CAAC,cAAc,EACjC,MAAM,EAAE,OAAO,CAAC,IAAI,EACpB,KAAK,EAAE,OAAO,CAAC,IAAI,EACnB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,cAAc,EAAE,CAmB1B;AAED,MAAM,WAAW,kBAAkB;IACjC;;;oEAGgE;IAChE,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,CAAC,CAAC,EAAE,MAAM,CAAA;IACV,CAAC,CAAC,EAAE,MAAM,CAAA;IACV,CAAC,CAAC,EAAE,MAAM,CAAA;IACV;;;;;;;;;OASG;IACH,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,CAAA;IACrB;;;iFAG6E;IAC7E,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,qBAAa,UAAW,SAAQ,QAAQ;IACtC,MAAM,CAAC,cAAc;;;MAGpB;IAED,KAAK,EAAE,GAAG,GAAG,IAAI,CAAO;IACxB,OAAO,CAAC,SAAS,CAAsC;IACvD,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,aAAa,CAAa;IAClC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;IAGpB,OAAO,CAAC,cAAc,CAAI;;IAS1B,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK;IA0B3C;wDACoD;IACpD,OAAO,CAAC,SAAS;IAOjB,QAAQ,IAAI,MAAM,EAAE;IAIpB,YAAY,IAAI,MAAM,EAAE;IAUxB,YAAY,IAAI;QACd,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,CAAA;QACb,QAAQ,EAAE,GAAG,EAAE,CAAA;QACf,MAAM,EAAE,OAAO,CAAA;KAChB,EAAE;IAuDH,cAAc,IAAI,IAAI;IAatB;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,IAAI,IAAI,IAAI,MAAM,CAChB,MAAM,EACN,CAAC,OAAO,CAAC,EAAE,kBAAkB,KAAK,OAAO,CAAC,IAAI,GAAG,IAAI,CACtD,CAoBA;IAED,WAAW,CACT,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,IAAI,GAAG,IAAI;IA+FtB,YAAY;CAgBb;AAED,eAAO,MAAM,UAAU,6CAErB,CAAA"}
1
+ {"version":3,"file":"b3d-library.d.ts","sourceRoot":"","sources":["../src/b3d-library.ts"],"names":[],"mappings":"AA6LA,OAAO,EAAE,QAAQ,EAAyB,MAAM,aAAa,CAAA;AAC7D,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAA;AAC1C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAA;AAErC,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAExE;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAQ1D;AAED;mEACmE;AACnE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAY3E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,OAAO,CAAC,cAAc,EACjC,MAAM,EAAE,OAAO,CAAC,IAAI,EACpB,KAAK,EAAE,OAAO,CAAC,IAAI,EACnB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,cAAc,EAAE,CAmB1B;AAED,MAAM,WAAW,kBAAkB;IACjC;;;oEAGgE;IAChE,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,CAAC,CAAC,EAAE,MAAM,CAAA;IACV,CAAC,CAAC,EAAE,MAAM,CAAA;IACV,CAAC,CAAC,EAAE,MAAM,CAAA;IACV;;;;;;;;;OASG;IACH,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,CAAA;IACrB;;;iFAG6E;IAC7E,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,qBAAa,UAAW,SAAQ,QAAQ;IACtC,MAAM,CAAC,cAAc;;;MAGpB;IAED,KAAK,EAAE,GAAG,GAAG,IAAI,CAAO;IACxB,OAAO,CAAC,SAAS,CAAsC;IACvD,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,aAAa,CAAa;IAClC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;IAGpB,OAAO,CAAC,cAAc,CAAI;;IAS1B,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK;IA0B3C;wDACoD;IACpD,OAAO,CAAC,SAAS;IAOjB;;;;;;;;;;;OAWG;IACH,WAAW,IAAI,eAAe,GAAG,IAAI;IAMrC;;;;;;;;OAQG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAUjD;;;;;;;;;;;;;;OAcG;IACH,QAAQ,IAAI,MAAM,EAAE;IAMpB,YAAY,IAAI,MAAM,EAAE;IAUxB,YAAY,IAAI;QACd,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,CAAA;QACb,QAAQ,EAAE,GAAG,EAAE,CAAA;QACf,MAAM,EAAE,OAAO,CAAA;KAChB,EAAE;IAuDH,cAAc,IAAI,IAAI;IAatB;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,IAAI,IAAI,IAAI,MAAM,CAChB,MAAM,EACN,CAAC,OAAO,CAAC,EAAE,kBAAkB,KAAK,OAAO,CAAC,IAAI,GAAG,IAAI,CACtD,CAoBA;IAED,WAAW,CACT,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,IAAI,GAAG,IAAI;IAkHtB,YAAY;CAgBb;AAED,eAAO,MAAM,UAAU,6CAErB,CAAA"}
@@ -189,6 +189,7 @@ scene's ambient animations stay behind. Pass `animations: false` to skip;
189
189
  import { B3dChild, publicName, isIgnored } from './b3d-utils';
190
190
  import * as BABYLON from '@babylonjs/core';
191
191
  import { canonicalize } from './model-transform';
192
+ import { manifestFromNodes } from './glb-manifest';
192
193
  /**
193
194
  * The `.model` naming convention, pure (unit-tested): a node named
194
195
  * `<name>.model` declares itself an INTENDED EXPORT of the library file.
@@ -309,7 +310,55 @@ export class B3dLibrary extends B3dChild {
309
310
  return [];
310
311
  return [...this.container.meshes, ...this.container.transformNodes].filter((n) => n.name !== '__root__' && !isIgnored(n.name));
311
312
  }
313
+ /**
314
+ * **The library's own catalogue**, or `null` if the glb does not carry one.
315
+ *
316
+ * Built from `metadata.gltf.extras` on the loaded nodes, which Babylon's
317
+ * `ExtrasAsMetadata` extension populates for free. Note it does NOT come from
318
+ * `scenes[0].extras.library`, even though the pipeline writes a fuller index
319
+ * there: Babylon surfaces extras for nodes, cameras, materials and animations
320
+ * and drops them for SCENES. Verified by loading a real library headlessly —
321
+ * every item node arrives with its extras, and nothing anywhere carries the
322
+ * scene block. (three.js does hand that one back as `gltf.scene.userData`,
323
+ * so it is not dead weight upstream, just invisible here.)
324
+ */
325
+ getManifest() {
326
+ return manifestFromNodes(this._allNodes().map((n) => ({ name: n.name, metadata: n.metadata })));
327
+ }
328
+ /**
329
+ * What the library says about ONE item — `{category, tags, clips, size}` —
330
+ * without instantiating it.
331
+ *
332
+ * `clips` is the point: it answers "what animations does this model have"
333
+ * before anything is placed, which is what a clip picker in a property panel
334
+ * needs and what `instance.metadata.animationGroups` cannot provide (it
335
+ * requires an instance to exist first).
336
+ */
337
+ getInfo(name) {
338
+ const resolved = resolveModelName(this._allNodes().map((n) => n.name), name);
339
+ const node = this._allNodes().find((n) => n.name === resolved);
340
+ const extras = node?.metadata?.gltf?.extras;
341
+ return extras != null && typeof extras === 'object' ? extras : null;
342
+ }
343
+ /**
344
+ * Public names of the things an author may ask for.
345
+ *
346
+ * **A declared catalogue wins.** When the glb's nodes carry library extras,
347
+ * those items ARE the export list — the data-driven twin of the `.model`
348
+ * naming convention, and it narrows for the same reason. Without it a packed
349
+ * kit over-reports: measured on `pirate-kit.glb`, 80 names for 72 declared
350
+ * items, the extras being a stray Blender `Group` plus sub-parts (a chest's
351
+ * `lid`, a ship's `sail-a`, `paddles`). Those are real subsystem targets and
352
+ * useless as palette entries — an author offered "lid" has been shown an
353
+ * implementation detail.
354
+ *
355
+ * `getRootNames()`/`getHierarchy()` still expose everything, so the sub-part
356
+ * cases keep working. Reported by the ensemble pipeline as #45.
357
+ */
312
358
  getNames() {
359
+ const manifest = this.getManifest();
360
+ if (manifest != null)
361
+ return manifest.items.map((i) => publicName(i.name));
313
362
  return modelExportNames(this._allNodes().map((n) => n.name));
314
363
  }
315
364
  getRootNames() {
@@ -438,6 +487,24 @@ export class B3dLibrary extends B3dChild {
438
487
  clone.name = `${name}_mesh`;
439
488
  result = canonicalize(clone, this.owner.scene, `${name}_instance_${i}`);
440
489
  }
490
+ /*
491
+ CARRY THE EXTRAS ONTO WHAT WE RETURN.
492
+
493
+ `clone()` preserves `metadata` (verified — it is the same object), but
494
+ `canonical: true` returns a WRAPPER built by `canonicalize`, and the wrapper
495
+ has none: the extras are down on the child. So a consumer doing the
496
+ documented thing got `metadata` `{}` and concluded the catalogue was
497
+ unreachable (#45). It was one node away.
498
+
499
+ Copied rather than shared, so a consumer annotating an instance cannot write
500
+ through to the container's node and change what every later instance sees.
501
+ */
502
+ const extras = source?.metadata?.gltf?.extras;
503
+ if (extras != null && result !== clone) {
504
+ const meta = (result.metadata ??= {});
505
+ const gltf = (meta.gltf ??= {});
506
+ gltf.extras = { ...extras };
507
+ }
441
508
  // Animations: retarget the container's groups onto the clone (see
442
509
  // cloneNodeAnimations — node.clone() alone leaves them behind).
443
510
  if (options.animations !== false) {
@@ -1 +1 @@
1
- {"version":3,"file":"b3d-library.js","sourceRoot":"","sources":["../src/b3d-library.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"b3d-library.js","sourceRoot":"","sources":["../src/b3d-library.ts"],"names":[],"mappings":"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"}
@@ -61,6 +61,16 @@ export declare class B3dSvgPlane extends AbstractMesh {
61
61
  ry: number;
62
62
  rz: number;
63
63
  axes: boolean;
64
+ /** Cast shadows onto the scene. Off by default — see `_meshName`. */
65
+ castShadow: boolean;
66
+ /**
67
+ * Take the world's shading. Off by default, so a panel reads the same
68
+ * whatever passes in front of the sun.
69
+ *
70
+ * Turn it on for UI that genuinely IS in the world — a cockpit instrument
71
+ * surface lit by the same sun as the dashboard around it.
72
+ */
73
+ receiveShadows: boolean;
64
74
  };
65
75
  width: number;
66
76
  height: number;
@@ -101,6 +111,7 @@ export declare class B3dSvgPlane extends AbstractMesh {
101
111
  private _gaze;
102
112
  private _dialogObs;
103
113
  private _dialogTarget;
114
+ private _offOrigin;
104
115
  private _installWorldDialog;
105
116
  /** Nominal camera-local Z (the author's `z`), before any occlusion pull-in. */
106
117
  private _nominalZ;
@@ -113,6 +124,30 @@ export declare class B3dSvgPlane extends AbstractMesh {
113
124
  */
114
125
  private _installDepthGuard;
115
126
  content: () => string;
127
+ /**
128
+ * The mesh name, which is how a panel opts into the world's lighting.
129
+ *
130
+ * **By default a panel neither casts nor receives.** Both fell out of
131
+ * `register()` rather than from a decision: registering is the shadow-caster
132
+ * contract AND makes `b3d-shadows` set `receiveShadows`, so a panel joined
133
+ * the lighting merely by existing — throwing a hard-edged rectangle across
134
+ * whatever it faced, and picking up shadows from scenery in front of it.
135
+ *
136
+ * Tonio's framing, which is the right one: *"by default the UI should live
137
+ * outside the world."* A HUD or an inspector is something you look THROUGH
138
+ * the world at. Shading it as though it were furniture makes it ambiguous
139
+ * whether it is IN the scene — and worse, unreadable exactly when something
140
+ * passes between it and the sun.
141
+ *
142
+ * Casting is also the worst case for the shadow map: a large flat quad which,
143
+ * camera-relative, sits permanently inside `activeDistance` and never culls.
144
+ *
145
+ * The two are separate because the cases are. A **cockpit instrument
146
+ * surface** genuinely is in the world and should receive — it is lit by the
147
+ * same sun as the dashboard around it — while still not needing to cast. A
148
+ * sign on a wall or a screen in a room wants both.
149
+ */
150
+ private _meshName;
116
151
  sceneReady(owner: B3d, scene: BABYLON.Scene): void;
117
152
  sceneDispose(): void;
118
153
  render(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"b3d-svg-plane.d.ts","sourceRoot":"","sources":["../src/b3d-svg-plane.ts"],"names":[],"mappings":"AAgZA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAA;AAC1C,OAAO,EACL,YAAY,EAKb,MAAM,aAAa,CAAA;AAapB,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAA;AAErC,qBAAa,WAAY,SAAQ,YAAY;IAC3C,MAAM,CAAC,SAAS;;;;MAAmC;IAEnD,MAAM,CAAC,cAAc;;;;;;;;QASnB;;;;;;;;;;WAUG;mBACoB,QAAQ,GAAG,OAAO;QACzC;;;;;;WAMG;;uBAEoB,IAAI,GAAG,KAAK;qBACd,IAAI,GAAG,KAAK;QACjC;;;;;;;;WAQG;;QAEH;;;;WAIG;qBACkB,IAAI,GAAG,KAAK;;;;;;;;MAClC;IAEO,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,GAAG,EAAE,MAAM,CAAA;IACX,cAAc,EAAE,MAAM,CAAA;IACtB,eAAe,EAAE,MAAM,CAAA;IACvB,cAAc,EAAE,OAAO,CAAA;IACvB,SAAS,EAAE,QAAQ,GAAG,OAAO,CAAA;IAC7B,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,IAAI,GAAG,KAAK,CAAA;IAC3B,WAAW,EAAE,IAAI,GAAG,KAAK,CAAA;IACzB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,IAAI,GAAG,KAAK,CAAA;IAEjC;sEACkE;IAClE,OAAO,CAAC,YAAY,CAAQ;IAE5B,kDAAkD;IAClD,UAAU,EAAE,aAAa,GAAG,IAAI,CAAO;IAEvC,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,SAAS,CAAwC;IACzD,OAAO,CAAC,gBAAgB,CAEhB;IAER,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,SAAS,CAAI;IACrB,OAAO,CAAC,SAAS,CAAI;IAErB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,UAAU,CAA0D;IAC5E,OAAO,CAAC,aAAa,CAA+B;IAEpD,OAAO,CAAC,mBAAmB;IA8G3B,+EAA+E;IAC/E,OAAO,CAAC,SAAS,CAAI;IACrB,OAAO,CAAC,SAAS,CAA0D;IAE3E;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAkD1B,OAAO,eAAW;IAElB,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK;IA2G3C,YAAY;IAoBZ,MAAM;IAmCN,2DAA2D;IAC3D,IAAI,UAAU,IAAI,UAAU,GAAG,IAAI,CAElC;IAED,OAAO,CAAC,aAAa;IAgCrB,OAAO,CAAC,sBAAsB;IA0D9B,OAAO,CAAC,uBAAuB;CAsDhC;AAED,eAAO,MAAM,WAAW,8CAEtB,CAAA;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AASH,2EAA2E;AAC3E,wBAAgB,WAAW,CACzB,EAAE,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EAC5B,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,GACV;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAE1B;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EAC/B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,GACV;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAK1B;AAED,mEAAmE;AACnE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;IAC5B,2EAA2E;IAC3E,OAAO,EAAE,OAAO,CAAA;IAChB,CAAC,CAAC,EAAE,MAAM,CAAA;IACV,CAAC,CAAC,EAAE,MAAM,CAAA;IACV;iEAC6D;IAC7D,OAAO,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IACzC,8DAA8D;IAC9D,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,MAAM,kBAAkB,GAC1B;IACE,EAAE,EAAE,OAAO,CAAA;IACX,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,OAAO,CAAA;IACtC,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV,GACD;IAAE,EAAE,EAAE,OAAO,CAAA;CAAE,GACf;IAAE,EAAE,EAAE,KAAK,CAAA;CAAE,CAAA;AAEjB;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,OAAO,EACf,EAAE,EAAE,iBAAiB,GACpB;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,kBAAkB,EAAE,CAAA;CAAE,CA+BpD;AAED,MAAM,WAAW,iBAAiB;IAChC,8EAA8E;IAC9E,GAAG,EAAE,aAAa,CAAA;IAClB,+EAA+E;IAC/E,MAAM,EAAE;QACN,aAAa,EAAE,CACb,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,OAAO,EACtC,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,KACN,IAAI,CAAA;QACT,0EAA0E;QAC1E,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,OAAO,CAAA;KAClD,CAAA;IACD;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,OAAO,CAAA;IACzC,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,wCAAwC;IACxC,MAAM,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAC5D;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,iBAAiB,GAAG;IACnD,KAAK,EAAE,WAAW,CAAA;IAClB,YAAY,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,IAAI,CAAA;CAChC,CA6IA"}
1
+ {"version":3,"file":"b3d-svg-plane.d.ts","sourceRoot":"","sources":["../src/b3d-svg-plane.ts"],"names":[],"mappings":"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"}