tosijs-3d 0.12.2 → 0.12.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 (320) hide show
  1. package/CHANGELOG.md +2 -2
  2. package/changelog/v0.12.3.md +47 -0
  3. package/changelog/v0.12.4.md +48 -0
  4. package/dist/agent-driver.d.ts +75 -0
  5. package/dist/agent-driver.d.ts.map +1 -0
  6. package/dist/agent-driver.js +163 -0
  7. package/dist/agent-driver.js.map +1 -0
  8. package/dist/angle-field.d.ts.map +1 -1
  9. package/dist/angle-field.js +24 -0
  10. package/dist/angle-field.js.map +1 -1
  11. package/dist/aria-mirror.d.ts +36 -0
  12. package/dist/aria-mirror.d.ts.map +1 -0
  13. package/dist/aria-mirror.js +526 -0
  14. package/dist/aria-mirror.js.map +1 -0
  15. package/dist/asset-url.d.ts +1 -1
  16. package/dist/asset-url.js +1 -1
  17. package/dist/b3d-agent.d.ts +118 -0
  18. package/dist/b3d-agent.d.ts.map +1 -0
  19. package/dist/b3d-agent.js +774 -0
  20. package/dist/b3d-agent.js.map +1 -0
  21. package/dist/b3d-aircraft.d.ts +1 -0
  22. package/dist/b3d-aircraft.d.ts.map +1 -1
  23. package/dist/b3d-aircraft.js +2 -1
  24. package/dist/b3d-aircraft.js.map +1 -1
  25. package/dist/b3d-biped.d.ts +21 -22
  26. package/dist/b3d-biped.d.ts.map +1 -1
  27. package/dist/b3d-biped.js +108 -6
  28. package/dist/b3d-biped.js.map +1 -1
  29. package/dist/b3d-car.d.ts +1 -0
  30. package/dist/b3d-car.d.ts.map +1 -1
  31. package/dist/b3d-car.js +3 -2
  32. package/dist/b3d-car.js.map +1 -1
  33. package/dist/b3d-cloud-deck.d.ts.map +1 -1
  34. package/dist/b3d-cloud-deck.js +4 -2
  35. package/dist/b3d-cloud-deck.js.map +1 -1
  36. package/dist/b3d-controllable.d.ts +15 -1
  37. package/dist/b3d-controllable.d.ts.map +1 -1
  38. package/dist/b3d-controllable.js +40 -3
  39. package/dist/b3d-controllable.js.map +1 -1
  40. package/dist/b3d-input-focus.d.ts +5 -0
  41. package/dist/b3d-input-focus.d.ts.map +1 -1
  42. package/dist/b3d-input-focus.js +13 -0
  43. package/dist/b3d-input-focus.js.map +1 -1
  44. package/dist/b3d-launcher.d.ts +14 -0
  45. package/dist/b3d-launcher.d.ts.map +1 -1
  46. package/dist/b3d-launcher.js +174 -33
  47. package/dist/b3d-launcher.js.map +1 -1
  48. package/dist/b3d-library.d.ts.map +1 -1
  49. package/dist/b3d-library.js +5 -3
  50. package/dist/b3d-library.js.map +1 -1
  51. package/dist/b3d-manipulator.d.ts +2 -0
  52. package/dist/b3d-manipulator.d.ts.map +1 -1
  53. package/dist/b3d-manipulator.js +66 -11
  54. package/dist/b3d-manipulator.js.map +1 -1
  55. package/dist/b3d-panel.d.ts.map +1 -1
  56. package/dist/b3d-panel.js +6 -0
  57. package/dist/b3d-panel.js.map +1 -1
  58. package/dist/b3d-tank.d.ts +1 -0
  59. package/dist/b3d-tank.d.ts.map +1 -1
  60. package/dist/b3d-tank.js +2 -1
  61. package/dist/b3d-tank.js.map +1 -1
  62. package/dist/bar-menu.d.ts +15 -0
  63. package/dist/bar-menu.d.ts.map +1 -1
  64. package/dist/bar-menu.js +22 -12
  65. package/dist/bar-menu.js.map +1 -1
  66. package/dist/body-export.d.ts +41 -0
  67. package/dist/body-export.d.ts.map +1 -0
  68. package/dist/body-export.js +149 -0
  69. package/dist/body-export.js.map +1 -0
  70. package/dist/bone-heat.d.ts +1 -0
  71. package/dist/bone-heat.d.ts.map +1 -1
  72. package/dist/bone-heat.js +205 -3
  73. package/dist/bone-heat.js.map +1 -1
  74. package/dist/character-builder.d.ts.map +1 -1
  75. package/dist/character-builder.js +814 -215
  76. package/dist/character-builder.js.map +1 -1
  77. package/dist/character-core.d.ts.map +1 -1
  78. package/dist/character-core.js +5 -0
  79. package/dist/character-core.js.map +1 -1
  80. package/dist/character-file.d.ts +4 -0
  81. package/dist/character-file.d.ts.map +1 -1
  82. package/dist/character-file.js +28 -4
  83. package/dist/character-file.js.map +1 -1
  84. package/dist/character-settings.d.ts +1 -1
  85. package/dist/character-settings.d.ts.map +1 -1
  86. package/dist/character-settings.js +18 -1
  87. package/dist/character-settings.js.map +1 -1
  88. package/dist/character-store.d.ts.map +1 -1
  89. package/dist/character-store.js +25 -2
  90. package/dist/character-store.js.map +1 -1
  91. package/dist/character.d.ts +14 -0
  92. package/dist/character.d.ts.map +1 -1
  93. package/dist/character.js +180 -27
  94. package/dist/character.js.map +1 -1
  95. package/dist/city-drive.d.ts.map +1 -1
  96. package/dist/city-drive.js +22 -3
  97. package/dist/city-drive.js.map +1 -1
  98. package/dist/cloth-bake.d.ts.map +1 -1
  99. package/dist/cloth-bake.js.map +1 -1
  100. package/dist/cloth-drape.d.ts +79 -0
  101. package/dist/cloth-drape.d.ts.map +1 -0
  102. package/dist/cloth-drape.js +715 -0
  103. package/dist/cloth-drape.js.map +1 -0
  104. package/dist/cloth-shading.d.ts.map +1 -1
  105. package/dist/cloth-shading.js +46 -11
  106. package/dist/cloth-shading.js.map +1 -1
  107. package/dist/color-field.d.ts +5 -0
  108. package/dist/color-field.d.ts.map +1 -1
  109. package/dist/color-field.js +38 -11
  110. package/dist/color-field.js.map +1 -1
  111. package/dist/color-picker.d.ts +6 -0
  112. package/dist/color-picker.d.ts.map +1 -1
  113. package/dist/color-picker.js +47 -2
  114. package/dist/color-picker.js.map +1 -1
  115. package/dist/curve-field.d.ts.map +1 -1
  116. package/dist/curve-field.js +28 -6
  117. package/dist/curve-field.js.map +1 -1
  118. package/dist/curve-program.d.ts.map +1 -1
  119. package/dist/curve-program.js +12 -0
  120. package/dist/curve-program.js.map +1 -1
  121. package/dist/extremes-sweep.d.ts.map +1 -1
  122. package/dist/extremes-sweep.js +4 -2
  123. package/dist/extremes-sweep.js.map +1 -1
  124. package/dist/fabric-textures.d.ts +19 -0
  125. package/dist/fabric-textures.d.ts.map +1 -0
  126. package/dist/fabric-textures.js +133 -0
  127. package/dist/fabric-textures.js.map +1 -0
  128. package/dist/footprint-field.d.ts.map +1 -1
  129. package/dist/footprint-field.js +20 -0
  130. package/dist/footprint-field.js.map +1 -1
  131. package/dist/frame-panel.d.ts.map +1 -1
  132. package/dist/frame-panel.js +25 -12
  133. package/dist/frame-panel.js.map +1 -1
  134. package/dist/game-controller.d.ts +3 -0
  135. package/dist/game-controller.d.ts.map +1 -1
  136. package/dist/game-controller.js +19 -0
  137. package/dist/game-controller.js.map +1 -1
  138. package/dist/garment-cut.d.ts +17 -0
  139. package/dist/garment-cut.d.ts.map +1 -1
  140. package/dist/garment-cut.js +268 -1
  141. package/dist/garment-cut.js.map +1 -1
  142. package/dist/glass-gamepad.d.ts +4 -0
  143. package/dist/glass-gamepad.d.ts.map +1 -1
  144. package/dist/glass-gamepad.js +74 -0
  145. package/dist/glass-gamepad.js.map +1 -1
  146. package/dist/glb-rig.d.ts +48 -0
  147. package/dist/glb-rig.d.ts.map +1 -0
  148. package/dist/glb-rig.js +412 -0
  149. package/dist/glb-rig.js.map +1 -0
  150. package/dist/hair-place.d.ts.map +1 -1
  151. package/dist/hair-place.js.map +1 -1
  152. package/dist/hold-grip.d.ts +24 -0
  153. package/dist/hold-grip.d.ts.map +1 -0
  154. package/dist/hold-grip.js +101 -0
  155. package/dist/hold-grip.js.map +1 -0
  156. package/dist/human-rig.d.ts +50 -3
  157. package/dist/human-rig.d.ts.map +1 -1
  158. package/dist/human-rig.js +196 -3
  159. package/dist/human-rig.js.map +1 -1
  160. package/dist/icon-data.d.ts +15 -0
  161. package/dist/icon-data.d.ts.map +1 -1
  162. package/dist/icon-data.js +19 -4
  163. package/dist/icon-data.js.map +1 -1
  164. package/dist/icon-grid.d.ts.map +1 -1
  165. package/dist/icon-grid.js +13 -0
  166. package/dist/icon-grid.js.map +1 -1
  167. package/dist/index.d.ts +29 -7
  168. package/dist/index.d.ts.map +1 -1
  169. package/dist/index.js +21 -4
  170. package/dist/index.js.map +1 -1
  171. package/dist/inspect-view.d.ts +21 -0
  172. package/dist/inspect-view.d.ts.map +1 -1
  173. package/dist/inspect-view.js +22 -1
  174. package/dist/inspect-view.js.map +1 -1
  175. package/dist/keyboard.d.ts +11 -0
  176. package/dist/keyboard.d.ts.map +1 -1
  177. package/dist/keyboard.js +27 -1
  178. package/dist/keyboard.js.map +1 -1
  179. package/dist/land-and-sky.js +1 -0
  180. package/dist/land-and-sky.js.map +1 -1
  181. package/dist/light-editor.d.ts.map +1 -1
  182. package/dist/light-editor.js +12 -0
  183. package/dist/light-editor.js.map +1 -1
  184. package/dist/light-pool.d.ts +7 -0
  185. package/dist/light-pool.d.ts.map +1 -1
  186. package/dist/light-pool.js +11 -0
  187. package/dist/light-pool.js.map +1 -1
  188. package/dist/manipulator-view.d.ts +1 -1
  189. package/dist/manipulator-view.d.ts.map +1 -1
  190. package/dist/manipulator-view.js +7 -8
  191. package/dist/manipulator-view.js.map +1 -1
  192. package/dist/manipulator.d.ts +3 -1
  193. package/dist/manipulator.d.ts.map +1 -1
  194. package/dist/manipulator.js +40 -10
  195. package/dist/manipulator.js.map +1 -1
  196. package/dist/material-apply.d.ts +18 -0
  197. package/dist/material-apply.d.ts.map +1 -1
  198. package/dist/material-apply.js +53 -10
  199. package/dist/material-apply.js.map +1 -1
  200. package/dist/material-picker.d.ts +6 -0
  201. package/dist/material-picker.d.ts.map +1 -1
  202. package/dist/material-picker.js +263 -20
  203. package/dist/material-picker.js.map +1 -1
  204. package/dist/material-pictures.d.ts +13 -0
  205. package/dist/material-pictures.d.ts.map +1 -0
  206. package/dist/material-pictures.js +93 -0
  207. package/dist/material-pictures.js.map +1 -0
  208. package/dist/material-preview.d.ts +2 -2
  209. package/dist/material-preview.d.ts.map +1 -1
  210. package/dist/material-preview.js +72 -28
  211. package/dist/material-preview.js.map +1 -1
  212. package/dist/material-recipe.d.ts +10 -0
  213. package/dist/material-recipe.d.ts.map +1 -1
  214. package/dist/material-recipe.js +75 -7
  215. package/dist/material-recipe.js.map +1 -1
  216. package/dist/outline-field.d.ts +21 -0
  217. package/dist/outline-field.d.ts.map +1 -1
  218. package/dist/outline-field.js +74 -5
  219. package/dist/outline-field.js.map +1 -1
  220. package/dist/picker.d.ts.map +1 -1
  221. package/dist/picker.js +14 -0
  222. package/dist/picker.js.map +1 -1
  223. package/dist/playback-field.d.ts +40 -0
  224. package/dist/playback-field.d.ts.map +1 -0
  225. package/dist/playback-field.js +315 -0
  226. package/dist/playback-field.js.map +1 -0
  227. package/dist/playground.d.ts.map +1 -1
  228. package/dist/playground.js +117 -64
  229. package/dist/playground.js.map +1 -1
  230. package/dist/remesh.d.ts +45 -0
  231. package/dist/remesh.d.ts.map +1 -0
  232. package/dist/remesh.js +570 -0
  233. package/dist/remesh.js.map +1 -0
  234. package/dist/retarget.d.ts +5 -0
  235. package/dist/retarget.d.ts.map +1 -1
  236. package/dist/retarget.js +18 -11
  237. package/dist/retarget.js.map +1 -1
  238. package/dist/rig-build.d.ts +5 -0
  239. package/dist/rig-build.d.ts.map +1 -1
  240. package/dist/rig-build.js +5 -1
  241. package/dist/rig-build.js.map +1 -1
  242. package/dist/rig-fit.d.ts +10 -0
  243. package/dist/rig-fit.d.ts.map +1 -1
  244. package/dist/rig-fit.js +187 -8
  245. package/dist/rig-fit.js.map +1 -1
  246. package/dist/rig-recipe.d.ts +7 -1
  247. package/dist/rig-recipe.d.ts.map +1 -1
  248. package/dist/rig-recipe.js +7 -1
  249. package/dist/rig-recipe.js.map +1 -1
  250. package/dist/rig-tool.d.ts +14 -1
  251. package/dist/rig-tool.d.ts.map +1 -1
  252. package/dist/rig-tool.js +664 -111
  253. package/dist/rig-tool.js.map +1 -1
  254. package/dist/rigged-body-glb.d.ts +34 -0
  255. package/dist/rigged-body-glb.d.ts.map +1 -0
  256. package/dist/rigged-body-glb.js +872 -0
  257. package/dist/rigged-body-glb.js.map +1 -0
  258. package/dist/rigged-body.d.ts +5 -1
  259. package/dist/rigged-body.d.ts.map +1 -1
  260. package/dist/rigged-body.js +36 -3
  261. package/dist/rigged-body.js.map +1 -1
  262. package/dist/scene-description.d.ts +36 -0
  263. package/dist/scene-description.d.ts.map +1 -0
  264. package/dist/scene-description.js +131 -0
  265. package/dist/scene-description.js.map +1 -0
  266. package/dist/scene-schemas.d.ts.map +1 -1
  267. package/dist/scene-schemas.js +2 -0
  268. package/dist/scene-schemas.js.map +1 -1
  269. package/dist/skinned-glb.d.ts +8 -0
  270. package/dist/skinned-glb.d.ts.map +1 -1
  271. package/dist/skinned-glb.js +15 -2
  272. package/dist/skinned-glb.js.map +1 -1
  273. package/dist/spring-chain-babylon.js +1 -1
  274. package/dist/spring-vrm.d.ts +59 -0
  275. package/dist/spring-vrm.d.ts.map +1 -0
  276. package/dist/spring-vrm.js +243 -0
  277. package/dist/spring-vrm.js.map +1 -0
  278. package/dist/svg-icons.d.ts +2 -3
  279. package/dist/svg-icons.d.ts.map +1 -1
  280. package/dist/svg-icons.js +8 -6
  281. package/dist/svg-icons.js.map +1 -1
  282. package/dist/tailor-tool.d.ts +35 -0
  283. package/dist/tailor-tool.d.ts.map +1 -1
  284. package/dist/tailor-tool.js +345 -64
  285. package/dist/tailor-tool.js.map +1 -1
  286. package/dist/terrain-editor.d.ts.map +1 -1
  287. package/dist/terrain-editor.js +10 -0
  288. package/dist/terrain-editor.js.map +1 -1
  289. package/dist/tosi-b3d.d.ts +148 -2
  290. package/dist/tosi-b3d.d.ts.map +1 -1
  291. package/dist/tosi-b3d.js +641 -21
  292. package/dist/tosi-b3d.js.map +1 -1
  293. package/dist/ual-rest.d.ts +7 -0
  294. package/dist/ual-rest.d.ts.map +1 -0
  295. package/dist/ual-rest.js +396 -0
  296. package/dist/ual-rest.js.map +1 -0
  297. package/dist/undo-history.d.ts +19 -0
  298. package/dist/undo-history.d.ts.map +1 -0
  299. package/dist/undo-history.js +77 -0
  300. package/dist/undo-history.js.map +1 -0
  301. package/dist/vector-field.d.ts +2 -0
  302. package/dist/vector-field.d.ts.map +1 -1
  303. package/dist/vector-field.js +15 -0
  304. package/dist/vector-field.js.map +1 -1
  305. package/dist/w3d-theme.d.ts +2 -0
  306. package/dist/w3d-theme.d.ts.map +1 -1
  307. package/dist/w3d-theme.js +11 -0
  308. package/dist/w3d-theme.js.map +1 -1
  309. package/dist/weapon-fit.js +1 -1
  310. package/dist/widget-semantics.d.ts +107 -0
  311. package/dist/widget-semantics.d.ts.map +1 -0
  312. package/dist/widget-semantics.js +296 -0
  313. package/dist/widget-semantics.js.map +1 -0
  314. package/dist/widgets3d.d.ts +84 -17
  315. package/dist/widgets3d.d.ts.map +1 -1
  316. package/dist/widgets3d.js +372 -58
  317. package/dist/widgets3d.js.map +1 -1
  318. package/package.json +5 -3
  319. package/static/attributes.json +82 -2
  320. package/static/attributes.txt +27 -2
package/CHANGELOG.md CHANGED
@@ -12,9 +12,9 @@ Upgrading across a minor? Start with [Migration](/Migration/).
12
12
 
13
13
  ## Unreleased
14
14
 
15
- ## 0.12.2
15
+ ## 0.12.4
16
16
 
17
- The latest release. More of the character, engine-free (eyes from Tonio's art, hair placement, lips and stubble as vertex colours, cloth recoloured into its texture, the extremes sweep), and the builder's save and rename ask in a popup. See [0.12.2](/v0.12.2/).
17
+ The latest release. Tabbed settings panels and undo across the character builder, rig tool and tailor; pictures in materials (Poly Haven's fabric scans as cloth presets, a picture or a flat colour or grey for any input); the tailor always on the bar; grips per class of held item; Tonio's textured weapons and melee in the biped. See [0.12.4](/v0.12.4/).
18
18
 
19
19
  ## Every version
20
20
 
@@ -0,0 +1,47 @@
1
+ # 0.12.3
2
+
3
+ <!--{ "parent": "CHANGELOG", "order": 9987997 }-->
4
+
5
+ Characters out to other engines and any mesh rigged well: a GLB read with no engine, any rigged body written as a skinned GLB that plays UAL's clips by name in three.js, Unity, Godot and Blender, and its springs as `VRMC_springBone`; the rig tool's fixes for AI-made meshes; draped cloth in the tailor; and scenes as agent tools and for a screen reader.
6
+
7
+ Size: barrel (min, packages external) 1596.0 KB raw / 555.0 KB gz, up 85.6 KB / 31.3 KB gz (+5.7%): scenes as agent tools, widget semantics, the screen-reader mirror and the scene description, and the drape and remesh are in the barrel; `glb-rig`, `rigged-body-glb`, `ual-rest` and `spring-vrm` are subpaths.
8
+
9
+ ## Added
10
+
11
+ - **`tosijs-3d/glb-rig`**: `glbRigTriangles(bytes, { pick })` reads a mesh file's triangles for rigging with no engine: the file's frame, a skinned mesh at rest, one surface per material carrying its glTF material and its pictures as bytes, eyes split out. It agrees with `loadRigTriangles`, and `bodyFromMarkers` on it rigs a body with no scene (the same bytes and markers give the same weights).
12
+ - **`tosijs-3d/rigged-body-glb`**: `riggedBodyGlb(body, { naming, restPose, height, recipe, extras })` writes any rigged body (from the rig tool, a file's own skin, MakeHuman) as a skinned GLB in Dramatis's export profile: UAL's 65 joints with UAL's rest frames, so UAL's clips play on it by name; a T-pose by default (or the body as rigged); the soles at y = 0 under the origin; `body` and `eyes` meshes; the file's own materials and pictures; UE or Mixamo joint names. `tosijs-3d/ual-rest` is UAL's rest pose as data (`bin/ual-rest.ts` regenerates it).
13
+ - **`tosijs-3d/spring-vrm`**: a rig recipe's springs (a tail, strands hung from a bone, with colliders) go out as `VRMC_springBone`, which three-vrm, UniVRM and Godot's VRM importer read with no setup, and as `TOSIJS_spring_chains` with our own settings (`springChainsSchema()`). The page says where VRM's spring model differs from ours.
14
+ - `writeSkinnedGlb` writes emissive materials and root-level `extensions`.
15
+ - **Draped cloth in the tailor** (`tosijs-3d/cloth-drape`, `drapeGarment`): an outline becomes a front and a back piece laid over the body, sewn up its steep sides, bridged over hollows and settled under gravity. Pick it as "made by: drape". The tailor cuts from an even surface laid over the body at a density you pick, finer where the body is thin.
16
+ - **Character builder**: Tonio's AI-made characters (Keisha and Kevin, in underwear and in spacesuits) are bodies, one picked at random on a first visit; a **View** menu on the system bar, shared with the hosted rig tool, with a right-hand view that follows the palm through the clip; **clips from a file** (any skinned GLB's animations, Mixamo's or Meshy's, retargeted onto the body shown); every clip in the library; **hold** an item in the right hand, placed by its grip and saved with the character (`handSocket`, `deriveGrip`, `heldGrip`); **body detail** draws MakeHuman's own lighter body proxies; revert, delete, and the selector shows the character on screen.
17
+ - **Rig tool**: markers colour-coded with a reference mannequin; a dragged wrist or knee carries its hand or foot, a dragged shoulder or elbow the markers below it; joints mode shows every joint.
18
+ - **Scenes as agent tools** (`b3d-agent`): each `<tosi-b3d>` offers tools on WebMCP (`registerTool` only) and on `window.b3dAgent`: `b3d_<scene>_scene` and `_places` (named things and beacons, in world metres, with distance and bearing), `_snapshot`, `_control_go` (drives the vehicle in focus to a named place with its own controls; the player's input cancels it), `_control_hold`, `_control_status`, `_control_stop`, and the settings panel (`_panel`, `_panel_set`, `_panel_activate`). Closed by default: `enableSceneAgents({ expose: 'all' | 'read' })` opens the page, and a scene's new `agent` attribute (`read`, `on`, `off`) overrides it. `b3d.originOffset` is how far the floating origin has moved. Changing a scene's `agent` (or its name) after it is on the page updates its tools (#3699).
19
+ - **`bun run xr --flat --script`** now runs the script (it was ignored without VR), and a script that throws fails the run.
20
+ - **`semantics()` on every panel widget** (`tosijs-3d/widget-semantics`): a control says what it is (role, name, value) and can be set or pressed through its own path, as a hand would. `panel.controls()` reads a panel as a tree of named controls, including an open popup's form; `findControl` and `nameProblems` (unnamed or duplicate controls) work on it. `inputField` and `vector3d` take a `name`; `tabs3d` a `name`. This is the base the WebMCP tools and the screen-reader mirror are built on (#3699).
21
+ - **A screen reader can use the settings panel** (`tosijs-3d/aria-mirror`): an open flat panel is mirrored as visually hidden HTML controls (buttons, switches, range inputs, selects, text and number fields; sections as headings), which set or press the panel's own widgets. The system bar's HTML buttons now stay in the accessibility tree in scene mode (they were `visibility: hidden`) and appear while one has keyboard focus, so Tab goes from the owl into the settings. `ariaMirror(host, read)` mirrors any panel (#3699).
22
+ - **Every demo's settings panel passes the name test** (63 pages, about 1000 controls). The big editors describe themselves too: `curve3d` and `footprint3d` are editors whose value is their points and whose options are their presets (set either), and `curveProgram3d`, `lightEditor3d` and `terrainEditor3d` list their rows. A `list3d` item may carry a `title`, its accessible name when the label is not unique; an indented label is trimmed (#3699).
23
+ - **A keyboard and screen-reader pass over the panels** (`bun run screen-reader <page> --steps …`, a driver that reads only Chrome's accessibility tree and presses real keys). Fixes from it: the owl says whether its panel is open (`aria-expanded`); a slider announces its formatted value (`semantics().valueText`, `aria-valuetext`: "50 km", "±13 °C"); a log-scale slider is stepped along its track, not in equal steps of its value; focus stays in place when the control it was on is renamed (Pause becoming Resume); a toolbar with no name is "tools". `button3d` takes a `title` (its name and tooltip when the label is a glyph), and the name test now reports a control named only by a glyph such as `⋯` (#3699).
24
+ - **The 3D view for a screen reader**: the canvas is an image named "<title>, 3D scene", described in words (`describeScene`, `tosijs-3d/scene-description`: what you are in, which way you face, the time of day, the named things nearby with distance and direction). Built only when asked for: once when the scene appears, when the canvas takes focus, and by a visually hidden "Describe the scene" button that speaks it; never on a timer (#3699).
25
+ - **Assistive features cost nothing until used, and sit where things are drawn**: a scene builds no mirror, description or pad labels until focus first lands in it (not focus from a mouse or finger press: clicking the scene focuses its canvas) or one of its hidden buttons is pressed for real (iOS VoiceOver presses without focusing) (`b3d.assistive`), and runs no timer even then (values are re-read when a control takes focus). The mirrored controls are placed exactly over the drawn panel, modal and system bar (`ariaMirror`'s `place`; `ControlNode.box`, `WidgetSemantics.box` / `childBoxes`), so VoiceOver's touch exploration on a phone finds "Continue" where it is drawn and a double-tap lands on it (#3699).
26
+ - **Modals for a screen reader**: a modal (`showModal`: the pause, a respawn panel) is mirrored as a hidden dialog that takes focus on its first control (Continue) and gives focus back when it closes, so a pause can be dismissed with no pointer. It is always mirrored, not only once a scene is in use, because a modal blocks the page; its title ("Paused") is also announced. `ariaMirror` takes `role: 'dialog'`. Pressing a mirrored copy no longer counts as a press outside the settings panel (that closed the panel before the copy's click). Placed copies are real touch targets over the drawn controls, unpainted but opaque and, where the main pointer is a finger, touchable (`UNPAINTED`; with a mouse every press goes through to the drawn panel): iOS VoiceOver finds what a finger is on by hit-testing and passed transparent, untouchable copies over for the canvas. In use, the system bar's real buttons are touch targets the same way, and a copy with keyboard focus shows a ring over the drawn control. While a modal is open the system bar's buttons and the panel's copies are inert, so a reader cannot open the settings from behind a pause (#3699).
27
+ - **The glass gamepad says where its controls are and what they do**: each control is named for a screen reader ("A button, bottom right: handbrake"), from the driven entity's new `inputLabels` (car, tank, aircraft and biped carry their mapping's labels), updated when you change what you control. The pad also stays hidden while the scene is loading.
28
+ - **A weapon in a hand holds the same way on any rig**: a launcher with `socket: 'right-hand'` or `'left-hand'` rides a node under the hand oriented by the hand's anatomy at rest (forearm, thumb side), calibrated so UAL's hand is unchanged. A character from the character builder held the playground's pistol at a wrong angle and mirrored, because its hand bone's axes and mirror differ from UAL's.
29
+ - **Character builder ↔ Biped Playground**: the builder is under Demos, and **play in Biped Playground** takes the figure you are working on straight there (`/playground/?character=…`). The playground lists that figure as "from the character builder", loads the character it shows (the last one picked, remembered in this browser), and links back with **make your own character…**.
30
+ - **A sideways trackpad drag over a scene no longer swipes the page back or forward**: a scene cancels the default of a mostly horizontal wheel over it (the camera and panels still get the event).
31
+ - **Input trace in development**: with the debug sink on (the dev server), a scene posts each press it receives (touch, pointer, click, focus: real target, position, whether genuine) to the sink as `input`, so how a phone's screen reader presses things can be read rather than guessed (#3699).
32
+ - **Clouds drift on the sky's clock**: a cloud deck under a sky sped up with `realtimeScale` drifts and evolves that much faster, so a time-lapse carries its clouds; a stopped sky leaves them in real time (`skyRate(owner)`).
33
+
34
+ ## Changed
35
+
36
+ - **Bone heat with visibility**: a bone heats only the skin it can see, radiating along its whole length.
37
+ - **Arm space follows the clip**: how far a clip hangs the arm decides how much arm space applies.
38
+ - A biped's character loads out of sight and appears standing where it belongs.
39
+
40
+ ## Fixed
41
+
42
+ - **The rig tool stands a model on the floor when its file's origin is its middle** (Meshy's are), not its feet: on 0.12.2 these stood half under the floor.
43
+ - **Auto-rig**: a body with its arms held out keeps the arm bones off its ribcage and the collarbones off the chest; a held-out arm's shoulder clears the body; the thighs stay out of the belly, so a walk no longer squashes the torso; the elbow is found on arms held steeply down.
44
+ - **Done in the rig tool no longer makes the character vanish.**
45
+ - The tailor cuts a file's body as one surface (seams split for UVs are welded first).
46
+ - A character in the Biped Playground wears its clothes' saved colours, not white; a reload of the builder remembers which saved character you were editing.
47
+ - Panels fold their own sections, and the rig tool wears a mesh's own materials.
@@ -0,0 +1,48 @@
1
+ # 0.12.4
2
+
3
+ <!--{ "parent": "CHANGELOG", "order": 9987996 }-->
4
+
5
+ Tabbed settings panels and undo across the character builder, rig tool and tailor; pictures in materials (Poly Haven's fabric scans as cloth presets, a picture or a flat colour or grey for any input); the tailor always on the bar; grips per class of held item; Tonio's textured weapons and melee in the biped.
6
+
7
+ Size: barrel (min, packages external) 1643.8 KB raw / 569.0 KB gz, up 47.8 KB / 14.0 KB gz (+3.0%) on 0.12.3: the material pictures and fabric presets, the drape's sliced runner, undo history, playback and hold grips are in the barrel.
8
+
9
+ ## Added
10
+
11
+ - **Tabbed settings panels with icons**: `panelSections: 'tabs'` with an `icon` on each collapsible `label3d`. The character builder and the rig tool use it.
12
+ - **`panelActions(el)`** on `<tosi-b3d>`: a page's own buttons on the settings panel's icon bar, at its right end. Icon bars take `{ spacer: true }` (an elastic gap); `tabs3d` takes `tools`, and in a tabbed panel `iconBar3d({ inTabs: true })` goes on the tab strip.
13
+ - **Undo and redo** in the character builder and the rig tool (⌘Z / ⇧⌘Z). `undoHistory` is the pure history behind them.
14
+ - **Panels rebuild once a resize settles.** The scene dispatches `resizeend`; `panelRoom(panelEl)` gives a system panel its room.
15
+ - **Pictures in materials**: a material picker's colour, opacity, glow and bumps (and a cloth's colour, roughness and normal) can take a picture, kept by `material-pictures` and saved in a character file (`pictures`). Cloth and PBR take `tile` (metres per repeat).
16
+ - **Photographed fabrics**: eleven of Poly Haven's CC0 fabric scans as cloth presets (`textiles`, `textiles-full`; `fabricTexturePresets`).
17
+ - **Material previews** are drawn on Tonio's material test ball, on grey (a cube until it loads).
18
+ - **Export a rigged body as a GLB** from the rig tool and the character builder (joint names, rest pose, height; the model's materials and springs).
19
+ - **Character builder**: Hold uses Tonio's textured weapons with a manipulator on the grip; clips come from a smaller builder pack (`UAL_builder.glb`); `playback3d` (play, scrub, speed) in Motion; all four AI characters open on hand-placed rigs.
20
+ - **Rig tool**: spread fingers, and hand modes (full, mitten, none); opened from the builder it shows the body it already wears.
21
+ - **Biped melee**: `holdingWeapon` stands on guard in Sword_Idle and the right trigger swings (Sword_Attack). The biped playground carries Tonio's weapons.
22
+ - **Material inputs that take a picture** are a heading and a row: choose a picture, clear it, a flat colour or grey instead (`colorPicker` icon), and a swatch of what it is now. `colorPicker3d` and `color3d` take `grey: true` (a black-to-white ramp and a ladder of greys).
23
+ - **`slider3d` `notches`**: a press beside the handle steps to the next notch that way; dragging stays continuous. A material's `tile` is now **scale textures**, 1/32 to 4 on a log scale, notched at 1/n and whole numbers (`textureScaleNotches`), where pictures repeat whole.
24
+ - **The tailor has undo and redo** on a bar pinned to the top of its panel (⌘Z / ⇧⌘Z in the builder while it is open), with cancel and done unless it is `persistent`.
25
+ - **Grips per class of item** (`hold-grip`: `holdGrip`, `holdClassOf`, `HOLD_CLASSES`): pistols, rifles, heavy weapons, one- and two-handed blades, bows, shields. The character builder keeps an adjusted grip per class (placing one sword places every one-handed blade; per-item grips saved before are read as their class's), and the biped playground holds by class.
26
+ - **The character builder's tailor is always on the bar** (scissors): pick a slot and a garment, and one you cut opens on its outline to edit, or start a new one; no done or cancel, it keeps the garment when you switch or close, and undo covers the edits. Export, import and forget moved into it; the Tailor tab is gone. `mountTailorTool` takes `panel`, `persistent` and `rows`; characters take `hideSlot` (one slot's garment off for a moment).
27
+ - **Character builder clothes**: each slot is one row, the garment and its material swatch beside it; the "edit" picker is gone. `materialPicker3d` takes `name` (a title with no caption).
28
+ - **Tailor drape**: edits no longer lock the page (debounced, sliced, interruptible: `drapeGarmentAsync`, `runSliced`, `drapeSteps`, `remeshSteps`); cloth goes over arms, shoulders and hips; anchored points are drawn in the new `--w3d-anchored` colour.
29
+
30
+ ## Changed
31
+
32
+ - **Stroked-and-filled icons fill with `--w3d-icon-fill`** (a mid blue) instead of the button colour behind them. Pass `knockout` to `iconGlyph`, or set `--tosi-icon-knockout`, for the old look.
33
+ - The rig tool's hosted "start over" is an icon beside undo and redo.
34
+ - Material inputs are labelled **diffuse** (albedo), **normal map** (was bumps) and **colorize** (a cloth's recolour); the recipe keys are unchanged.
35
+ - A material's `tile` input's range is now 1/32 to 4 (was 0.02 to 4), so a smaller saved value is clamped.
36
+ - Cloth material previews show a colour the recipe names wholly (the preview has no texture for a recolour to keep).
37
+ - The tailor's "export glTF" button reads "export GLB".
38
+
39
+ ## Fixed
40
+
41
+ - Arrow keys and Space no longer scroll the page while you play a demo.
42
+ - Tailor, cut from the skin: tidy, smoothed cut edges (no spikes or notches along a neckline).
43
+ - Drape: edges well clear of the body are no longer pinned to it (rigid hems).
44
+ - A held item's grip is measured on fresh world matrices (the pistol no longer circles the hand metres away); the launcher reads its `_grip` the same way.
45
+ - Auto-rig: glove bumps are not read as fingers, and a knotted thumb is placed by proportion.
46
+ - The rig tool casts shadows when hosted, and done on a body from a file no longer leaves it invisible.
47
+ - Undoing a placed grip in the character builder moves the held item back (the numbers were restored, the item was not).
48
+ - A stroked-and-filled icon's part drawn with `stroke:none` stays unstroked (tosijs-ui#251 worked round by `bin/icon-no-stroke.ts`).
@@ -0,0 +1,75 @@
1
+ import type { ControlInput } from './control-input.js';
2
+ type Vec = {
3
+ x: number;
4
+ y?: number;
5
+ z: number;
6
+ };
7
+ /** Degrees, 0 = +z, 90 = +x, from a direction. */
8
+ export declare function headingDeg(dir: Vec): number;
9
+ /** The turn from `heading` at `from` to face `to`: -180..180, + is right. */
10
+ export declare function bearingDeg(from: Vec, heading: number, to: Vec): number;
11
+ /** Where the driven thing is: world metres, heading in degrees, speed along its nose in m/s. */
12
+ export interface DriverPose {
13
+ x: number;
14
+ z: number;
15
+ heading: number;
16
+ speed: number;
17
+ }
18
+ export type DriverState = 'idle' | 'running' | 'arrived' | 'done' | 'stuck' | 'cancelled';
19
+ export interface DriverStatus {
20
+ state: DriverState;
21
+ command?: 'hold' | 'go';
22
+ /** A go's destination, by name when it has one. */
23
+ place?: string;
24
+ target?: {
25
+ x: number;
26
+ z: number;
27
+ };
28
+ /** Metres left, on a go. */
29
+ distance?: number;
30
+ /** Seconds since the command started (world time). */
31
+ elapsed: number;
32
+ /** Why it ended, when it did not simply finish. */
33
+ reason?: string;
34
+ }
35
+ /** How a go drives: the defaults suit a car in town. */
36
+ export interface GoOptions {
37
+ place?: string;
38
+ /** Top speed, m/s (default 10). */
39
+ speed?: number;
40
+ /** Close enough, metres (default 4). */
41
+ arrive?: number;
42
+ /** Give up after this long, seconds of world time (default 120). */
43
+ timeout?: number;
44
+ }
45
+ /** Smallest stick or button the player can press on purpose. */
46
+ export declare const DELIBERATE = 0.2;
47
+ /** Is the player pressing anything? A twitch under `DELIBERATE` is not. */
48
+ export declare function isDeliberate(input: ControlInput): boolean;
49
+ export declare class AgentDriver {
50
+ private _status;
51
+ private hold;
52
+ private goal;
53
+ private best;
54
+ private sinceProgress;
55
+ get status(): DriverStatus;
56
+ get running(): boolean;
57
+ /** Hold some controls for `seconds` of world time. */
58
+ holdInput(input: Partial<ControlInput>, seconds: number): void;
59
+ /** Drive to `target` (world metres). */
60
+ go(target: {
61
+ x: number;
62
+ z: number;
63
+ }, options?: GoOptions): void;
64
+ /** End the command: `cancelled` with a reason. */
65
+ stop(reason?: string): void;
66
+ private reset;
67
+ private end;
68
+ /**
69
+ * One frame: the controls to apply, or null when there is no command (the
70
+ * player's input stands).
71
+ */
72
+ step(dt: number, pose: DriverPose): Partial<ControlInput> | null;
73
+ }
74
+ export {};
75
+ //# sourceMappingURL=agent-driver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-driver.d.ts","sourceRoot":"","sources":["../src/agent-driver.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEtD,KAAK,GAAG,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAE/C,kDAAkD;AAClD,wBAAgB,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAG3C;AAED,6EAA6E;AAC7E,wBAAgB,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,MAAM,CAKtE;AAED,gGAAgG;AAChG,MAAM,WAAW,UAAU;IACzB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,MAAM,WAAW,GACnB,MAAM,GACN,SAAS,GACT,SAAS,GACT,MAAM,GACN,OAAO,GACP,WAAW,CAAA;AAEf,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,WAAW,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACjC,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAA;IACf,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,wDAAwD;AACxD,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,gEAAgE;AAChE,eAAO,MAAM,UAAU,MAAM,CAAA;AAE7B,2EAA2E;AAC3E,wBAAgB,YAAY,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAIzD;AAQD,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAA8C;IAC7D,OAAO,CAAC,IAAI,CAAiE;IAC7E,OAAO,CAAC,IAAI,CAEG;IACf,OAAO,CAAC,IAAI,CAAW;IACvB,OAAO,CAAC,aAAa,CAAI;IAEzB,IAAI,MAAM,IAAI,YAAY,CAEzB;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,sDAAsD;IACtD,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAM9D,wCAAwC;IACxC,EAAE,CAAC,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,OAAO,GAAE,SAAc,GAAG,IAAI;IAkBnE,kDAAkD;IAClD,IAAI,CAAC,MAAM,SAAY,GAAG,IAAI;IAO9B,OAAO,CAAC,KAAK;IAOb,OAAO,CAAC,GAAG;IAMX;;;OAGG;IACH,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI;CAkDjE"}
@@ -0,0 +1,163 @@
1
+ /*#
2
+ # agent driver
3
+
4
+ **How an agent drives: with the controls, never by moving things.** An
5
+ `AgentDriver` turns a command into `ControlInput` each frame, which the
6
+ controllable in focus merges in place of the player's (see
7
+ [agents](/b3d-agent/)). So an agent's car obeys the same grip, walls and
8
+ traffic as yours, and anything it can do, a player could.
9
+
10
+ Two commands:
11
+
12
+ - **hold**: some controls held for a time (`{ forward: 1, turn: -0.3 }` for
13
+ 2 s). The raw form.
14
+ - **go**: drive to a point. A ground vehicle aims its heading at it, slows
15
+ for the turn and for the stop, and brakes to rest on arrival. A straight
16
+ line, no route finding: when it stops making progress (3 m in 5 s, the
17
+ rule traffic uses) it reports `stuck` rather than pushing on.
18
+
19
+ Any deliberate input from the player cancels the command: the player's own
20
+ hands always win. Pure: no Babylon, no clock (time is the `dt` it is given).
21
+
22
+ ```javascript
23
+ import { AgentDriver } from 'tosijs-3d/agent-driver'
24
+ const d = new AgentDriver()
25
+ d.go({ x: 30, z: 40 }, { place: 'harbour', speed: 12 })
26
+ const input = d.step(dt, { x, z, heading, speed }) // each frame
27
+ d.status // { state: 'running', distance: 41.2, … } → 'arrived'
28
+ ```
29
+ */
30
+ /*{ "parent": "b3d-agent", "order": 10 }*/
31
+ /** Degrees, 0 = +z, 90 = +x, from a direction. */
32
+ export function headingDeg(dir) {
33
+ const h = (Math.atan2(dir.x, dir.z) * 180) / Math.PI;
34
+ return h < 0 ? h + 360 : h;
35
+ }
36
+ /** The turn from `heading` at `from` to face `to`: -180..180, + is right. */
37
+ export function bearingDeg(from, heading, to) {
38
+ let d = headingDeg({ x: to.x - from.x, z: to.z - from.z }) - heading;
39
+ while (d > 180)
40
+ d -= 360;
41
+ while (d <= -180)
42
+ d += 360;
43
+ return d;
44
+ }
45
+ /** Smallest stick or button the player can press on purpose. */
46
+ export const DELIBERATE = 0.2;
47
+ /** Is the player pressing anything? A twitch under `DELIBERATE` is not. */
48
+ export function isDeliberate(input) {
49
+ for (const v of Object.values(input))
50
+ if (typeof v === 'number' && Math.abs(v) >= DELIBERATE)
51
+ return true;
52
+ return false;
53
+ }
54
+ const clamp = (v, lo = -1, hi = 1) => Math.max(lo, Math.min(hi, v));
55
+ /** Progress needed to not be stuck: this far in this long. */
56
+ const PROGRESS_M = 3;
57
+ const PROGRESS_S = 5;
58
+ export class AgentDriver {
59
+ _status = { state: 'idle', elapsed: 0 };
60
+ hold = null;
61
+ goal = null;
62
+ best = Infinity;
63
+ sinceProgress = 0;
64
+ get status() {
65
+ return { ...this._status };
66
+ }
67
+ get running() {
68
+ return this._status.state === 'running';
69
+ }
70
+ /** Hold some controls for `seconds` of world time. */
71
+ holdInput(input, seconds) {
72
+ this.reset();
73
+ this.hold = { input, seconds: Math.max(0, seconds) };
74
+ this._status = { state: 'running', command: 'hold', elapsed: 0 };
75
+ }
76
+ /** Drive to `target` (world metres). */
77
+ go(target, options = {}) {
78
+ this.reset();
79
+ this.goal = {
80
+ x: target.x,
81
+ z: target.z,
82
+ speed: options.speed ?? 10,
83
+ arrive: options.arrive ?? 4,
84
+ timeout: options.timeout ?? 120,
85
+ };
86
+ this._status = {
87
+ state: 'running',
88
+ command: 'go',
89
+ ...(options.place ? { place: options.place } : {}),
90
+ target: { x: target.x, z: target.z },
91
+ elapsed: 0,
92
+ };
93
+ }
94
+ /** End the command: `cancelled` with a reason. */
95
+ stop(reason = 'stopped') {
96
+ if (!this.running)
97
+ return;
98
+ this._status = { ...this._status, state: 'cancelled', reason };
99
+ this.hold = null;
100
+ this.goal = null;
101
+ }
102
+ reset() {
103
+ this.hold = null;
104
+ this.goal = null;
105
+ this.best = Infinity;
106
+ this.sinceProgress = 0;
107
+ }
108
+ end(state, reason) {
109
+ this._status = { ...this._status, state, ...(reason ? { reason } : {}) };
110
+ this.hold = null;
111
+ this.goal = null;
112
+ }
113
+ /**
114
+ * One frame: the controls to apply, or null when there is no command (the
115
+ * player's input stands).
116
+ */
117
+ step(dt, pose) {
118
+ if (!this.running)
119
+ return null;
120
+ this._status.elapsed += dt;
121
+ if (this.hold != null) {
122
+ if (this._status.elapsed >= this.hold.seconds) {
123
+ this.end('done');
124
+ return null;
125
+ }
126
+ return this.hold.input;
127
+ }
128
+ const g = this.goal;
129
+ if (g == null)
130
+ return null;
131
+ const dist = Math.hypot(g.x - pose.x, g.z - pose.z);
132
+ this._status.distance = Math.round(dist * 10) / 10;
133
+ if (dist <= g.arrive) {
134
+ // Brake to rest; arrived once stopped.
135
+ if (Math.abs(pose.speed) < 0.5) {
136
+ this.end('arrived');
137
+ return { forward: 0, jump: 1 };
138
+ }
139
+ return { forward: pose.speed > 0 ? -1 : 1 };
140
+ }
141
+ if (dist < this.best - PROGRESS_M) {
142
+ this.best = dist;
143
+ this.sinceProgress = 0;
144
+ }
145
+ else if ((this.sinceProgress += dt) >= PROGRESS_S) {
146
+ this.end('stuck', `no progress in ${PROGRESS_S} s, ${dist.toFixed(0)} m short`);
147
+ return { forward: 0 };
148
+ }
149
+ if (this._status.elapsed >= g.timeout) {
150
+ this.end('stuck', `not there after ${g.timeout} s`);
151
+ return { forward: 0 };
152
+ }
153
+ const bearing = bearingDeg(pose, pose.heading, g);
154
+ // Slow for the stop (about 3 m/s² of braking) and for the turn.
155
+ const brakeTo = Math.sqrt(2 * 3 * Math.max(0, dist - g.arrive * 0.5));
156
+ const turnFactor = Math.max(0.25, Math.cos((Math.min(90, Math.abs(bearing)) * Math.PI) / 180));
157
+ const want = Math.min(g.speed, brakeTo) * turnFactor;
158
+ const forward = clamp((want - pose.speed) * 0.4);
159
+ const turn = clamp(bearing / 25);
160
+ return { forward, turn };
161
+ }
162
+ }
163
+ //# sourceMappingURL=agent-driver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-driver.js","sourceRoot":"","sources":["../src/agent-driver.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"angle-field.d.ts","sourceRoot":"","sources":["../src/angle-field.ts"],"names":[],"mappings":"AA0JA,OAAO,EAWL,KAAK,GAAG,EAET,MAAM,UAAU,CAAA;AAEjB,OAAO,KAAK,EAAe,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAO3D,MAAM,WAAW,UAAW,SAAQ,QAAQ;IAC1C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC,8EAA8E;IAC9E,SAAS,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAA;CACjC;AAED,MAAM,WAAW,QAAS,SAAQ,QAAQ;IACxC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAA;IACnB,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAA;IAC7B,WAAW,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,IAAI,CAAA;CACrC;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,eAAe;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,8EAA8E;IAC9E,MAAM,CAAC,EAAE,GAAG,CAAA;IACZ,0DAA0D;IAC1D,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CACnC;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,GAAG,CAAA;IACX,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,GAAG,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAA;IAC/B,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAA;CAChC;AAkHD,0BAA0B;AAC1B,wBAAgB,OAAO,CAAC,MAAM,GAAE,cAAmB,GAAG,UAAU,CAgG/D;AAED,6CAA6C;AAC7C,wBAAgB,KAAK,CAAC,MAAM,GAAE,YAAiB,GAAG,QAAQ,CAiHzD"}
1
+ {"version":3,"file":"angle-field.d.ts","sourceRoot":"","sources":["../src/angle-field.ts"],"names":[],"mappings":"AA0JA,OAAO,EAWL,KAAK,GAAG,EAET,MAAM,UAAU,CAAA;AAEjB,OAAO,KAAK,EAAe,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAO3D,MAAM,WAAW,UAAW,SAAQ,QAAQ;IAC1C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC,8EAA8E;IAC9E,SAAS,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAA;CACjC;AAED,MAAM,WAAW,QAAS,SAAQ,QAAQ;IACxC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAA;IACnB,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAA;IAC7B,WAAW,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,IAAI,CAAA;CACrC;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,eAAe;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,8EAA8E;IAC9E,MAAM,CAAC,EAAE,GAAG,CAAA;IACZ,0DAA0D;IAC1D,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CACnC;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,GAAG,CAAA;IACX,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,GAAG,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAA;IAC/B,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAA;CAChC;AAkHD,0BAA0B;AAC1B,wBAAgB,OAAO,CAAC,MAAM,GAAE,cAAmB,GAAG,UAAU,CA2G/D;AAED,6CAA6C;AAC7C,wBAAgB,KAAK,CAAC,MAAM,GAAE,YAAiB,GAAG,QAAQ,CA4HzD"}
@@ -288,6 +288,18 @@ export function angle3d(config = {}) {
288
288
  change?.(value);
289
289
  };
290
290
  const api = {
291
+ semantics: () => ({
292
+ role: 'slider',
293
+ name: config.label ?? '',
294
+ value,
295
+ set: (v) => {
296
+ const n = Number(v);
297
+ if (!Number.isFinite(n))
298
+ return;
299
+ set(n, true);
300
+ config.handleCommit?.(value);
301
+ },
302
+ }),
291
303
  el: base.el,
292
304
  get value() {
293
305
  return value;
@@ -377,6 +389,18 @@ export function arc3d(config = {}) {
377
389
  change?.(value);
378
390
  };
379
391
  const api = {
392
+ semantics: () => ({
393
+ role: 'editor',
394
+ name: config.label ?? '',
395
+ value: { ...value },
396
+ // { centre, width }, in degrees.
397
+ set: (v) => {
398
+ if (v == null || typeof v !== 'object')
399
+ return;
400
+ set({ ...value, ...v }, true);
401
+ config.handleCommit?.({ ...value });
402
+ },
403
+ }),
380
404
  el: base.el,
381
405
  get value() {
382
406
  return { ...value };
@@ -1 +1 @@
1
- {"version":3,"file":"angle-field.js","sourceRoot":"","sources":["../src/angle-field.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"angle-field.js","sourceRoot":"","sources":["../src/angle-field.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import type { ControlBox, ControlNode } from './widget-semantics.js';
2
+ export interface AriaMirrorOptions {
3
+ /** The region's accessible name (the panel's title). */
4
+ label?: string | (() => string);
5
+ /**
6
+ * Where a control's box (panel units) is on the host, in CSS pixels: the
7
+ * copy then sits over the drawn control, unpainted and (on a touch-first
8
+ * device) taking touches, so a finger exploring the screen with a screen
9
+ * reader finds it there. Null, or
10
+ * no `place`, keeps it hidden in the corner.
11
+ */
12
+ place?: (box: ControlBox) => ControlBox | null;
13
+ /** `dialog` for a modal (a pause, a respawn): marked modal. Default `region`. */
14
+ role?: 'region' | 'dialog';
15
+ }
16
+ export interface AriaMirror {
17
+ /** The element the controls are in. */
18
+ readonly root: HTMLElement;
19
+ /** Re-read the tree: values patch in place, a changed structure rebuilds (focus kept by path). */
20
+ update(): void;
21
+ /** Empty it (the panel closed). */
22
+ clear(): void;
23
+ dispose(): void;
24
+ }
25
+ /** Visually hidden, still in the accessibility tree and focusable. */
26
+ export declare const VISUALLY_HIDDEN: Partial<CSSStyleDeclaration>;
27
+ /**
28
+ A placed copy: a real, opaque, touchable box with nothing painted. Not
29
+ `opacity: 0` and not `pointer-events: none`: iOS VoiceOver finds what is under
30
+ a finger by hit-testing, and passed over such copies for the canvas. A range
31
+ input's thumb is a pseudo-element, which an inline style cannot reach: the
32
+ host's stylesheet hides it (`<tosi-b3d>` does).
33
+ */
34
+ export declare const UNPAINTED: Partial<CSSStyleDeclaration>;
35
+ export declare function ariaMirror(host: HTMLElement, read: () => ControlNode[] | null, options?: AriaMirrorOptions): AriaMirror;
36
+ //# sourceMappingURL=aria-mirror.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aria-mirror.d.ts","sourceRoot":"","sources":["../src/aria-mirror.ts"],"names":[],"mappings":"AA2CA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAEpE,MAAM,WAAW,iBAAiB;IAChC,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAA;IAC/B;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,UAAU,GAAG,IAAI,CAAA;IAC9C,iFAAiF;IACjF,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;CAC3B;AAED,MAAM,WAAW,UAAU;IACzB,uCAAuC;IACvC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;IAC1B,kGAAkG;IAClG,MAAM,IAAI,IAAI,CAAA;IACd,mCAAmC;IACnC,KAAK,IAAI,IAAI,CAAA;IACb,OAAO,IAAI,IAAI,CAAA;CAChB;AAED,sEAAsE;AACtE,eAAO,MAAM,eAAe,EAAE,OAAO,CAAC,mBAAmB,CAOxD,CAAA;AAED;;;;;;EAME;AACF,eAAO,MAAM,SAAS,EAAE,OAAO,CAAC,mBAAmB,CAQlD,CAAA;AAmED,wBAAgB,UAAU,CACxB,IAAI,EAAE,WAAW,EACjB,IAAI,EAAE,MAAM,WAAW,EAAE,GAAG,IAAI,EAChC,OAAO,GAAE,iBAAsB,GAC9B,UAAU,CAgZZ"}