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.
- package/CHANGELOG.md +900 -0
- package/dist/b3d-aircraft.d.ts +14 -0
- package/dist/b3d-aircraft.d.ts.map +1 -1
- package/dist/b3d-aircraft.js +45 -0
- package/dist/b3d-aircraft.js.map +1 -1
- package/dist/b3d-ambient.d.ts +12 -0
- package/dist/b3d-ambient.d.ts.map +1 -1
- package/dist/b3d-ambient.js +83 -1
- package/dist/b3d-ambient.js.map +1 -1
- package/dist/b3d-biped.d.ts +290 -0
- package/dist/b3d-biped.d.ts.map +1 -1
- package/dist/b3d-biped.js +1366 -22
- package/dist/b3d-biped.js.map +1 -1
- package/dist/b3d-collisions.d.ts.map +1 -1
- package/dist/b3d-collisions.js +45 -7
- package/dist/b3d-collisions.js.map +1 -1
- package/dist/b3d-controllable.d.ts +50 -0
- package/dist/b3d-controllable.d.ts.map +1 -1
- package/dist/b3d-controllable.js +61 -0
- package/dist/b3d-controllable.js.map +1 -1
- package/dist/b3d-death.d.ts +26 -0
- package/dist/b3d-death.d.ts.map +1 -1
- package/dist/b3d-death.js +224 -2
- package/dist/b3d-death.js.map +1 -1
- package/dist/b3d-interactive.d.ts +80 -0
- package/dist/b3d-interactive.d.ts.map +1 -0
- package/dist/b3d-interactive.js +284 -0
- package/dist/b3d-interactive.js.map +1 -0
- package/dist/b3d-library.d.ts +39 -0
- package/dist/b3d-library.d.ts.map +1 -1
- package/dist/b3d-library.js +67 -0
- package/dist/b3d-library.js.map +1 -1
- package/dist/b3d-svg-plane.d.ts +35 -0
- package/dist/b3d-svg-plane.d.ts.map +1 -1
- package/dist/b3d-svg-plane.js +96 -8
- package/dist/b3d-svg-plane.js.map +1 -1
- package/dist/b3d-water.d.ts.map +1 -1
- package/dist/b3d-water.js +32 -6
- package/dist/b3d-water.js.map +1 -1
- package/dist/buoyancy.d.ts +90 -0
- package/dist/buoyancy.d.ts.map +1 -0
- package/dist/buoyancy.js +150 -0
- package/dist/buoyancy.js.map +1 -0
- package/dist/curve-field.d.ts +39 -0
- package/dist/curve-field.d.ts.map +1 -0
- package/dist/curve-field.js +491 -0
- package/dist/curve-field.js.map +1 -0
- package/dist/curve.d.ts +241 -0
- package/dist/curve.d.ts.map +1 -0
- package/dist/curve.js +559 -0
- package/dist/curve.js.map +1 -0
- package/dist/dialog-placement.d.ts +69 -7
- package/dist/dialog-placement.d.ts.map +1 -1
- package/dist/dialog-placement.js +90 -9
- package/dist/dialog-placement.js.map +1 -1
- package/dist/embed-font.d.ts +48 -0
- package/dist/embed-font.d.ts.map +1 -0
- package/dist/embed-font.js +135 -0
- package/dist/embed-font.js.map +1 -0
- package/dist/footprint-field.d.ts +30 -0
- package/dist/footprint-field.d.ts.map +1 -0
- package/dist/footprint-field.js +256 -0
- package/dist/footprint-field.js.map +1 -0
- package/dist/frame-panel.d.ts.map +1 -1
- package/dist/frame-panel.js +15 -12
- package/dist/frame-panel.js.map +1 -1
- package/dist/glb-manifest.d.ts +75 -0
- package/dist/glb-manifest.d.ts.map +1 -0
- package/dist/glb-manifest.js +198 -0
- package/dist/glb-manifest.js.map +1 -0
- package/dist/icon-data.d.ts.map +1 -1
- package/dist/icon-data.js +20 -1
- package/dist/icon-data.js.map +1 -1
- package/dist/index.d.ts +33 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +38 -3
- package/dist/index.js.map +1 -1
- package/dist/interaction.d.ts +66 -0
- package/dist/interaction.d.ts.map +1 -0
- package/dist/interaction.js +117 -0
- package/dist/interaction.js.map +1 -0
- package/dist/interactive-behavior.d.ts +105 -0
- package/dist/interactive-behavior.d.ts.map +1 -0
- package/dist/interactive-behavior.js +253 -0
- package/dist/interactive-behavior.js.map +1 -0
- package/dist/key-layout.d.ts +70 -0
- package/dist/key-layout.d.ts.map +1 -1
- package/dist/key-layout.js +122 -0
- package/dist/key-layout.js.map +1 -1
- package/dist/keyboard-gamepad.d.ts.map +1 -1
- package/dist/keyboard-gamepad.js +19 -6
- package/dist/keyboard-gamepad.js.map +1 -1
- package/dist/keyboard.d.ts +100 -1
- package/dist/keyboard.d.ts.map +1 -1
- package/dist/keyboard.js +280 -35
- package/dist/keyboard.js.map +1 -1
- package/dist/mantle.d.ts +56 -0
- package/dist/mantle.d.ts.map +1 -0
- package/dist/mantle.js +115 -0
- package/dist/mantle.js.map +1 -0
- package/dist/popup-surface.d.ts +5 -1
- package/dist/popup-surface.d.ts.map +1 -1
- package/dist/popup-surface.js +181 -14
- package/dist/popup-surface.js.map +1 -1
- package/dist/surface.d.ts.map +1 -1
- package/dist/surface.js +111 -15
- package/dist/surface.js.map +1 -1
- package/dist/svg-icons.d.ts.map +1 -1
- package/dist/svg-icons.js +13 -1
- package/dist/svg-icons.js.map +1 -1
- package/dist/svg-texture.d.ts.map +1 -1
- package/dist/svg-texture.js +40 -1
- package/dist/svg-texture.js.map +1 -1
- package/dist/swim-aim.d.ts +78 -0
- package/dist/swim-aim.d.ts.map +1 -0
- package/dist/swim-aim.js +140 -0
- package/dist/swim-aim.js.map +1 -0
- package/dist/theme-editor.d.ts +41 -0
- package/dist/theme-editor.d.ts.map +1 -0
- package/dist/theme-editor.js +303 -0
- package/dist/theme-editor.js.map +1 -0
- package/dist/tosi-b3d.d.ts +24 -4
- package/dist/tosi-b3d.d.ts.map +1 -1
- package/dist/tosi-b3d.js +238 -37
- package/dist/tosi-b3d.js.map +1 -1
- package/dist/vector-field.d.ts +58 -0
- package/dist/vector-field.d.ts.map +1 -0
- package/dist/vector-field.js +321 -0
- package/dist/vector-field.js.map +1 -0
- package/dist/virtual-gamepad.d.ts.map +1 -1
- package/dist/virtual-gamepad.js +46 -9
- package/dist/virtual-gamepad.js.map +1 -1
- package/dist/w3d-theme.d.ts +115 -17
- package/dist/w3d-theme.d.ts.map +1 -1
- package/dist/w3d-theme.js +311 -0
- package/dist/w3d-theme.js.map +1 -1
- package/dist/water-normal.d.ts +26 -0
- package/dist/water-normal.d.ts.map +1 -0
- package/dist/water-normal.js +105 -0
- package/dist/water-normal.js.map +1 -0
- package/dist/widgets3d-layout.d.ts +58 -0
- package/dist/widgets3d-layout.d.ts.map +1 -1
- package/dist/widgets3d-layout.js +79 -1
- package/dist/widgets3d-layout.js.map +1 -1
- package/dist/widgets3d.d.ts +51 -2
- package/dist/widgets3d.d.ts.map +1 -1
- package/dist/widgets3d.js +418 -112
- package/dist/widgets3d.js.map +1 -1
- package/dist/wreck-fall.d.ts +86 -0
- package/dist/wreck-fall.d.ts.map +1 -0
- package/dist/wreck-fall.js +129 -0
- package/dist/wreck-fall.js.map +1 -0
- 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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"}
|
package/dist/b3d-library.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/b3d-library.js
CHANGED
|
@@ -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) {
|
package/dist/b3d-library.js.map
CHANGED
|
@@ -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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"}
|
package/dist/b3d-svg-plane.d.ts
CHANGED
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"b3d-svg-plane.d.ts","sourceRoot":"","sources":["../src/b3d-svg-plane.ts"],"names":[],"mappings":"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"}
|