@thunderclap-engine/engine 0.0.0-stage → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (566) hide show
  1. package/CHANGELOG.md +390 -0
  2. package/LICENSE +21 -0
  3. package/README.md +333 -2
  4. package/dist/analytics/analytics.d.ts +80 -0
  5. package/dist/analytics/analytics.js +129 -0
  6. package/dist/analytics/index.d.ts +1 -0
  7. package/dist/analytics/index.js +1 -0
  8. package/dist/anim/aim.d.ts +43 -0
  9. package/dist/anim/aim.js +157 -0
  10. package/dist/anim/clip.d.ts +98 -0
  11. package/dist/anim/clip.js +282 -0
  12. package/dist/anim/compress.d.ts +65 -0
  13. package/dist/anim/compress.js +339 -0
  14. package/dist/anim/foot-ik.d.ts +74 -0
  15. package/dist/anim/foot-ik.js +241 -0
  16. package/dist/anim/graph.d.ts +153 -0
  17. package/dist/anim/graph.js +532 -0
  18. package/dist/anim/ik.d.ts +105 -0
  19. package/dist/anim/ik.js +435 -0
  20. package/dist/anim/index.d.ts +36 -0
  21. package/dist/anim/index.js +21 -0
  22. package/dist/anim/match.d.ts +66 -0
  23. package/dist/anim/match.js +153 -0
  24. package/dist/anim/mixer.d.ts +113 -0
  25. package/dist/anim/mixer.js +314 -0
  26. package/dist/anim/morph.d.ts +41 -0
  27. package/dist/anim/morph.js +94 -0
  28. package/dist/anim/pose.d.ts +74 -0
  29. package/dist/anim/pose.js +254 -0
  30. package/dist/anim/quat.d.ts +44 -0
  31. package/dist/anim/quat.js +187 -0
  32. package/dist/anim/retarget.d.ts +97 -0
  33. package/dist/anim/retarget.js +366 -0
  34. package/dist/anim/root-motion.d.ts +44 -0
  35. package/dist/anim/root-motion.js +224 -0
  36. package/dist/anim/skin-pose.d.ts +39 -0
  37. package/dist/anim/skin-pose.js +53 -0
  38. package/dist/anim/socket.d.ts +47 -0
  39. package/dist/anim/socket.js +84 -0
  40. package/dist/anim/spring-chain.d.ts +73 -0
  41. package/dist/anim/spring-chain.js +294 -0
  42. package/dist/assets/atlas.d.ts +90 -0
  43. package/dist/assets/atlas.js +212 -0
  44. package/dist/assets/baked.d.ts +33 -0
  45. package/dist/assets/baked.js +38 -0
  46. package/dist/assets/bundle.d.ts +88 -0
  47. package/dist/assets/bundle.js +464 -0
  48. package/dist/assets/cache.d.ts +56 -0
  49. package/dist/assets/cache.js +123 -0
  50. package/dist/assets/gltf-load.d.ts +252 -0
  51. package/dist/assets/gltf-load.js +661 -0
  52. package/dist/assets/gltf-skin.d.ts +36 -0
  53. package/dist/assets/gltf-skin.js +109 -0
  54. package/dist/assets/gltf.d.ts +706 -0
  55. package/dist/assets/gltf.js +1376 -0
  56. package/dist/assets/index.d.ts +20 -0
  57. package/dist/assets/index.js +10 -0
  58. package/dist/assets/ktx2.d.ts +71 -0
  59. package/dist/assets/ktx2.js +213 -0
  60. package/dist/assets/manifest.d.ts +79 -0
  61. package/dist/assets/manifest.js +7 -0
  62. package/dist/assets/meshopt.d.ts +23 -0
  63. package/dist/assets/meshopt.js +403 -0
  64. package/dist/audio/audio.d.ts +733 -0
  65. package/dist/audio/audio.js +2013 -0
  66. package/dist/audio/dsp.d.ts +61 -0
  67. package/dist/audio/dsp.js +159 -0
  68. package/dist/audio/duck.d.ts +44 -0
  69. package/dist/audio/duck.js +101 -0
  70. package/dist/audio/envelope.d.ts +53 -0
  71. package/dist/audio/envelope.js +106 -0
  72. package/dist/audio/index.d.ts +13 -0
  73. package/dist/audio/index.js +14 -0
  74. package/dist/audio/music.d.ts +113 -0
  75. package/dist/audio/music.js +548 -0
  76. package/dist/audio/occlusion.d.ts +55 -0
  77. package/dist/audio/occlusion.js +61 -0
  78. package/dist/audio/persist.d.ts +23 -0
  79. package/dist/audio/persist.js +27 -0
  80. package/dist/audio/recipes.d.ts +55 -0
  81. package/dist/audio/recipes.js +227 -0
  82. package/dist/audio/send.d.ts +41 -0
  83. package/dist/audio/send.js +118 -0
  84. package/dist/audio/sprites.d.ts +59 -0
  85. package/dist/audio/sprites.js +43 -0
  86. package/dist/audio/synth.d.ts +103 -0
  87. package/dist/audio/synth.js +197 -0
  88. package/dist/audio/variations.d.ts +25 -0
  89. package/dist/audio/variations.js +55 -0
  90. package/dist/audio/zones.d.ts +100 -0
  91. package/dist/audio/zones.js +167 -0
  92. package/dist/core/detached-surface.d.ts +44 -0
  93. package/dist/core/detached-surface.js +104 -0
  94. package/dist/core/events.d.ts +24 -0
  95. package/dist/core/events.js +43 -0
  96. package/dist/core/game.d.ts +409 -0
  97. package/dist/core/game.js +530 -0
  98. package/dist/core/hash.d.ts +24 -0
  99. package/dist/core/hash.js +49 -0
  100. package/dist/core/index.d.ts +17 -0
  101. package/dist/core/index.js +9 -0
  102. package/dist/core/loop.d.ts +113 -0
  103. package/dist/core/loop.js +185 -0
  104. package/dist/core/math.d.ts +58 -0
  105. package/dist/core/math.js +210 -0
  106. package/dist/core/noise.d.ts +40 -0
  107. package/dist/core/noise.js +247 -0
  108. package/dist/core/pool.d.ts +42 -0
  109. package/dist/core/pool.js +85 -0
  110. package/dist/core/random.d.ts +61 -0
  111. package/dist/core/random.js +199 -0
  112. package/dist/core/scene.d.ts +79 -0
  113. package/dist/core/scene.js +195 -0
  114. package/dist/core/timer.d.ts +66 -0
  115. package/dist/core/timer.js +286 -0
  116. package/dist/fx/billboard-wgsl.d.ts +29 -0
  117. package/dist/fx/billboard-wgsl.js +158 -0
  118. package/dist/fx/billboard.d.ts +249 -0
  119. package/dist/fx/billboard.js +702 -0
  120. package/dist/fx/debug-draw.d.ts +127 -0
  121. package/dist/fx/debug-draw.js +523 -0
  122. package/dist/fx/debug-wgsl.d.ts +7 -0
  123. package/dist/fx/debug-wgsl.js +32 -0
  124. package/dist/fx/decals-wgsl.d.ts +15 -0
  125. package/dist/fx/decals-wgsl.js +173 -0
  126. package/dist/fx/decals.d.ts +216 -0
  127. package/dist/fx/decals.js +607 -0
  128. package/dist/fx/effect.d.ts +129 -0
  129. package/dist/fx/effect.js +349 -0
  130. package/dist/fx/effects/hit-spark.json +48 -0
  131. package/dist/fx/effects/index.d.ts +8 -0
  132. package/dist/fx/effects/index.js +9 -0
  133. package/dist/fx/effects/magic-aura.json +47 -0
  134. package/dist/fx/effects/smoke-puff.json +34 -0
  135. package/dist/fx/emit-surface.d.ts +40 -0
  136. package/dist/fx/emit-surface.js +124 -0
  137. package/dist/fx/flicker.d.ts +30 -0
  138. package/dist/fx/flicker.js +42 -0
  139. package/dist/fx/index.d.ts +31 -0
  140. package/dist/fx/index.js +20 -0
  141. package/dist/fx/particles-wgsl.d.ts +57 -0
  142. package/dist/fx/particles-wgsl.js +828 -0
  143. package/dist/fx/particles.d.ts +566 -0
  144. package/dist/fx/particles.js +1533 -0
  145. package/dist/fx/random.d.ts +15 -0
  146. package/dist/fx/random.js +20 -0
  147. package/dist/fx/sky-wgsl.d.ts +23 -0
  148. package/dist/fx/sky-wgsl.js +127 -0
  149. package/dist/fx/sky.d.ts +96 -0
  150. package/dist/fx/sky.js +175 -0
  151. package/dist/fx/text-atlas.d.ts +143 -0
  152. package/dist/fx/text-atlas.js +327 -0
  153. package/dist/fx/trail-wgsl.d.ts +11 -0
  154. package/dist/fx/trail-wgsl.js +42 -0
  155. package/dist/fx/trail.d.ts +194 -0
  156. package/dist/fx/trail.js +555 -0
  157. package/dist/fx/water-wgsl.d.ts +34 -0
  158. package/dist/fx/water-wgsl.js +197 -0
  159. package/dist/fx/water.d.ts +176 -0
  160. package/dist/fx/water.js +371 -0
  161. package/dist/geom/collide/bvh.d.ts +151 -0
  162. package/dist/geom/collide/bvh.js +493 -0
  163. package/dist/geom/collide/debug.d.ts +14 -0
  164. package/dist/geom/collide/debug.js +74 -0
  165. package/dist/geom/collide/grid.d.ts +26 -0
  166. package/dist/geom/collide/grid.js +91 -0
  167. package/dist/geom/collide/index.d.ts +8 -0
  168. package/dist/geom/collide/index.js +8 -0
  169. package/dist/geom/collide/queries.d.ts +70 -0
  170. package/dist/geom/collide/queries.js +583 -0
  171. package/dist/geom/collide/serialize.d.ts +14 -0
  172. package/dist/geom/collide/serialize.js +145 -0
  173. package/dist/geom/collide/shapes.d.ts +161 -0
  174. package/dist/geom/collide/shapes.js +686 -0
  175. package/dist/geom/collide/slide.d.ts +66 -0
  176. package/dist/geom/collide/slide.js +375 -0
  177. package/dist/geom/collide/tile-slide.d.ts +88 -0
  178. package/dist/geom/collide/tile-slide.js +255 -0
  179. package/dist/geom/geometry.d.ts +95 -0
  180. package/dist/geom/geometry.js +322 -0
  181. package/dist/geom/heightfield.d.ts +72 -0
  182. package/dist/geom/heightfield.js +295 -0
  183. package/dist/geom/hull.d.ts +27 -0
  184. package/dist/geom/hull.js +279 -0
  185. package/dist/geom/index.d.ts +35 -0
  186. package/dist/geom/index.js +23 -0
  187. package/dist/geom/iso.d.ts +74 -0
  188. package/dist/geom/iso.js +89 -0
  189. package/dist/geom/lod.d.ts +29 -0
  190. package/dist/geom/lod.js +27 -0
  191. package/dist/geom/ops.d.ts +47 -0
  192. package/dist/geom/ops.js +285 -0
  193. package/dist/geom/primitives.d.ts +97 -0
  194. package/dist/geom/primitives.js +359 -0
  195. package/dist/geom/shapes.d.ts +43 -0
  196. package/dist/geom/shapes.js +88 -0
  197. package/dist/geom/simplify.d.ts +38 -0
  198. package/dist/geom/simplify.js +519 -0
  199. package/dist/geom/split.d.ts +37 -0
  200. package/dist/geom/split.js +413 -0
  201. package/dist/geom/sweep.d.ts +83 -0
  202. package/dist/geom/sweep.js +534 -0
  203. package/dist/geom/tangents.d.ts +16 -0
  204. package/dist/geom/tangents.js +124 -0
  205. package/dist/geom/triangulate.d.ts +19 -0
  206. package/dist/geom/triangulate.js +147 -0
  207. package/dist/host/default.d.ts +10 -0
  208. package/dist/host/default.js +10 -0
  209. package/dist/host/index.d.ts +4 -0
  210. package/dist/host/index.js +3 -0
  211. package/dist/host/types.d.ts +144 -0
  212. package/dist/host/types.js +1 -0
  213. package/dist/host/web-links.d.ts +38 -0
  214. package/dist/host/web-links.js +110 -0
  215. package/dist/host/web.d.ts +30 -0
  216. package/dist/host/web.js +216 -0
  217. package/dist/host/xr.d.ts +24 -0
  218. package/dist/host/xr.js +59 -0
  219. package/dist/i18n/i18n.d.ts +59 -0
  220. package/dist/i18n/i18n.js +241 -0
  221. package/dist/i18n/index.d.ts +3 -0
  222. package/dist/i18n/index.js +3 -0
  223. package/dist/i18n/message.d.ts +72 -0
  224. package/dist/i18n/message.js +369 -0
  225. package/dist/i18n/negotiate.d.ts +17 -0
  226. package/dist/i18n/negotiate.js +58 -0
  227. package/dist/index.d.ts +7 -0
  228. package/dist/index.js +1 -0
  229. package/dist/input/bindings.d.ts +31 -0
  230. package/dist/input/bindings.js +141 -0
  231. package/dist/input/clock.d.ts +44 -0
  232. package/dist/input/clock.js +49 -0
  233. package/dist/input/follow.d.ts +133 -0
  234. package/dist/input/follow.js +218 -0
  235. package/dist/input/gestures.d.ts +281 -0
  236. package/dist/input/gestures.js +662 -0
  237. package/dist/input/glyphs.d.ts +35 -0
  238. package/dist/input/glyphs.js +216 -0
  239. package/dist/input/gyro.d.ts +85 -0
  240. package/dist/input/gyro.js +140 -0
  241. package/dist/input/index.d.ts +19 -0
  242. package/dist/input/index.js +16 -0
  243. package/dist/input/input.d.ts +543 -0
  244. package/dist/input/input.js +1492 -0
  245. package/dist/input/look.d.ts +327 -0
  246. package/dist/input/look.js +681 -0
  247. package/dist/input/magnify.d.ts +177 -0
  248. package/dist/input/magnify.js +131 -0
  249. package/dist/input/pointer-dispatch.d.ts +138 -0
  250. package/dist/input/pointer-dispatch.js +180 -0
  251. package/dist/input/pointer-router.d.ts +204 -0
  252. package/dist/input/pointer-router.js +533 -0
  253. package/dist/input/pointer-sources.d.ts +164 -0
  254. package/dist/input/pointer-sources.js +306 -0
  255. package/dist/input/rays.d.ts +138 -0
  256. package/dist/input/rays.js +615 -0
  257. package/dist/input/record.d.ts +209 -0
  258. package/dist/input/record.js +601 -0
  259. package/dist/input/touch-zones.d.ts +147 -0
  260. package/dist/input/touch-zones.js +300 -0
  261. package/dist/input/types.d.ts +158 -0
  262. package/dist/input/types.js +1 -0
  263. package/dist/input/xr-source.d.ts +53 -0
  264. package/dist/input/xr-source.js +164 -0
  265. package/dist/nav/astar.d.ts +45 -0
  266. package/dist/nav/astar.js +182 -0
  267. package/dist/nav/corridor.d.ts +40 -0
  268. package/dist/nav/corridor.js +95 -0
  269. package/dist/nav/crowd.d.ts +94 -0
  270. package/dist/nav/crowd.js +624 -0
  271. package/dist/nav/flow.d.ts +61 -0
  272. package/dist/nav/flow.js +193 -0
  273. package/dist/nav/grid.d.ts +108 -0
  274. package/dist/nav/grid.js +210 -0
  275. package/dist/nav/heap.d.ts +22 -0
  276. package/dist/nav/heap.js +92 -0
  277. package/dist/nav/index.d.ts +37 -0
  278. package/dist/nav/index.js +19 -0
  279. package/dist/nav/mesh/areas.d.ts +44 -0
  280. package/dist/nav/mesh/areas.js +98 -0
  281. package/dist/nav/mesh/bake-options.d.ts +33 -0
  282. package/dist/nav/mesh/bake-options.js +76 -0
  283. package/dist/nav/mesh/contour.d.ts +22 -0
  284. package/dist/nav/mesh/contour.js +323 -0
  285. package/dist/nav/mesh/flow3.d.ts +35 -0
  286. package/dist/nav/mesh/flow3.js +229 -0
  287. package/dist/nav/mesh/links.d.ts +38 -0
  288. package/dist/nav/mesh/links.js +72 -0
  289. package/dist/nav/mesh/mesh-path.d.ts +152 -0
  290. package/dist/nav/mesh/mesh-path.js +643 -0
  291. package/dist/nav/mesh/mesh-reach.d.ts +78 -0
  292. package/dist/nav/mesh/mesh-reach.js +450 -0
  293. package/dist/nav/mesh/navmesh.d.ts +117 -0
  294. package/dist/nav/mesh/navmesh.js +647 -0
  295. package/dist/nav/mesh/polymesh.d.ts +24 -0
  296. package/dist/nav/mesh/polymesh.js +384 -0
  297. package/dist/nav/mesh/regions.d.ts +12 -0
  298. package/dist/nav/mesh/regions.js +367 -0
  299. package/dist/nav/mesh/serialize.d.ts +13 -0
  300. package/dist/nav/mesh/serialize.js +197 -0
  301. package/dist/nav/mesh/voxelize.d.ts +111 -0
  302. package/dist/nav/mesh/voxelize.js +552 -0
  303. package/dist/nav/obstacles.d.ts +75 -0
  304. package/dist/nav/obstacles.js +294 -0
  305. package/dist/nav/path.d.ts +59 -0
  306. package/dist/nav/path.js +177 -0
  307. package/dist/nav/query-queue.d.ts +46 -0
  308. package/dist/nav/query-queue.js +308 -0
  309. package/dist/nav/reach.d.ts +53 -0
  310. package/dist/nav/reach.js +148 -0
  311. package/dist/nav/steer.d.ts +36 -0
  312. package/dist/nav/steer.js +78 -0
  313. package/dist/platform/boot.d.ts +28 -0
  314. package/dist/platform/boot.js +43 -0
  315. package/dist/platform/device-mode.d.ts +40 -0
  316. package/dist/platform/device-mode.js +104 -0
  317. package/dist/platform/device.d.ts +31 -0
  318. package/dist/platform/device.js +91 -0
  319. package/dist/platform/environment.d.ts +42 -0
  320. package/dist/platform/environment.js +82 -0
  321. package/dist/platform/gpu.d.ts +40 -0
  322. package/dist/platform/gpu.js +57 -0
  323. package/dist/platform/index.d.ts +18 -0
  324. package/dist/platform/index.js +10 -0
  325. package/dist/platform/letterbox.d.ts +43 -0
  326. package/dist/platform/letterbox.js +57 -0
  327. package/dist/platform/links.d.ts +20 -0
  328. package/dist/platform/links.js +43 -0
  329. package/dist/platform/screens.d.ts +36 -0
  330. package/dist/platform/screens.js +138 -0
  331. package/dist/platform/surface.d.ts +72 -0
  332. package/dist/platform/surface.js +157 -0
  333. package/dist/platform/xr-fake.d.ts +168 -0
  334. package/dist/platform/xr-fake.js +434 -0
  335. package/dist/platform/xr-surface.d.ts +120 -0
  336. package/dist/platform/xr-surface.js +214 -0
  337. package/dist/platform/xr-types.d.ts +262 -0
  338. package/dist/post/ao.d.ts +12 -0
  339. package/dist/post/ao.js +136 -0
  340. package/dist/post/blend.d.ts +27 -0
  341. package/dist/post/blend.js +129 -0
  342. package/dist/post/depth-pass.d.ts +43 -0
  343. package/dist/post/depth-pass.js +118 -0
  344. package/dist/post/dof.d.ts +1 -0
  345. package/dist/post/dof.js +66 -0
  346. package/dist/post/exposure.d.ts +80 -0
  347. package/dist/post/exposure.js +322 -0
  348. package/dist/post/index.d.ts +12 -0
  349. package/dist/post/index.js +11 -0
  350. package/dist/post/lens-dirt.d.ts +13 -0
  351. package/dist/post/lens-dirt.js +91 -0
  352. package/dist/post/lut.d.ts +19 -0
  353. package/dist/post/lut.js +50 -0
  354. package/dist/post/motion-blur.d.ts +9 -0
  355. package/dist/post/motion-blur.js +78 -0
  356. package/dist/post/post-stack.d.ts +302 -0
  357. package/dist/post/post-stack.js +1137 -0
  358. package/dist/post/settings.d.ts +485 -0
  359. package/dist/post/settings.js +416 -0
  360. package/dist/post/shaders.d.ts +25 -0
  361. package/dist/post/shaders.js +410 -0
  362. package/dist/post/ssr.d.ts +16 -0
  363. package/dist/post/ssr.js +155 -0
  364. package/dist/post/taa.d.ts +74 -0
  365. package/dist/post/taa.js +235 -0
  366. package/dist/post/white-balance.d.ts +25 -0
  367. package/dist/post/white-balance.js +98 -0
  368. package/dist/render/bindings.d.ts +98 -0
  369. package/dist/render/bindings.js +281 -0
  370. package/dist/render/blend.d.ts +13 -0
  371. package/dist/render/blend.js +26 -0
  372. package/dist/render/camera-2d.d.ts +72 -0
  373. package/dist/render/camera-2d.js +92 -0
  374. package/dist/render/camera.d.ts +302 -0
  375. package/dist/render/camera.js +671 -0
  376. package/dist/render/color.d.ts +16 -0
  377. package/dist/render/color.js +41 -0
  378. package/dist/render/compressed.d.ts +104 -0
  379. package/dist/render/compressed.js +248 -0
  380. package/dist/render/diagnostics.d.ts +15 -0
  381. package/dist/render/diagnostics.js +43 -0
  382. package/dist/render/dynamic-resolution.d.ts +70 -0
  383. package/dist/render/dynamic-resolution.js +126 -0
  384. package/dist/render/fake-gpu.d.ts +204 -0
  385. package/dist/render/fake-gpu.js +426 -0
  386. package/dist/render/flipbook.d.ts +56 -0
  387. package/dist/render/flipbook.js +87 -0
  388. package/dist/render/frame.d.ts +278 -0
  389. package/dist/render/frame.js +174 -0
  390. package/dist/render/fullscreen.d.ts +54 -0
  391. package/dist/render/fullscreen.js +91 -0
  392. package/dist/render/gpu-timer.d.ts +73 -0
  393. package/dist/render/gpu-timer.js +186 -0
  394. package/dist/render/index.d.ts +53 -0
  395. package/dist/render/index.js +29 -0
  396. package/dist/render/instance-list.d.ts +185 -0
  397. package/dist/render/instance-list.js +547 -0
  398. package/dist/render/lights.d.ts +181 -0
  399. package/dist/render/lights.js +233 -0
  400. package/dist/render/lod.d.ts +54 -0
  401. package/dist/render/lod.js +52 -0
  402. package/dist/render/material.d.ts +165 -0
  403. package/dist/render/material.js +292 -0
  404. package/dist/render/mesh.d.ts +284 -0
  405. package/dist/render/mesh.js +472 -0
  406. package/dist/render/mipmap.d.ts +16 -0
  407. package/dist/render/mipmap.js +121 -0
  408. package/dist/render/parallax.d.ts +50 -0
  409. package/dist/render/parallax.js +47 -0
  410. package/dist/render/pbr-wgsl.d.ts +31 -0
  411. package/dist/render/pbr-wgsl.js +119 -0
  412. package/dist/render/ping-pong.d.ts +42 -0
  413. package/dist/render/ping-pong.js +74 -0
  414. package/dist/render/renderer.d.ts +741 -0
  415. package/dist/render/renderer.js +2486 -0
  416. package/dist/render/scene-pipelines.d.ts +44 -0
  417. package/dist/render/scene-pipelines.js +92 -0
  418. package/dist/render/scene-target.d.ts +170 -0
  419. package/dist/render/scene-target.js +450 -0
  420. package/dist/render/shadow.d.ts +74 -0
  421. package/dist/render/shadow.js +208 -0
  422. package/dist/render/skin.d.ts +112 -0
  423. package/dist/render/skin.js +240 -0
  424. package/dist/render/snapshot.d.ts +36 -0
  425. package/dist/render/snapshot.js +34 -0
  426. package/dist/render/standard.d.ts +162 -0
  427. package/dist/render/standard.js +263 -0
  428. package/dist/render/texture.d.ts +142 -0
  429. package/dist/render/texture.js +228 -0
  430. package/dist/render/tile-layer.d.ts +110 -0
  431. package/dist/render/tile-layer.js +304 -0
  432. package/dist/render/transform.d.ts +115 -0
  433. package/dist/render/transform.js +318 -0
  434. package/dist/render/wgsl.d.ts +131 -0
  435. package/dist/render/wgsl.js +528 -0
  436. package/dist/save/codec.d.ts +49 -0
  437. package/dist/save/codec.js +169 -0
  438. package/dist/save/index.d.ts +8 -0
  439. package/dist/save/index.js +8 -0
  440. package/dist/save/journal.d.ts +24 -0
  441. package/dist/save/journal.js +102 -0
  442. package/dist/save/migrate.d.ts +15 -0
  443. package/dist/save/migrate.js +37 -0
  444. package/dist/save/schema.d.ts +72 -0
  445. package/dist/save/schema.js +154 -0
  446. package/dist/save/settings.d.ts +28 -0
  447. package/dist/save/settings.js +59 -0
  448. package/dist/save/slots.d.ts +56 -0
  449. package/dist/save/slots.js +200 -0
  450. package/dist/save/storage.d.ts +35 -0
  451. package/dist/save/storage.js +62 -0
  452. package/dist/save/store.d.ts +114 -0
  453. package/dist/save/store.js +269 -0
  454. package/dist/testing/fake-host.d.ts +103 -0
  455. package/dist/testing/fake-host.js +163 -0
  456. package/dist/testing/fixed-clock.d.ts +25 -0
  457. package/dist/testing/fixed-clock.js +30 -0
  458. package/dist/testing/index.d.ts +4 -0
  459. package/dist/testing/index.js +5 -0
  460. package/dist/testing/test-game.d.ts +76 -0
  461. package/dist/testing/test-game.js +92 -0
  462. package/dist/tween/ease.d.ts +77 -0
  463. package/dist/tween/ease.js +192 -0
  464. package/dist/tween/index.d.ts +8 -0
  465. package/dist/tween/index.js +7 -0
  466. package/dist/tween/timeline.d.ts +78 -0
  467. package/dist/tween/timeline.js +269 -0
  468. package/dist/tween/tween.d.ts +168 -0
  469. package/dist/tween/tween.js +320 -0
  470. package/dist/ui/anchor.d.ts +206 -0
  471. package/dist/ui/anchor.js +307 -0
  472. package/dist/ui/caption.d.ts +122 -0
  473. package/dist/ui/caption.js +286 -0
  474. package/dist/ui/cursor.d.ts +105 -0
  475. package/dist/ui/cursor.js +261 -0
  476. package/dist/ui/dom.d.ts +30 -0
  477. package/dist/ui/dom.js +92 -0
  478. package/dist/ui/floats.d.ts +86 -0
  479. package/dist/ui/floats.js +260 -0
  480. package/dist/ui/hud.d.ts +198 -0
  481. package/dist/ui/hud.js +431 -0
  482. package/dist/ui/index.d.ts +37 -0
  483. package/dist/ui/index.js +34 -0
  484. package/dist/ui/inventory-card.d.ts +52 -0
  485. package/dist/ui/inventory-card.js +173 -0
  486. package/dist/ui/inventory-context.d.ts +29 -0
  487. package/dist/ui/inventory-context.js +125 -0
  488. package/dist/ui/inventory-drag.d.ts +63 -0
  489. package/dist/ui/inventory-drag.js +394 -0
  490. package/dist/ui/inventory-grid.d.ts +66 -0
  491. package/dist/ui/inventory-grid.js +625 -0
  492. package/dist/ui/inventory-radial.d.ts +39 -0
  493. package/dist/ui/inventory-radial.js +168 -0
  494. package/dist/ui/inventory.d.ts +128 -0
  495. package/dist/ui/inventory.js +154 -0
  496. package/dist/ui/layout.d.ts +356 -0
  497. package/dist/ui/layout.js +856 -0
  498. package/dist/ui/link.d.ts +64 -0
  499. package/dist/ui/link.js +155 -0
  500. package/dist/ui/loading.d.ts +40 -0
  501. package/dist/ui/loading.js +157 -0
  502. package/dist/ui/loupe.d.ts +74 -0
  503. package/dist/ui/loupe.js +164 -0
  504. package/dist/ui/menu-nav.d.ts +33 -0
  505. package/dist/ui/menu-nav.js +28 -0
  506. package/dist/ui/minimap-canvas.d.ts +145 -0
  507. package/dist/ui/minimap-canvas.js +460 -0
  508. package/dist/ui/notify.d.ts +40 -0
  509. package/dist/ui/notify.js +141 -0
  510. package/dist/ui/orb.d.ts +53 -0
  511. package/dist/ui/orb.js +304 -0
  512. package/dist/ui/overlay.d.ts +213 -0
  513. package/dist/ui/overlay.js +394 -0
  514. package/dist/ui/padnav.d.ts +53 -0
  515. package/dist/ui/padnav.js +146 -0
  516. package/dist/ui/perf.d.ts +130 -0
  517. package/dist/ui/perf.js +329 -0
  518. package/dist/ui/rotate-card.d.ts +54 -0
  519. package/dist/ui/rotate-card.js +97 -0
  520. package/dist/ui/stack.d.ts +128 -0
  521. package/dist/ui/stack.js +312 -0
  522. package/dist/ui/styles.d.ts +13 -0
  523. package/dist/ui/styles.js +200 -0
  524. package/dist/ui/text-scale.d.ts +67 -0
  525. package/dist/ui/text-scale.js +102 -0
  526. package/dist/ui/theme.d.ts +70 -0
  527. package/dist/ui/theme.js +98 -0
  528. package/dist/ui/toast.d.ts +23 -0
  529. package/dist/ui/toast.js +46 -0
  530. package/dist/ui/tooltip.d.ts +89 -0
  531. package/dist/ui/tooltip.js +333 -0
  532. package/dist/ui/widgets-2.d.ts +134 -0
  533. package/dist/ui/widgets-2.js +399 -0
  534. package/dist/ui/widgets-3.d.ts +91 -0
  535. package/dist/ui/widgets-3.js +212 -0
  536. package/dist/ui/widgets.d.ts +34 -0
  537. package/dist/ui/widgets.js +50 -0
  538. package/dist/ui/world-panel/index.d.ts +5 -0
  539. package/dist/ui/world-panel/index.js +5 -0
  540. package/dist/ui/world-panel/layout.d.ts +38 -0
  541. package/dist/ui/world-panel/layout.js +68 -0
  542. package/dist/ui/world-panel/paint.d.ts +96 -0
  543. package/dist/ui/world-panel/paint.js +136 -0
  544. package/dist/ui/world-panel/panel.d.ts +235 -0
  545. package/dist/ui/world-panel/panel.js +762 -0
  546. package/dist/ui/world-panel/wgsl.d.ts +10 -0
  547. package/dist/ui/world-panel/wgsl.js +52 -0
  548. package/dist/ui/world-panel/widgets.d.ts +207 -0
  549. package/dist/ui/world-panel/widgets.js +569 -0
  550. package/dist/voxel/chunks.d.ts +77 -0
  551. package/dist/voxel/chunks.js +149 -0
  552. package/dist/voxel/grid.d.ts +84 -0
  553. package/dist/voxel/grid.js +223 -0
  554. package/dist/voxel/index.d.ts +22 -0
  555. package/dist/voxel/index.js +7 -0
  556. package/dist/voxel/mesher-worker.d.ts +14 -0
  557. package/dist/voxel/mesher-worker.js +47 -0
  558. package/dist/voxel/mesher.d.ts +73 -0
  559. package/dist/voxel/mesher.js +306 -0
  560. package/dist/voxel/ray.d.ts +32 -0
  561. package/dist/voxel/ray.js +73 -0
  562. package/dist/voxel/wgsl.d.ts +16 -0
  563. package/dist/voxel/wgsl.js +28 -0
  564. package/dist/voxel/worker-client.d.ts +79 -0
  565. package/dist/voxel/worker-client.js +122 -0
  566. package/package.json +177 -3
@@ -0,0 +1,145 @@
1
+ /**
2
+ * A built collider as bytes, so a level's BVH is baked once and loaded, not rebuilt on every
3
+ * start. Little-endian, versioned, typed arrays laid out whole; `userData` is not serialised
4
+ * (pass it to `importCollider` to reattach, by source index). Re-exporting an imported collider
5
+ * gives identical bytes.
6
+ */
7
+ import { StaticCollider } from './bvh.js';
8
+ const MAGIC = 0x54434f4c; // 'TCOL'
9
+ const VERSION = 1;
10
+ const HEADER_U32 = 8; // magic, version, leafSize, root, topCount, triCount, nodeCount, sourceCount
11
+ const SOURCE_U32 = 8; // kind, start, count, root, nodeStart, nodeEnd, layer, flags (bit 0 removed, bit 1 has local)
12
+ function align4(n) {
13
+ return (n + 3) & ~3;
14
+ }
15
+ /** Serialises `c` to a self-contained buffer. */
16
+ export function exportCollider(c) {
17
+ const triCount = c.triSource.length;
18
+ const nodeCount = c.nodeLeaf.length;
19
+ let localFloats = 0;
20
+ for (const s of c.sources)
21
+ if (s.local)
22
+ localFloats += s.local.length;
23
+ const bytes = HEADER_U32 * 4 +
24
+ c.sources.length * SOURCE_U32 * 4 +
25
+ triCount * 9 * 4 +
26
+ triCount * 4 +
27
+ nodeCount * 3 * 4 * 2 +
28
+ align4(nodeCount) +
29
+ nodeCount * 4 * 2 +
30
+ localFloats * 4;
31
+ const buf = new ArrayBuffer(bytes);
32
+ const u32 = new Uint32Array(buf, 0, HEADER_U32 + c.sources.length * SOURCE_U32);
33
+ u32[0] = MAGIC;
34
+ u32[1] = VERSION;
35
+ u32[2] = c.leafSize;
36
+ u32[3] = c.root;
37
+ u32[4] = c.topCount;
38
+ u32[5] = triCount;
39
+ u32[6] = nodeCount;
40
+ u32[7] = c.sources.length;
41
+ let o = HEADER_U32;
42
+ for (const s of c.sources) {
43
+ u32[o++] = s.kind;
44
+ u32[o++] = s.start;
45
+ u32[o++] = s.count;
46
+ u32[o++] = s.root;
47
+ u32[o++] = s.nodeStart;
48
+ u32[o++] = s.nodeEnd;
49
+ u32[o++] = s.layer;
50
+ u32[o++] = (s.removed ? 1 : 0) | (s.local ? 2 : 0);
51
+ }
52
+ let byte = o * 4;
53
+ new Float32Array(buf, byte, triCount * 9).set(c.tris);
54
+ byte += triCount * 9 * 4;
55
+ new Uint32Array(buf, byte, triCount).set(c.triSource);
56
+ byte += triCount * 4;
57
+ new Float32Array(buf, byte, nodeCount * 3).set(c.nodeMin);
58
+ byte += nodeCount * 3 * 4;
59
+ new Float32Array(buf, byte, nodeCount * 3).set(c.nodeMax);
60
+ byte += nodeCount * 3 * 4;
61
+ new Uint8Array(buf, byte, nodeCount).set(c.nodeLeaf);
62
+ byte += align4(nodeCount);
63
+ new Int32Array(buf, byte, nodeCount).set(c.nodeA);
64
+ byte += nodeCount * 4;
65
+ new Int32Array(buf, byte, nodeCount).set(c.nodeB);
66
+ byte += nodeCount * 4;
67
+ for (const s of c.sources) {
68
+ if (!s.local)
69
+ continue;
70
+ new Float32Array(buf, byte, s.local.length).set(s.local);
71
+ byte += s.local.length * 4;
72
+ }
73
+ return buf;
74
+ }
75
+ /**
76
+ * Rebuilds a collider from `exportCollider` bytes. The arrays are copied out of `buf`, so it may
77
+ * be released. `userData[i]` is attached to source `i` when given.
78
+ */
79
+ export function importCollider(buf, userData) {
80
+ if (buf.byteLength < HEADER_U32 * 4)
81
+ throw new Error('collide: buffer too short for a collider');
82
+ const head = new Uint32Array(buf, 0, HEADER_U32);
83
+ if (head[0] !== MAGIC)
84
+ throw new Error('collide: not a collider buffer');
85
+ if (head[1] !== VERSION)
86
+ throw new Error(`collide: unsupported collider version ${head[1]}`);
87
+ const leafSize = head[2];
88
+ const root = head[3];
89
+ const topCount = head[4];
90
+ const triCount = head[5];
91
+ const nodeCount = head[6];
92
+ const sourceCount = head[7];
93
+ const rec = new Uint32Array(buf, HEADER_U32 * 4, sourceCount * SOURCE_U32);
94
+ let byte = HEADER_U32 * 4 + sourceCount * SOURCE_U32 * 4;
95
+ const tris = new Float32Array(buf.slice(byte, byte + triCount * 9 * 4));
96
+ byte += triCount * 9 * 4;
97
+ const triSource = new Uint32Array(buf.slice(byte, byte + triCount * 4));
98
+ byte += triCount * 4;
99
+ const nodeMin = new Float32Array(buf.slice(byte, byte + nodeCount * 3 * 4));
100
+ byte += nodeCount * 3 * 4;
101
+ const nodeMax = new Float32Array(buf.slice(byte, byte + nodeCount * 3 * 4));
102
+ byte += nodeCount * 3 * 4;
103
+ const nodeLeaf = new Uint8Array(buf.slice(byte, byte + nodeCount));
104
+ byte += align4(nodeCount);
105
+ const nodeA = new Int32Array(buf.slice(byte, byte + nodeCount * 4));
106
+ byte += nodeCount * 4;
107
+ const nodeB = new Int32Array(buf.slice(byte, byte + nodeCount * 4));
108
+ byte += nodeCount * 4;
109
+ const sources = [];
110
+ for (let i = 0; i < sourceCount; i++) {
111
+ const o = i * SOURCE_U32;
112
+ const count = rec[o + 2];
113
+ const flags = rec[o + 7];
114
+ let local = null;
115
+ if (flags & 2) {
116
+ local = new Float32Array(buf.slice(byte, byte + count * 9 * 4));
117
+ byte += count * 9 * 4;
118
+ }
119
+ sources.push({
120
+ kind: rec[o],
121
+ start: rec[o + 1],
122
+ count,
123
+ root: rec[o + 3],
124
+ nodeStart: rec[o + 4],
125
+ nodeEnd: rec[o + 5],
126
+ layer: rec[o + 6],
127
+ removed: (flags & 1) !== 0,
128
+ local,
129
+ userData: userData?.[i],
130
+ });
131
+ }
132
+ return new StaticCollider({
133
+ tris,
134
+ triSource,
135
+ nodeMin,
136
+ nodeMax,
137
+ nodeLeaf,
138
+ nodeA,
139
+ nodeB,
140
+ root,
141
+ topCount,
142
+ sources,
143
+ leafSize,
144
+ });
145
+ }
@@ -0,0 +1,161 @@
1
+ /**
2
+ * Collision shapes and the shape-vs-triangle tests the queries are built on. Every function is
3
+ * pure arithmetic over plain numbers: a triangle is its nine coordinates (so the collider's flat
4
+ * triangle array is read in place), the result goes into an `out` the caller owns, nothing here
5
+ * allocates.
6
+ */
7
+ /** A sphere: centre and radius. */
8
+ export interface Sphere {
9
+ x: number;
10
+ y: number;
11
+ z: number;
12
+ r: number;
13
+ }
14
+ /**
15
+ * A capsule along the y axis: centre, half the length of the inner segment (the distance from
16
+ * the centre to each hemisphere's centre) and the radius. Its total height is `2 × (halfHeight + r)`.
17
+ */
18
+ export interface Capsule {
19
+ x: number;
20
+ y: number;
21
+ z: number;
22
+ halfHeight: number;
23
+ r: number;
24
+ }
25
+ /** An axis-aligned box: `min` and `max` corners (`[x, y, z]`). */
26
+ export interface GeomAabb {
27
+ min: [number, number, number];
28
+ max: [number, number, number];
29
+ }
30
+ /** A circle in the xz plane (the 2D case). */
31
+ export interface Circle {
32
+ x: number;
33
+ z: number;
34
+ r: number;
35
+ }
36
+ /** An axis-aligned rectangle in the xz plane: centre and half extents. */
37
+ export interface Box2 {
38
+ x: number;
39
+ z: number;
40
+ hw: number;
41
+ hh: number;
42
+ }
43
+ /** Any 3D shape the queries take. */
44
+ export type Shape = Sphere | Capsule | GeomAabb;
45
+ /** Any 2D shape the `*2` queries take. */
46
+ export type Shape2 = Circle | Box2;
47
+ /** A 3-vector written in place. */
48
+ export type Vec3Out = [number, number, number] | Float32Array | Float64Array;
49
+ /**
50
+ * A touching or penetrating shape and triangle: `depth` is how far along the unit normal
51
+ * (`nx, ny, nz`, pointing from the triangle into the shape) the shape must move to separate;
52
+ * `px, py, pz` is the point on the triangle. `triangle` and `source` index the collider that
53
+ * produced it (-1 from the bare shape tests).
54
+ */
55
+ export interface Contact {
56
+ depth: number;
57
+ nx: number;
58
+ ny: number;
59
+ nz: number;
60
+ px: number;
61
+ py: number;
62
+ pz: number;
63
+ triangle: number;
64
+ source: number;
65
+ }
66
+ /** A zeroed `Contact`, for the caller's preallocated arrays. */
67
+ export declare function createContact(): Contact;
68
+ export declare function isCapsule(s: Shape): s is Capsule;
69
+ export declare function isAabb(s: Shape): s is GeomAabb;
70
+ export declare function isBox2(s: Shape2): s is Box2;
71
+ /** The current triangle: a, b, c as nine coordinates. */
72
+ export declare const TRI: Float64Array<ArrayBuffer>;
73
+ /** A point (0..2) or segment (0..2, 3..5). */
74
+ export declare const SEG: Float64Array<ArrayBuffer>;
75
+ /** Scalars: `R[0]` the squared distance of the last closest-point query; the rest internal. */
76
+ export declare const R: Float64Array<ArrayBuffer>;
77
+ /** The query point of `closestPointTri`; also the box centre of the box tests. */
78
+ export declare const PT: Float64Array<ArrayBuffer>;
79
+ /** Box state: half extents (0..2), triangle vertices relative to the box centre (3..11), axis (12..14). */
80
+ export declare const BX: Float64Array<ArrayBuffer>;
81
+ /**
82
+ * The query shape: kind (0), then for a sphere or capsule its centre (1..3), half height (4, 0
83
+ * for a sphere) and radius (5); for a box its min (1..3) and max (4..6). Queries read the shape
84
+ * from here, never from the caller's object: field loads from objects of varying layout box
85
+ * their doubles.
86
+ */
87
+ export declare const SH: Float64Array<ArrayBuffer>;
88
+ export declare const SH_SPHERE = 0;
89
+ export declare const SH_CAPSULE = 1;
90
+ export declare const SH_BOX = 2;
91
+ /** Loads `s` into `SH`. */
92
+ export declare function loadShape(s: Shape): void;
93
+ /** Loads `TRI`. */
94
+ export declare function loadTri(ax: number, ay: number, az: number, bx: number, by: number, bz: number, cx: number, cy: number, cz: number): void;
95
+ /**
96
+ * The point of triangle `TRI` closest to `PT` (Ericson, Real-Time Collision Detection 5.1.5): the
97
+ * Voronoi region of the point decides between a vertex, an edge and the face. Writes `out`.
98
+ */
99
+ export declare function closestPointTri(out: Vec3Out): void;
100
+ /** The point of triangle `a, b, c` closest to `p`, into `out`; returns `out`. */
101
+ export declare function closestPointTriangle(px: number, py: number, pz: number, ax: number, ay: number, az: number, bx: number, by: number, bz: number, cx: number, cy: number, cz: number, out: Vec3Out): Vec3Out;
102
+ /** The unit normal of `TRI` (counter-clockwise front) into `out`; zero if degenerate. */
103
+ export declare function triNormal(out: Vec3Out): void;
104
+ /** The unit normal of triangle `a, b, c` (counter-clockwise front) into `out`; zero if degenerate. */
105
+ export declare function triangleNormal(ax: number, ay: number, az: number, bx: number, by: number, bz: number, cx: number, cy: number, cz: number, out: Vec3Out): Vec3Out;
106
+ /**
107
+ * The closest points between segment `p0 p1` and segment `q0 q1`: writes the point on the first
108
+ * into `outP` and on the second into `outQ`, returns the squared distance.
109
+ */
110
+ export declare function closestSegmentSegment(p0x: number, p0y: number, p0z: number, p1x: number, p1y: number, p1z: number, q0x: number, q0y: number, q0z: number, q1x: number, q1y: number, q1z: number, outP: Vec3Out, outQ: Vec3Out): number;
111
+ /**
112
+ * The closest points between segment `SEG` and triangle `TRI`: the point on the segment into
113
+ * `outS`, the point on the triangle into `outT`, the squared distance into `R[0]` (0 when the
114
+ * segment crosses the face). Candidates: each endpoint against the face, the segment against
115
+ * each edge, and the face crossing. Clobbers `SEG2`, `PT` and `R[1]`.
116
+ */
117
+ export declare function closestSegTri(outS: Vec3Out, outT: Vec3Out): void;
118
+ /**
119
+ * The closest points between segment `p0 p1` and triangle `a b c`: the point on the segment
120
+ * into `outS`, the point on the triangle into `outT`; returns the squared distance (0 when the
121
+ * segment crosses the face).
122
+ */
123
+ export declare function closestSegmentTriangle(p0x: number, p0y: number, p0z: number, p1x: number, p1y: number, p1z: number, ax: number, ay: number, az: number, bx: number, by: number, bz: number, cx: number, cy: number, cz: number, outS: Vec3Out, outT: Vec3Out): number;
124
+ /** The sphere in `SH` against `TRI`. */
125
+ export declare function sphereTri(out: Contact): boolean;
126
+ /** Sphere against a triangle: true and `out` filled when they overlap (touching is no contact). */
127
+ export declare function sphereTriangle(s: Sphere, ax: number, ay: number, az: number, bx: number, by: number, bz: number, cx: number, cy: number, cz: number, out: Contact): boolean;
128
+ /** The capsule (y axis) in `SH` against `TRI`. */
129
+ export declare function capsuleTri(out: Contact): boolean;
130
+ /**
131
+ * Capsule (y axis) against a triangle: the closest points between the inner segment and the
132
+ * triangle, then the sphere test there. True and `out` filled when they overlap.
133
+ */
134
+ export declare function capsuleTriangle(cap: Capsule, ax: number, ay: number, az: number, bx: number, by: number, bz: number, cx: number, cy: number, cz: number, out: Contact): boolean;
135
+ /**
136
+ * Loads the box in `SH` for the separating-axis tests: half extents into `BX[0..2]`, the
137
+ * vertices of `TRI` relative to the box centre into `BX[3..11]`, the centre into `PT`.
138
+ */
139
+ export declare function loadBox(): void;
140
+ /**
141
+ * Sets `BX[12..14]` to axis `i` of the thirteen box–triangle separating axes: the box axes
142
+ * (0..2), the face normal (3), each edge crossed with each box axis (4..12).
143
+ */
144
+ export declare function boxAxis(i: number): void;
145
+ /** The box in `SH` against `TRI` by the separating-axis test; see `aabbTriangle`. */
146
+ export declare function aabbTri(out: Contact): boolean;
147
+ /**
148
+ * Axis-aligned box against a triangle by the separating-axis test (Akenine-Möller: the three
149
+ * box axes, the face normal, the nine edge cross products). True and `out` filled when they
150
+ * overlap: the normal is the axis of least penetration pointing from the triangle into the box,
151
+ * `depth` the overlap along it, the point the triangle point closest to the box centre.
152
+ */
153
+ export declare function aabbTriangle(box: GeomAabb, ax: number, ay: number, az: number, bx: number, by: number, bz: number, cx: number, cy: number, cz: number, out: Contact): boolean;
154
+ /** The world AABB of the shape in `SH` into `min` and `max`. */
155
+ export declare function shapeBoundsReg(min: Vec3Out, max: Vec3Out): void;
156
+ /** The world AABB of a shape into `min` and `max`. */
157
+ export declare function shapeBounds(s: Shape, min: Vec3Out, max: Vec3Out): void;
158
+ /** The shape in `SH` against `TRI`, dispatching on its kind. */
159
+ export declare function shapeTri(out: Contact): boolean;
160
+ /** Shape against one triangle, dispatching on the shape kind. */
161
+ export declare function shapeTriangle(s: Shape, ax: number, ay: number, az: number, bx: number, by: number, bz: number, cx: number, cy: number, cz: number, out: Contact): boolean;