@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,302 @@
1
+ import { type Mat4 } from '../core/math.js';
2
+ /** A rectangle: origin at top-left, y down. Matches `platform`'s and `ui`'s `Rect`. */
3
+ export interface CameraRect {
4
+ x: number;
5
+ y: number;
6
+ width: number;
7
+ height: number;
8
+ }
9
+ /** A point; `worldToScreen` and `screenToWorld` fill one. */
10
+ export interface CameraPoint {
11
+ x: number;
12
+ y: number;
13
+ z: number;
14
+ }
15
+ /** Every layer bit set: the default `Camera.layers`. */
16
+ export declare const ALL_LAYERS = 4294967295;
17
+ /**
18
+ * Half the depth range of `Camera.ortho2d`, in design units: its near plane is at world
19
+ * z = -ORTHO2D_HALF_DEPTH, the far plane at +ORTHO2D_HALF_DEPTH, z = 0 at clip depth 0.5.
20
+ */
21
+ export declare const ORTHO2D_HALF_DEPTH = 1024;
22
+ /**
23
+ * Floats in the WGSL `EngineCamera` block: 112 used (`jitter` ends at byte 448), padded
24
+ * to 512 bytes so the lights block that follows it in the view's uniform buffer stays on a
25
+ * 256-byte boundary (`minUniformBufferOffsetAlignment`).
26
+ */
27
+ export declare const CAMERA_BLOCK_FLOATS = 128;
28
+ /** Float offset of `inv_view_proj` inside the camera block (byte 240). */
29
+ export declare const CAMERA_INV_VIEW_PROJ_OFFSET = 60;
30
+ /** Float offset of `prev_view_proj` (last frame's unjittered `view_proj`) inside the block. */
31
+ export declare const CAMERA_PREV_VIEW_PROJ_OFFSET = 76;
32
+ /** Float offset of `prev_view` (last frame's `view`) inside the block. */
33
+ export declare const CAMERA_PREV_VIEW_OFFSET = 92;
34
+ /** Float offset of `jitter` (clip-space dx, dy; the pixel offset x, y) inside the block. */
35
+ export declare const CAMERA_JITTER_OFFSET = 108;
36
+ /** Floats in `Camera.frustum`: six planes × (a, b, c, d). */
37
+ export declare const FRUSTUM_FLOATS = 24;
38
+ /**
39
+ * A view-projection camera. Matrices are column-major `Float32Array(16)` (see `mat4` in
40
+ * `@thunderclap-engine/engine/core`), computed on read and cached until something changes.
41
+ *
42
+ * Two presets:
43
+ *
44
+ * - `Camera.ortho2d(designW, designH)`: 1 world unit = 1 design px, origin top-left, y down,
45
+ * z into the screen (right-handed with y down): world z in `±ORTHO2D_HALF_DEPTH` spans the
46
+ * depth buffer, z = 0 sits at clip depth 0.5 and larger z is farther. The 2D controls `x`,
47
+ * `y`, `zoom` and `rotation` move it over that space exactly like the engine's earlier 2D
48
+ * camera; `fitRect` frames a world rect.
49
+ * `Transform.z` is thus a stacking axis for 2D draws under a depth camera.
50
+ * - `Camera.perspective(fovY, aspect, near, far)`: right-handed, looking down -z; place it with
51
+ * `lookAt` or `setView`.
52
+ *
53
+ * `screen` is the rect the clip space spans, in the units `worldToScreen` returns and
54
+ * `screenToWorld` takes: the logical (design px) space for `ortho2d`, normalised 0..1 for
55
+ * `perspective` until a caller sets it.
56
+ *
57
+ * ```ts
58
+ * const cam = renderer.camera; // Camera.ortho2d(1920, 1080) by default
59
+ * cam.x = 120; cam.zoom = 1.5; // pan and zoom, as before
60
+ * const p = cam.screenToWorld(tapX, tapY); // logical px (surface.clientToLogical) → world
61
+ * ```
62
+ */
63
+ export declare class Camera {
64
+ /** Depth test for draws through this camera. The 2D preset leaves it off. */
65
+ depthTest: boolean;
66
+ /** Depth write for draws through this camera. The 2D preset leaves it off. */
67
+ depthWrite: boolean;
68
+ /**
69
+ * Layer membership mask (u32): a draw is seen when `draw.layers & camera.layers` is nonzero.
70
+ * Default: every bit. Draw order within a camera is a separate sort key, not this mask.
71
+ */
72
+ layers: number;
73
+ /** The rect clip space spans, in screen units (see the class comment). */
74
+ readonly screen: CameraRect;
75
+ /**
76
+ * The `view_index` the camera block carries (u32): 0 by default; a stereo pair sets 0 and 1
77
+ * so a material can tell the eyes apart. The renderer writes it as given, whatever the order
78
+ * of the frame's `render` calls.
79
+ */
80
+ viewIndex: number;
81
+ /**
82
+ * Frustum-cull mesh draws through this camera: a draw whose bounding sphere (`mesh.bounds`
83
+ * through its instance matrix) lies outside any plane of `frustum` is skipped before the sort
84
+ * and counted in `renderer.stats.culled`. Off for `ortho2d` (the 2D path is untouched), on
85
+ * for `perspective`. Sprites and meshes without bounds are never culled.
86
+ */
87
+ cull: boolean;
88
+ /**
89
+ * Scales the projected size the renderer picks `MeshLod` levels by (ws/render-5): above 1
90
+ * keeps finer levels farther out, below 1 drops to coarser ones sooner. Default 1.
91
+ */
92
+ lodBias: number;
93
+ /**
94
+ * Last frame's unjittered `viewProjection`, copied by the renderer at the start of each view
95
+ * it draws this camera through (`recordHistory`), before the camera is read; identity until
96
+ * the first frame. What a reprojecting post pass (TAA, motion blur) reads through
97
+ * `PostInputs.view.previousViewProj`. Read-only (`Float32Array(16)`).
98
+ */
99
+ readonly previousViewProj: Mat4;
100
+ /** Last frame's `view`, kept like `previousViewProj`. Read-only. */
101
+ readonly previousView: Mat4;
102
+ private readonly viewM;
103
+ /** `viewProjM` before the jitter offset (what `previousViewProj` and the frustum use). */
104
+ private readonly steadyViewProjM;
105
+ /** What the last `recordHistory` saw: the matrices the next one moves into `previous*`. */
106
+ private readonly historyViewProjM;
107
+ private readonly historyViewM;
108
+ private hasHistory;
109
+ /** Sub-pixel jitter in pixels of the current target (`setJitter`). */
110
+ private jitterX;
111
+ private jitterY;
112
+ /** The target size the jitter is measured against; 0 × 0 (the default) applies none. */
113
+ private jitterW;
114
+ private jitterH;
115
+ private readonly projM;
116
+ private readonly viewProjM;
117
+ private readonly invViewProjM;
118
+ private readonly invViewM;
119
+ private readonly pos;
120
+ /** 'view2d': the view comes from x/y/zoom/rotation; 'custom': from setView/lookAt. */
121
+ private viewSource;
122
+ /** 'ortho2d': design-space ortho; 'custom': setProjection/setPerspective. */
123
+ private projSource;
124
+ private designW;
125
+ private designH;
126
+ private _x;
127
+ private _y;
128
+ private _zoom;
129
+ private _rotation;
130
+ private dirty;
131
+ private invDirty;
132
+ private posDirty;
133
+ private frustumDirty;
134
+ private readonly frustumM;
135
+ /** 1 world unit = 1 design px over a `designW × designH` space, origin top-left, y down. */
136
+ static ortho2d(designW: number, designH: number): Camera;
137
+ /**
138
+ * Perspective camera at the origin looking down -z. `fovY` in radians; `far` may be
139
+ * `Infinity`. Depth test, depth write and frustum culling are on (`setPerspective` sets them).
140
+ */
141
+ static perspective(fovY: number, aspect: number, near: number, far: number): Camera;
142
+ /**
143
+ * Switch to the 2D preset over `designW × designH` (resets `screen` to that space; keeps the
144
+ * 2D controls). Depth flags are left as they are.
145
+ */
146
+ setOrtho2d(designW: number, designH: number): this;
147
+ /**
148
+ * Replace the projection with a perspective one (radians; `far` may be `Infinity`) and
149
+ * configure the camera the way `Camera.perspective` does: `depthTest`, `depthWrite` and
150
+ * `cull` on (ws/camera-ergo). The view is untouched, so `cam.setPerspective(...)` on a
151
+ * default camera renders like `Camera.perspective(...)`; `setProjection` stays raw.
152
+ */
153
+ setPerspective(fovY: number, aspect: number, near: number, far: number): this;
154
+ /** Replace the projection matrix (copied). Raw: no depth or cull flag changes. */
155
+ setProjection(m: ArrayLike<number>): this;
156
+ /** Replace the view matrix (copied). The 2D controls stop applying until `setOrtho2d`. */
157
+ setView(m: ArrayLike<number>): this;
158
+ /**
159
+ * Replace the view matrix (copied); the same as `setView`, named for an XR eye whose
160
+ * `XRView.transform.inverse.matrix` is handed over as-is each frame (ws/xr).
161
+ */
162
+ setViewMatrix(m: ArrayLike<number>): this;
163
+ /** Place the camera at `eye` looking at `target` (`up` defaults to +y). */
164
+ lookAt(eye: ArrayLike<number>, target: ArrayLike<number>, up?: ArrayLike<number>): this;
165
+ /** 2D pan (design px): the world point at the view centre is `designW/2 + x`. */
166
+ get x(): number;
167
+ set x(v: number);
168
+ /** 2D pan (design px). */
169
+ get y(): number;
170
+ set y(v: number);
171
+ /** 2D zoom about the view centre. */
172
+ get zoom(): number;
173
+ set zoom(v: number);
174
+ /** 2D view rotation about the view centre, radians (the view turns clockwise, the world counter-clockwise). */
175
+ get rotation(): number;
176
+ set rotation(v: number);
177
+ /**
178
+ * Frame the world rect `rect` (z = 0) into `viewport` (screen units; default `screen`),
179
+ * contained and centred, with rotation reset. Needs the 2D view (`ortho2d`); for the
180
+ * world space a layout leaves, convert `layout.freeRect` to screen units first.
181
+ */
182
+ fitRect(rect: CameraRect, viewport?: CameraRect): this;
183
+ /**
184
+ * `fitRect` into the part of the surface a layout leaves free: `free` is in CSS px relative to
185
+ * the surface's parent (`ui.layout.freeRect`), `surface.rect` is where the canvas sits in the
186
+ * same CSS px (`Surface.rect`); the free rect is mapped onto `screen` (its share of the canvas)
187
+ * and the world rect is fitted into that. Allocates nothing.
188
+ */
189
+ fitFreeRect(rect: CameraRect, free: CameraRect, surface: {
190
+ readonly rect: CameraRect;
191
+ }): this;
192
+ /** World → view. Read-only; change it with the 2D controls, `setView` or `lookAt`. */
193
+ get view(): Mat4;
194
+ /** View → clip. Read-only; change it with a preset or `setProjection`. */
195
+ get projection(): Mat4;
196
+ /** World → clip (`projection × view`). Read-only. */
197
+ get viewProjection(): Mat4;
198
+ /** The eye position in world space (from the inverse view). Read-only. */
199
+ get position(): Float32Array;
200
+ /**
201
+ * Clip → world (`viewProjection⁻¹`), column-major like `viewProj`; cached and recomputed
202
+ * lazily after any view or projection change. Identity when `viewProjection` is singular.
203
+ * Read-only.
204
+ */
205
+ get invViewProj(): Mat4;
206
+ /**
207
+ * Offset the projection by `(x, y)` pixels of the current target (a TAA sample sequence):
208
+ * `viewProjection` and `invViewProj` carry it, `previousViewProj` and the frustum never do.
209
+ * Zero by default. The renderer applies it only when its post processor declares
210
+ * `wantsJitter` (and never through the 2D `ortho2d` projection), so a page without one
211
+ * draws exactly as before. +x moves the image right, +y down.
212
+ */
213
+ setJitter(x: number, y: number): this;
214
+ /** `setJitter(0, 0)`. */
215
+ clearJitter(): this;
216
+ /** The jitter set by `setJitter`, in pixels: `[x, y]`. */
217
+ get jitter(): [number, number];
218
+ /** `jitter` into `out` (no allocation): the pixels applied, `0, 0` when not applied. */
219
+ getJitter(out: [number, number] | Float32Array): void;
220
+ /**
221
+ * The target size the jitter applies against (0 × 0 ignores it). Engine-internal: the
222
+ * renderer sets it per view from the viewport when the post processor wants jitter.
223
+ */
224
+ setJitterTarget(width: number, height: number): void;
225
+ /** The clip-space offset the current jitter adds: `[dx, dy]` (0 when not applied). */
226
+ jitterClip(out: [number, number] | Float32Array): void;
227
+ /**
228
+ * Move the (unjittered) `viewProjection` and `view` seen by the last call into
229
+ * `previousViewProj` and `previousView`, and remember the current ones for the next call.
230
+ * Engine-internal: the renderer calls it at the start of each view, before reading the
231
+ * camera, so a post pass sees last frame's matrices beside this frame's. The first call
232
+ * (a camera's first view) sets previous = current: no motion.
233
+ */
234
+ recordHistory(): void;
235
+ /** Is a draw with layer mask `mask` seen by this camera? */
236
+ sees(mask: number): boolean;
237
+ /**
238
+ * View-space depth of a world point: its distance along the view axis, positive in front of
239
+ * the eye. Reads the view matrix's third row and negates it (`perspective` and `lookAt`
240
+ * look down -z). `ortho2d` looks down +z, so there it is `-worldZ` at rest. Allocates nothing.
241
+ */
242
+ viewZ(x: number, y: number, z?: number): number;
243
+ /**
244
+ * `worldToScreen` for many points without the per-point object: reads `count` points from
245
+ * `points` (x, y, z at `i * stride`; `stride` ≥ 3, default 3, `count` defaults to what fits)
246
+ * and writes screen x, screen y and clip depth as 3 floats per point at `out[i * 3]`, the
247
+ * same values `worldToScreen` returns. Returns how many landed inside the viewport: in
248
+ * front of the eye, within `screen` and with clip depth in 0..1. Allocates nothing.
249
+ */
250
+ projectMany(points: ArrayLike<number>, out: Float32Array, count?: number, stride?: number): number;
251
+ /**
252
+ * The eight world-space corners of the view frustum into `out` (24 floats, x y z each):
253
+ * near plane first, then far, each as bottom-left, bottom-right, top-right, top-left in
254
+ * clip space (clip depth 0 then 1, through `invViewProj`). With `far = Infinity` the far
255
+ * corners have no finite position (w = 0) and come back as the undivided homogeneous
256
+ * coordinates, which are directions. Allocates nothing.
257
+ */
258
+ frustumCorners(out: Float32Array): Float32Array;
259
+ /**
260
+ * World point → screen units (see `screen`); `z` of the result is clip depth (0 near, 1
261
+ * far). Pass `out` to avoid allocating.
262
+ */
263
+ worldToScreen(x: number, y: number, z?: number, out?: CameraPoint): CameraPoint;
264
+ /**
265
+ * Screen point (screen units) → world, at clip depth `depth` (0 = near plane, which for
266
+ * `ortho2d` is world z = -ORTHO2D_HALF_DEPTH; 0.5 is z = 0). Call it at depth 0 and 1 for
267
+ * a pick ray. Pass `out` to avoid allocating.
268
+ */
269
+ screenToWorld(sx: number, sy: number, depth?: number, out?: CameraPoint): CameraPoint;
270
+ /**
271
+ * Screen point (screen units) → the world point on the plane z = 0 under it (ws/api-render),
272
+ * the 2D pick: a tap on an `ortho2d` or tilted camera lands on the sprites' plane with no
273
+ * depth to choose. A ray parallel to the plane gives the near-plane point. Writes `out`.
274
+ */
275
+ screenToWorld(sx: number, sy: number, out: CameraPoint): CameraPoint;
276
+ /** The pick ray through a screen point, met with the plane z = 0. No allocation. */
277
+ private screenToPlane;
278
+ /**
279
+ * Write the WGSL `EngineCamera` block (`CAMERA_BLOCK_FLOATS` floats) at float offset `o`:
280
+ * `view`, `proj`, `view_proj`, `camera_pos`, `viewport` (target px: x, y, w, h),
281
+ * `view_index`, at `CAMERA_INV_VIEW_PROJ_OFFSET` `inv_view_proj`, then `prev_view_proj`,
282
+ * `prev_view` and `jitter` (clip dx, dy, pixel x, y). `u32` must view the same buffer as
283
+ * `f32`. Engine-internal.
284
+ */
285
+ writeBlock(f32: Float32Array, u32: Uint32Array, o: number, viewport: CameraRect, viewIndex?: number): void;
286
+ /**
287
+ * The six frustum planes of `viewProjection` as `FRUSTUM_FLOATS` (24) floats: left, right,
288
+ * bottom, top, near, far, each `(a, b, c, d)` with a unit normal pointing inside, so a point
289
+ * `p` is inside when `a·x + b·y + c·z + d >= 0` on every plane and a sphere of radius `r`
290
+ * is outside when that is `< -r` on any. Cached like the matrices. An infinite far plane
291
+ * (`far = Infinity`) is all zeros but `d > 0`, which never rejects. Read-only.
292
+ */
293
+ get frustum(): Float32Array;
294
+ /**
295
+ * Is a world-space sphere at least partly inside the frustum? `radius` 0 tests a point. Pure
296
+ * plane tests; nothing allocates.
297
+ */
298
+ seesSphere(x: number, y: number, z: number, radius: number): boolean;
299
+ private touch2d;
300
+ private touch;
301
+ private update;
302
+ }