@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.
- package/CHANGELOG.md +390 -0
- package/LICENSE +21 -0
- package/README.md +333 -2
- package/dist/analytics/analytics.d.ts +80 -0
- package/dist/analytics/analytics.js +129 -0
- package/dist/analytics/index.d.ts +1 -0
- package/dist/analytics/index.js +1 -0
- package/dist/anim/aim.d.ts +43 -0
- package/dist/anim/aim.js +157 -0
- package/dist/anim/clip.d.ts +98 -0
- package/dist/anim/clip.js +282 -0
- package/dist/anim/compress.d.ts +65 -0
- package/dist/anim/compress.js +339 -0
- package/dist/anim/foot-ik.d.ts +74 -0
- package/dist/anim/foot-ik.js +241 -0
- package/dist/anim/graph.d.ts +153 -0
- package/dist/anim/graph.js +532 -0
- package/dist/anim/ik.d.ts +105 -0
- package/dist/anim/ik.js +435 -0
- package/dist/anim/index.d.ts +36 -0
- package/dist/anim/index.js +21 -0
- package/dist/anim/match.d.ts +66 -0
- package/dist/anim/match.js +153 -0
- package/dist/anim/mixer.d.ts +113 -0
- package/dist/anim/mixer.js +314 -0
- package/dist/anim/morph.d.ts +41 -0
- package/dist/anim/morph.js +94 -0
- package/dist/anim/pose.d.ts +74 -0
- package/dist/anim/pose.js +254 -0
- package/dist/anim/quat.d.ts +44 -0
- package/dist/anim/quat.js +187 -0
- package/dist/anim/retarget.d.ts +97 -0
- package/dist/anim/retarget.js +366 -0
- package/dist/anim/root-motion.d.ts +44 -0
- package/dist/anim/root-motion.js +224 -0
- package/dist/anim/skin-pose.d.ts +39 -0
- package/dist/anim/skin-pose.js +53 -0
- package/dist/anim/socket.d.ts +47 -0
- package/dist/anim/socket.js +84 -0
- package/dist/anim/spring-chain.d.ts +73 -0
- package/dist/anim/spring-chain.js +294 -0
- package/dist/assets/atlas.d.ts +90 -0
- package/dist/assets/atlas.js +212 -0
- package/dist/assets/baked.d.ts +33 -0
- package/dist/assets/baked.js +38 -0
- package/dist/assets/bundle.d.ts +88 -0
- package/dist/assets/bundle.js +464 -0
- package/dist/assets/cache.d.ts +56 -0
- package/dist/assets/cache.js +123 -0
- package/dist/assets/gltf-load.d.ts +252 -0
- package/dist/assets/gltf-load.js +661 -0
- package/dist/assets/gltf-skin.d.ts +36 -0
- package/dist/assets/gltf-skin.js +109 -0
- package/dist/assets/gltf.d.ts +706 -0
- package/dist/assets/gltf.js +1376 -0
- package/dist/assets/index.d.ts +20 -0
- package/dist/assets/index.js +10 -0
- package/dist/assets/ktx2.d.ts +71 -0
- package/dist/assets/ktx2.js +213 -0
- package/dist/assets/manifest.d.ts +79 -0
- package/dist/assets/manifest.js +7 -0
- package/dist/assets/meshopt.d.ts +23 -0
- package/dist/assets/meshopt.js +403 -0
- package/dist/audio/audio.d.ts +733 -0
- package/dist/audio/audio.js +2013 -0
- package/dist/audio/dsp.d.ts +61 -0
- package/dist/audio/dsp.js +159 -0
- package/dist/audio/duck.d.ts +44 -0
- package/dist/audio/duck.js +101 -0
- package/dist/audio/envelope.d.ts +53 -0
- package/dist/audio/envelope.js +106 -0
- package/dist/audio/index.d.ts +13 -0
- package/dist/audio/index.js +14 -0
- package/dist/audio/music.d.ts +113 -0
- package/dist/audio/music.js +548 -0
- package/dist/audio/occlusion.d.ts +55 -0
- package/dist/audio/occlusion.js +61 -0
- package/dist/audio/persist.d.ts +23 -0
- package/dist/audio/persist.js +27 -0
- package/dist/audio/recipes.d.ts +55 -0
- package/dist/audio/recipes.js +227 -0
- package/dist/audio/send.d.ts +41 -0
- package/dist/audio/send.js +118 -0
- package/dist/audio/sprites.d.ts +59 -0
- package/dist/audio/sprites.js +43 -0
- package/dist/audio/synth.d.ts +103 -0
- package/dist/audio/synth.js +197 -0
- package/dist/audio/variations.d.ts +25 -0
- package/dist/audio/variations.js +55 -0
- package/dist/audio/zones.d.ts +100 -0
- package/dist/audio/zones.js +167 -0
- package/dist/core/detached-surface.d.ts +44 -0
- package/dist/core/detached-surface.js +104 -0
- package/dist/core/events.d.ts +24 -0
- package/dist/core/events.js +43 -0
- package/dist/core/game.d.ts +409 -0
- package/dist/core/game.js +530 -0
- package/dist/core/hash.d.ts +24 -0
- package/dist/core/hash.js +49 -0
- package/dist/core/index.d.ts +17 -0
- package/dist/core/index.js +9 -0
- package/dist/core/loop.d.ts +113 -0
- package/dist/core/loop.js +185 -0
- package/dist/core/math.d.ts +58 -0
- package/dist/core/math.js +210 -0
- package/dist/core/noise.d.ts +40 -0
- package/dist/core/noise.js +247 -0
- package/dist/core/pool.d.ts +42 -0
- package/dist/core/pool.js +85 -0
- package/dist/core/random.d.ts +61 -0
- package/dist/core/random.js +199 -0
- package/dist/core/scene.d.ts +79 -0
- package/dist/core/scene.js +195 -0
- package/dist/core/timer.d.ts +66 -0
- package/dist/core/timer.js +286 -0
- package/dist/fx/billboard-wgsl.d.ts +29 -0
- package/dist/fx/billboard-wgsl.js +158 -0
- package/dist/fx/billboard.d.ts +249 -0
- package/dist/fx/billboard.js +702 -0
- package/dist/fx/debug-draw.d.ts +127 -0
- package/dist/fx/debug-draw.js +523 -0
- package/dist/fx/debug-wgsl.d.ts +7 -0
- package/dist/fx/debug-wgsl.js +32 -0
- package/dist/fx/decals-wgsl.d.ts +15 -0
- package/dist/fx/decals-wgsl.js +173 -0
- package/dist/fx/decals.d.ts +216 -0
- package/dist/fx/decals.js +607 -0
- package/dist/fx/effect.d.ts +129 -0
- package/dist/fx/effect.js +349 -0
- package/dist/fx/effects/hit-spark.json +48 -0
- package/dist/fx/effects/index.d.ts +8 -0
- package/dist/fx/effects/index.js +9 -0
- package/dist/fx/effects/magic-aura.json +47 -0
- package/dist/fx/effects/smoke-puff.json +34 -0
- package/dist/fx/emit-surface.d.ts +40 -0
- package/dist/fx/emit-surface.js +124 -0
- package/dist/fx/flicker.d.ts +30 -0
- package/dist/fx/flicker.js +42 -0
- package/dist/fx/index.d.ts +31 -0
- package/dist/fx/index.js +20 -0
- package/dist/fx/particles-wgsl.d.ts +57 -0
- package/dist/fx/particles-wgsl.js +828 -0
- package/dist/fx/particles.d.ts +566 -0
- package/dist/fx/particles.js +1533 -0
- package/dist/fx/random.d.ts +15 -0
- package/dist/fx/random.js +20 -0
- package/dist/fx/sky-wgsl.d.ts +23 -0
- package/dist/fx/sky-wgsl.js +127 -0
- package/dist/fx/sky.d.ts +96 -0
- package/dist/fx/sky.js +175 -0
- package/dist/fx/text-atlas.d.ts +143 -0
- package/dist/fx/text-atlas.js +327 -0
- package/dist/fx/trail-wgsl.d.ts +11 -0
- package/dist/fx/trail-wgsl.js +42 -0
- package/dist/fx/trail.d.ts +194 -0
- package/dist/fx/trail.js +555 -0
- package/dist/fx/water-wgsl.d.ts +34 -0
- package/dist/fx/water-wgsl.js +197 -0
- package/dist/fx/water.d.ts +176 -0
- package/dist/fx/water.js +371 -0
- package/dist/geom/collide/bvh.d.ts +151 -0
- package/dist/geom/collide/bvh.js +493 -0
- package/dist/geom/collide/debug.d.ts +14 -0
- package/dist/geom/collide/debug.js +74 -0
- package/dist/geom/collide/grid.d.ts +26 -0
- package/dist/geom/collide/grid.js +91 -0
- package/dist/geom/collide/index.d.ts +8 -0
- package/dist/geom/collide/index.js +8 -0
- package/dist/geom/collide/queries.d.ts +70 -0
- package/dist/geom/collide/queries.js +583 -0
- package/dist/geom/collide/serialize.d.ts +14 -0
- package/dist/geom/collide/serialize.js +145 -0
- package/dist/geom/collide/shapes.d.ts +161 -0
- package/dist/geom/collide/shapes.js +686 -0
- package/dist/geom/collide/slide.d.ts +66 -0
- package/dist/geom/collide/slide.js +375 -0
- package/dist/geom/collide/tile-slide.d.ts +88 -0
- package/dist/geom/collide/tile-slide.js +255 -0
- package/dist/geom/geometry.d.ts +95 -0
- package/dist/geom/geometry.js +322 -0
- package/dist/geom/heightfield.d.ts +72 -0
- package/dist/geom/heightfield.js +295 -0
- package/dist/geom/hull.d.ts +27 -0
- package/dist/geom/hull.js +279 -0
- package/dist/geom/index.d.ts +35 -0
- package/dist/geom/index.js +23 -0
- package/dist/geom/iso.d.ts +74 -0
- package/dist/geom/iso.js +89 -0
- package/dist/geom/lod.d.ts +29 -0
- package/dist/geom/lod.js +27 -0
- package/dist/geom/ops.d.ts +47 -0
- package/dist/geom/ops.js +285 -0
- package/dist/geom/primitives.d.ts +97 -0
- package/dist/geom/primitives.js +359 -0
- package/dist/geom/shapes.d.ts +43 -0
- package/dist/geom/shapes.js +88 -0
- package/dist/geom/simplify.d.ts +38 -0
- package/dist/geom/simplify.js +519 -0
- package/dist/geom/split.d.ts +37 -0
- package/dist/geom/split.js +413 -0
- package/dist/geom/sweep.d.ts +83 -0
- package/dist/geom/sweep.js +534 -0
- package/dist/geom/tangents.d.ts +16 -0
- package/dist/geom/tangents.js +124 -0
- package/dist/geom/triangulate.d.ts +19 -0
- package/dist/geom/triangulate.js +147 -0
- package/dist/host/default.d.ts +10 -0
- package/dist/host/default.js +10 -0
- package/dist/host/index.d.ts +4 -0
- package/dist/host/index.js +3 -0
- package/dist/host/types.d.ts +144 -0
- package/dist/host/types.js +1 -0
- package/dist/host/web-links.d.ts +38 -0
- package/dist/host/web-links.js +110 -0
- package/dist/host/web.d.ts +30 -0
- package/dist/host/web.js +216 -0
- package/dist/host/xr.d.ts +24 -0
- package/dist/host/xr.js +59 -0
- package/dist/i18n/i18n.d.ts +59 -0
- package/dist/i18n/i18n.js +241 -0
- package/dist/i18n/index.d.ts +3 -0
- package/dist/i18n/index.js +3 -0
- package/dist/i18n/message.d.ts +72 -0
- package/dist/i18n/message.js +369 -0
- package/dist/i18n/negotiate.d.ts +17 -0
- package/dist/i18n/negotiate.js +58 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +1 -0
- package/dist/input/bindings.d.ts +31 -0
- package/dist/input/bindings.js +141 -0
- package/dist/input/clock.d.ts +44 -0
- package/dist/input/clock.js +49 -0
- package/dist/input/follow.d.ts +133 -0
- package/dist/input/follow.js +218 -0
- package/dist/input/gestures.d.ts +281 -0
- package/dist/input/gestures.js +662 -0
- package/dist/input/glyphs.d.ts +35 -0
- package/dist/input/glyphs.js +216 -0
- package/dist/input/gyro.d.ts +85 -0
- package/dist/input/gyro.js +140 -0
- package/dist/input/index.d.ts +19 -0
- package/dist/input/index.js +16 -0
- package/dist/input/input.d.ts +543 -0
- package/dist/input/input.js +1492 -0
- package/dist/input/look.d.ts +327 -0
- package/dist/input/look.js +681 -0
- package/dist/input/magnify.d.ts +177 -0
- package/dist/input/magnify.js +131 -0
- package/dist/input/pointer-dispatch.d.ts +138 -0
- package/dist/input/pointer-dispatch.js +180 -0
- package/dist/input/pointer-router.d.ts +204 -0
- package/dist/input/pointer-router.js +533 -0
- package/dist/input/pointer-sources.d.ts +164 -0
- package/dist/input/pointer-sources.js +306 -0
- package/dist/input/rays.d.ts +138 -0
- package/dist/input/rays.js +615 -0
- package/dist/input/record.d.ts +209 -0
- package/dist/input/record.js +601 -0
- package/dist/input/touch-zones.d.ts +147 -0
- package/dist/input/touch-zones.js +300 -0
- package/dist/input/types.d.ts +158 -0
- package/dist/input/types.js +1 -0
- package/dist/input/xr-source.d.ts +53 -0
- package/dist/input/xr-source.js +164 -0
- package/dist/nav/astar.d.ts +45 -0
- package/dist/nav/astar.js +182 -0
- package/dist/nav/corridor.d.ts +40 -0
- package/dist/nav/corridor.js +95 -0
- package/dist/nav/crowd.d.ts +94 -0
- package/dist/nav/crowd.js +624 -0
- package/dist/nav/flow.d.ts +61 -0
- package/dist/nav/flow.js +193 -0
- package/dist/nav/grid.d.ts +108 -0
- package/dist/nav/grid.js +210 -0
- package/dist/nav/heap.d.ts +22 -0
- package/dist/nav/heap.js +92 -0
- package/dist/nav/index.d.ts +37 -0
- package/dist/nav/index.js +19 -0
- package/dist/nav/mesh/areas.d.ts +44 -0
- package/dist/nav/mesh/areas.js +98 -0
- package/dist/nav/mesh/bake-options.d.ts +33 -0
- package/dist/nav/mesh/bake-options.js +76 -0
- package/dist/nav/mesh/contour.d.ts +22 -0
- package/dist/nav/mesh/contour.js +323 -0
- package/dist/nav/mesh/flow3.d.ts +35 -0
- package/dist/nav/mesh/flow3.js +229 -0
- package/dist/nav/mesh/links.d.ts +38 -0
- package/dist/nav/mesh/links.js +72 -0
- package/dist/nav/mesh/mesh-path.d.ts +152 -0
- package/dist/nav/mesh/mesh-path.js +643 -0
- package/dist/nav/mesh/mesh-reach.d.ts +78 -0
- package/dist/nav/mesh/mesh-reach.js +450 -0
- package/dist/nav/mesh/navmesh.d.ts +117 -0
- package/dist/nav/mesh/navmesh.js +647 -0
- package/dist/nav/mesh/polymesh.d.ts +24 -0
- package/dist/nav/mesh/polymesh.js +384 -0
- package/dist/nav/mesh/regions.d.ts +12 -0
- package/dist/nav/mesh/regions.js +367 -0
- package/dist/nav/mesh/serialize.d.ts +13 -0
- package/dist/nav/mesh/serialize.js +197 -0
- package/dist/nav/mesh/voxelize.d.ts +111 -0
- package/dist/nav/mesh/voxelize.js +552 -0
- package/dist/nav/obstacles.d.ts +75 -0
- package/dist/nav/obstacles.js +294 -0
- package/dist/nav/path.d.ts +59 -0
- package/dist/nav/path.js +177 -0
- package/dist/nav/query-queue.d.ts +46 -0
- package/dist/nav/query-queue.js +308 -0
- package/dist/nav/reach.d.ts +53 -0
- package/dist/nav/reach.js +148 -0
- package/dist/nav/steer.d.ts +36 -0
- package/dist/nav/steer.js +78 -0
- package/dist/platform/boot.d.ts +28 -0
- package/dist/platform/boot.js +43 -0
- package/dist/platform/device-mode.d.ts +40 -0
- package/dist/platform/device-mode.js +104 -0
- package/dist/platform/device.d.ts +31 -0
- package/dist/platform/device.js +91 -0
- package/dist/platform/environment.d.ts +42 -0
- package/dist/platform/environment.js +82 -0
- package/dist/platform/gpu.d.ts +40 -0
- package/dist/platform/gpu.js +57 -0
- package/dist/platform/index.d.ts +18 -0
- package/dist/platform/index.js +10 -0
- package/dist/platform/letterbox.d.ts +43 -0
- package/dist/platform/letterbox.js +57 -0
- package/dist/platform/links.d.ts +20 -0
- package/dist/platform/links.js +43 -0
- package/dist/platform/screens.d.ts +36 -0
- package/dist/platform/screens.js +138 -0
- package/dist/platform/surface.d.ts +72 -0
- package/dist/platform/surface.js +157 -0
- package/dist/platform/xr-fake.d.ts +168 -0
- package/dist/platform/xr-fake.js +434 -0
- package/dist/platform/xr-surface.d.ts +120 -0
- package/dist/platform/xr-surface.js +214 -0
- package/dist/platform/xr-types.d.ts +262 -0
- package/dist/post/ao.d.ts +12 -0
- package/dist/post/ao.js +136 -0
- package/dist/post/blend.d.ts +27 -0
- package/dist/post/blend.js +129 -0
- package/dist/post/depth-pass.d.ts +43 -0
- package/dist/post/depth-pass.js +118 -0
- package/dist/post/dof.d.ts +1 -0
- package/dist/post/dof.js +66 -0
- package/dist/post/exposure.d.ts +80 -0
- package/dist/post/exposure.js +322 -0
- package/dist/post/index.d.ts +12 -0
- package/dist/post/index.js +11 -0
- package/dist/post/lens-dirt.d.ts +13 -0
- package/dist/post/lens-dirt.js +91 -0
- package/dist/post/lut.d.ts +19 -0
- package/dist/post/lut.js +50 -0
- package/dist/post/motion-blur.d.ts +9 -0
- package/dist/post/motion-blur.js +78 -0
- package/dist/post/post-stack.d.ts +302 -0
- package/dist/post/post-stack.js +1137 -0
- package/dist/post/settings.d.ts +485 -0
- package/dist/post/settings.js +416 -0
- package/dist/post/shaders.d.ts +25 -0
- package/dist/post/shaders.js +410 -0
- package/dist/post/ssr.d.ts +16 -0
- package/dist/post/ssr.js +155 -0
- package/dist/post/taa.d.ts +74 -0
- package/dist/post/taa.js +235 -0
- package/dist/post/white-balance.d.ts +25 -0
- package/dist/post/white-balance.js +98 -0
- package/dist/render/bindings.d.ts +98 -0
- package/dist/render/bindings.js +281 -0
- package/dist/render/blend.d.ts +13 -0
- package/dist/render/blend.js +26 -0
- package/dist/render/camera-2d.d.ts +72 -0
- package/dist/render/camera-2d.js +92 -0
- package/dist/render/camera.d.ts +302 -0
- package/dist/render/camera.js +671 -0
- package/dist/render/color.d.ts +16 -0
- package/dist/render/color.js +41 -0
- package/dist/render/compressed.d.ts +104 -0
- package/dist/render/compressed.js +248 -0
- package/dist/render/diagnostics.d.ts +15 -0
- package/dist/render/diagnostics.js +43 -0
- package/dist/render/dynamic-resolution.d.ts +70 -0
- package/dist/render/dynamic-resolution.js +126 -0
- package/dist/render/fake-gpu.d.ts +204 -0
- package/dist/render/fake-gpu.js +426 -0
- package/dist/render/flipbook.d.ts +56 -0
- package/dist/render/flipbook.js +87 -0
- package/dist/render/frame.d.ts +278 -0
- package/dist/render/frame.js +174 -0
- package/dist/render/fullscreen.d.ts +54 -0
- package/dist/render/fullscreen.js +91 -0
- package/dist/render/gpu-timer.d.ts +73 -0
- package/dist/render/gpu-timer.js +186 -0
- package/dist/render/index.d.ts +53 -0
- package/dist/render/index.js +29 -0
- package/dist/render/instance-list.d.ts +185 -0
- package/dist/render/instance-list.js +547 -0
- package/dist/render/lights.d.ts +181 -0
- package/dist/render/lights.js +233 -0
- package/dist/render/lod.d.ts +54 -0
- package/dist/render/lod.js +52 -0
- package/dist/render/material.d.ts +165 -0
- package/dist/render/material.js +292 -0
- package/dist/render/mesh.d.ts +284 -0
- package/dist/render/mesh.js +472 -0
- package/dist/render/mipmap.d.ts +16 -0
- package/dist/render/mipmap.js +121 -0
- package/dist/render/parallax.d.ts +50 -0
- package/dist/render/parallax.js +47 -0
- package/dist/render/pbr-wgsl.d.ts +31 -0
- package/dist/render/pbr-wgsl.js +119 -0
- package/dist/render/ping-pong.d.ts +42 -0
- package/dist/render/ping-pong.js +74 -0
- package/dist/render/renderer.d.ts +741 -0
- package/dist/render/renderer.js +2486 -0
- package/dist/render/scene-pipelines.d.ts +44 -0
- package/dist/render/scene-pipelines.js +92 -0
- package/dist/render/scene-target.d.ts +170 -0
- package/dist/render/scene-target.js +450 -0
- package/dist/render/shadow.d.ts +74 -0
- package/dist/render/shadow.js +208 -0
- package/dist/render/skin.d.ts +112 -0
- package/dist/render/skin.js +240 -0
- package/dist/render/snapshot.d.ts +36 -0
- package/dist/render/snapshot.js +34 -0
- package/dist/render/standard.d.ts +162 -0
- package/dist/render/standard.js +263 -0
- package/dist/render/texture.d.ts +142 -0
- package/dist/render/texture.js +228 -0
- package/dist/render/tile-layer.d.ts +110 -0
- package/dist/render/tile-layer.js +304 -0
- package/dist/render/transform.d.ts +115 -0
- package/dist/render/transform.js +318 -0
- package/dist/render/wgsl.d.ts +131 -0
- package/dist/render/wgsl.js +528 -0
- package/dist/save/codec.d.ts +49 -0
- package/dist/save/codec.js +169 -0
- package/dist/save/index.d.ts +8 -0
- package/dist/save/index.js +8 -0
- package/dist/save/journal.d.ts +24 -0
- package/dist/save/journal.js +102 -0
- package/dist/save/migrate.d.ts +15 -0
- package/dist/save/migrate.js +37 -0
- package/dist/save/schema.d.ts +72 -0
- package/dist/save/schema.js +154 -0
- package/dist/save/settings.d.ts +28 -0
- package/dist/save/settings.js +59 -0
- package/dist/save/slots.d.ts +56 -0
- package/dist/save/slots.js +200 -0
- package/dist/save/storage.d.ts +35 -0
- package/dist/save/storage.js +62 -0
- package/dist/save/store.d.ts +114 -0
- package/dist/save/store.js +269 -0
- package/dist/testing/fake-host.d.ts +103 -0
- package/dist/testing/fake-host.js +163 -0
- package/dist/testing/fixed-clock.d.ts +25 -0
- package/dist/testing/fixed-clock.js +30 -0
- package/dist/testing/index.d.ts +4 -0
- package/dist/testing/index.js +5 -0
- package/dist/testing/test-game.d.ts +76 -0
- package/dist/testing/test-game.js +92 -0
- package/dist/tween/ease.d.ts +77 -0
- package/dist/tween/ease.js +192 -0
- package/dist/tween/index.d.ts +8 -0
- package/dist/tween/index.js +7 -0
- package/dist/tween/timeline.d.ts +78 -0
- package/dist/tween/timeline.js +269 -0
- package/dist/tween/tween.d.ts +168 -0
- package/dist/tween/tween.js +320 -0
- package/dist/ui/anchor.d.ts +206 -0
- package/dist/ui/anchor.js +307 -0
- package/dist/ui/caption.d.ts +122 -0
- package/dist/ui/caption.js +286 -0
- package/dist/ui/cursor.d.ts +105 -0
- package/dist/ui/cursor.js +261 -0
- package/dist/ui/dom.d.ts +30 -0
- package/dist/ui/dom.js +92 -0
- package/dist/ui/floats.d.ts +86 -0
- package/dist/ui/floats.js +260 -0
- package/dist/ui/hud.d.ts +198 -0
- package/dist/ui/hud.js +431 -0
- package/dist/ui/index.d.ts +37 -0
- package/dist/ui/index.js +34 -0
- package/dist/ui/inventory-card.d.ts +52 -0
- package/dist/ui/inventory-card.js +173 -0
- package/dist/ui/inventory-context.d.ts +29 -0
- package/dist/ui/inventory-context.js +125 -0
- package/dist/ui/inventory-drag.d.ts +63 -0
- package/dist/ui/inventory-drag.js +394 -0
- package/dist/ui/inventory-grid.d.ts +66 -0
- package/dist/ui/inventory-grid.js +625 -0
- package/dist/ui/inventory-radial.d.ts +39 -0
- package/dist/ui/inventory-radial.js +168 -0
- package/dist/ui/inventory.d.ts +128 -0
- package/dist/ui/inventory.js +154 -0
- package/dist/ui/layout.d.ts +356 -0
- package/dist/ui/layout.js +856 -0
- package/dist/ui/link.d.ts +64 -0
- package/dist/ui/link.js +155 -0
- package/dist/ui/loading.d.ts +40 -0
- package/dist/ui/loading.js +157 -0
- package/dist/ui/loupe.d.ts +74 -0
- package/dist/ui/loupe.js +164 -0
- package/dist/ui/menu-nav.d.ts +33 -0
- package/dist/ui/menu-nav.js +28 -0
- package/dist/ui/minimap-canvas.d.ts +145 -0
- package/dist/ui/minimap-canvas.js +460 -0
- package/dist/ui/notify.d.ts +40 -0
- package/dist/ui/notify.js +141 -0
- package/dist/ui/orb.d.ts +53 -0
- package/dist/ui/orb.js +304 -0
- package/dist/ui/overlay.d.ts +213 -0
- package/dist/ui/overlay.js +394 -0
- package/dist/ui/padnav.d.ts +53 -0
- package/dist/ui/padnav.js +146 -0
- package/dist/ui/perf.d.ts +130 -0
- package/dist/ui/perf.js +329 -0
- package/dist/ui/rotate-card.d.ts +54 -0
- package/dist/ui/rotate-card.js +97 -0
- package/dist/ui/stack.d.ts +128 -0
- package/dist/ui/stack.js +312 -0
- package/dist/ui/styles.d.ts +13 -0
- package/dist/ui/styles.js +200 -0
- package/dist/ui/text-scale.d.ts +67 -0
- package/dist/ui/text-scale.js +102 -0
- package/dist/ui/theme.d.ts +70 -0
- package/dist/ui/theme.js +98 -0
- package/dist/ui/toast.d.ts +23 -0
- package/dist/ui/toast.js +46 -0
- package/dist/ui/tooltip.d.ts +89 -0
- package/dist/ui/tooltip.js +333 -0
- package/dist/ui/widgets-2.d.ts +134 -0
- package/dist/ui/widgets-2.js +399 -0
- package/dist/ui/widgets-3.d.ts +91 -0
- package/dist/ui/widgets-3.js +212 -0
- package/dist/ui/widgets.d.ts +34 -0
- package/dist/ui/widgets.js +50 -0
- package/dist/ui/world-panel/index.d.ts +5 -0
- package/dist/ui/world-panel/index.js +5 -0
- package/dist/ui/world-panel/layout.d.ts +38 -0
- package/dist/ui/world-panel/layout.js +68 -0
- package/dist/ui/world-panel/paint.d.ts +96 -0
- package/dist/ui/world-panel/paint.js +136 -0
- package/dist/ui/world-panel/panel.d.ts +235 -0
- package/dist/ui/world-panel/panel.js +762 -0
- package/dist/ui/world-panel/wgsl.d.ts +10 -0
- package/dist/ui/world-panel/wgsl.js +52 -0
- package/dist/ui/world-panel/widgets.d.ts +207 -0
- package/dist/ui/world-panel/widgets.js +569 -0
- package/dist/voxel/chunks.d.ts +77 -0
- package/dist/voxel/chunks.js +149 -0
- package/dist/voxel/grid.d.ts +84 -0
- package/dist/voxel/grid.js +223 -0
- package/dist/voxel/index.d.ts +22 -0
- package/dist/voxel/index.js +7 -0
- package/dist/voxel/mesher-worker.d.ts +14 -0
- package/dist/voxel/mesher-worker.js +47 -0
- package/dist/voxel/mesher.d.ts +73 -0
- package/dist/voxel/mesher.js +306 -0
- package/dist/voxel/ray.d.ts +32 -0
- package/dist/voxel/ray.js +73 -0
- package/dist/voxel/wgsl.d.ts +16 -0
- package/dist/voxel/wgsl.js +28 -0
- package/dist/voxel/worker-client.d.ts +79 -0
- package/dist/voxel/worker-client.js +122 -0
- package/package.json +177 -3
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* World panels (ws/ui-world-panel): a Canvas2D-painted texture on a quad in the scene, with the
|
|
3
|
+
* engine's widgets and theme, hit by the pointer router's rays. Flat screens on walls, a wrist
|
|
4
|
+
* menu in VR, a head-locked HUD: anything a DOM overlay cannot be because it must sit in depth.
|
|
5
|
+
*
|
|
6
|
+
* - The canvas is `width × resolution` by `height × resolution` px; widgets are laid out and hit
|
|
7
|
+
* in those px. Only the dirty rect is repainted and uploaded, at most once per frame, in
|
|
8
|
+
* `prepare`; a frame with nothing dirty uploads nothing.
|
|
9
|
+
* - The quad is drawn by `draw` inside the scene pass (`frame.drawable(panel)`), depth-tested by
|
|
10
|
+
* default; a head-locked panel defaults to `depthTest: false` so the scene never cuts it.
|
|
11
|
+
* - Pointers: `hitTest(ray)` gives panel px; `worldPanelTarget(panel)` is the router's tester;
|
|
12
|
+
* `poll(router.pointers)` drives hover, press and release from the router each tick, or call
|
|
13
|
+
* `pointerDown/Move/Up` yourself. Focus walks `focusNext/Prev`, `activate` and `key`.
|
|
14
|
+
*/
|
|
15
|
+
import type { PointerRouter, RoutedPointer } from '../../input/pointer-router.js';
|
|
16
|
+
import { type HitTester, type Ray } from '../../input/rays.js';
|
|
17
|
+
import type { Camera } from '../../render/camera.js';
|
|
18
|
+
import type { Drawable, Frame } from '../../render/frame.js';
|
|
19
|
+
import type { Renderer } from '../../render/renderer.js';
|
|
20
|
+
import type { Texture } from '../../render/texture.js';
|
|
21
|
+
import { Transform } from '../../render/transform.js';
|
|
22
|
+
import type { ThemeTokens } from '../theme.js';
|
|
23
|
+
import { Painter, type PanelCanvas, type PanelTheme } from './paint.js';
|
|
24
|
+
import type { PanelKeyEvent, WorldWidget, WorldWidgetHost } from './widgets.js';
|
|
25
|
+
/** What `attach` needs from the input (`Input` from `@thunderclap-engine/engine/input` fits). */
|
|
26
|
+
export interface WorldPanelInput {
|
|
27
|
+
/** The input's pointer router, or null when it has none (`Input.pointers`, ws/api-core). */
|
|
28
|
+
readonly pointers?: PointerRouter<unknown> | null;
|
|
29
|
+
/** Called after every `update()`; returns the remover. */
|
|
30
|
+
onUpdated(fn: () => void): () => void;
|
|
31
|
+
}
|
|
32
|
+
export interface WorldPanelOptions {
|
|
33
|
+
/** Panel size in world units. */
|
|
34
|
+
width: number;
|
|
35
|
+
height: number;
|
|
36
|
+
/** Canvas px per world unit. Default 256. */
|
|
37
|
+
resolution?: number;
|
|
38
|
+
/** Theme tokens over the CSS-px theme (`cssPxTheme`): colours, fonts, spacing. */
|
|
39
|
+
theme?: Partial<ThemeTokens>;
|
|
40
|
+
/** `panel` (default): the surface colour with a border. `transparent`: widgets only. */
|
|
41
|
+
background?: 'panel' | 'transparent';
|
|
42
|
+
/** Turn to face the camera every `update(camera)`, keeping the position. */
|
|
43
|
+
billboard?: boolean;
|
|
44
|
+
/** Follow the camera: `distance` ahead of the eye, `offset` in view units (x right, y up). */
|
|
45
|
+
headLocked?: {
|
|
46
|
+
distance: number;
|
|
47
|
+
offset?: [number, number];
|
|
48
|
+
};
|
|
49
|
+
/** Depth test against the scene. Default `true`; `false` for a head-locked panel. */
|
|
50
|
+
depthTest?: boolean;
|
|
51
|
+
/** The canvas to paint into (tests); default an `OffscreenCanvas` or a `<canvas>`. */
|
|
52
|
+
canvas?: PanelCanvas;
|
|
53
|
+
label?: string;
|
|
54
|
+
}
|
|
55
|
+
/** `hitTest`'s result: panel px from the top-left, the widget there (or `null`), the ray's distance. */
|
|
56
|
+
export interface WorldPanelHit {
|
|
57
|
+
x: number;
|
|
58
|
+
y: number;
|
|
59
|
+
widget: WorldWidget | null;
|
|
60
|
+
/** World units along the ray. */
|
|
61
|
+
distance: number;
|
|
62
|
+
}
|
|
63
|
+
export interface WorldPanelStats {
|
|
64
|
+
/** Paints of a dirty rect. */
|
|
65
|
+
repaints: number;
|
|
66
|
+
/** Texture uploads (at most one per `prepare`). */
|
|
67
|
+
uploads: number;
|
|
68
|
+
/** Bytes uploaded in all (dirty rect × 4). */
|
|
69
|
+
bytes: number;
|
|
70
|
+
}
|
|
71
|
+
export declare class WorldPanel implements Drawable, WorldWidgetHost {
|
|
72
|
+
readonly transform: Transform;
|
|
73
|
+
/** Panel size in world units. */
|
|
74
|
+
readonly width: number;
|
|
75
|
+
readonly height: number;
|
|
76
|
+
readonly resolution: number;
|
|
77
|
+
/** Canvas size in px. */
|
|
78
|
+
readonly pxWidth: number;
|
|
79
|
+
readonly pxHeight: number;
|
|
80
|
+
readonly texture: Texture;
|
|
81
|
+
readonly canvas: PanelCanvas;
|
|
82
|
+
readonly painter: Painter;
|
|
83
|
+
readonly theme: PanelTheme;
|
|
84
|
+
readonly stats: WorldPanelStats;
|
|
85
|
+
/** Resolves when `document.fonts` is ready (at once without it); the panel repaints then. */
|
|
86
|
+
readonly fontLoaded: Promise<void>;
|
|
87
|
+
/** Draw this in the scene: `frame.drawable(panel.drawable)` (it is the panel itself). */
|
|
88
|
+
readonly drawable: Drawable;
|
|
89
|
+
readonly label: string;
|
|
90
|
+
depthTest: boolean;
|
|
91
|
+
/** Widgets in flow order. */
|
|
92
|
+
readonly widgets: WorldWidget[];
|
|
93
|
+
/** The focused widget, or `null`. */
|
|
94
|
+
focused: WorldWidget | null;
|
|
95
|
+
/** The widget under the last moved pointer, or `null`. */
|
|
96
|
+
hovered: WorldWidget | null;
|
|
97
|
+
/** Draws issued by the last `draw` (0 or 1). */
|
|
98
|
+
draws: number;
|
|
99
|
+
private readonly device;
|
|
100
|
+
private readonly background;
|
|
101
|
+
private readonly billboard;
|
|
102
|
+
private readonly headLocked;
|
|
103
|
+
private readonly dirtyRect;
|
|
104
|
+
private layoutDirty;
|
|
105
|
+
private needsUpload;
|
|
106
|
+
private disposed;
|
|
107
|
+
/** The press: which widget holds it, by pointer id. */
|
|
108
|
+
private readonly presses;
|
|
109
|
+
private pressCount;
|
|
110
|
+
private readonly tracked;
|
|
111
|
+
private nextTrackedId;
|
|
112
|
+
private readonly uniform;
|
|
113
|
+
private readonly uniformData;
|
|
114
|
+
private readonly uniformSent;
|
|
115
|
+
private uniformDirty;
|
|
116
|
+
private readonly group;
|
|
117
|
+
private readonly renderer;
|
|
118
|
+
private readonly pipelineDesc;
|
|
119
|
+
/**
|
|
120
|
+
* Pipelines per (depth format, target aux key) (ws/core-8): a panel drawn into
|
|
121
|
+
* `renderer.target` with aux attachments and into a plain target (an XR eye, a probe) in the
|
|
122
|
+
* same frame binds the variant whose colour targets match each pass.
|
|
123
|
+
*/
|
|
124
|
+
private readonly pipelines;
|
|
125
|
+
private readonly localRay;
|
|
126
|
+
private readonly hit;
|
|
127
|
+
private readonly routerHit;
|
|
128
|
+
private readonly routerNormal;
|
|
129
|
+
private readonly basis;
|
|
130
|
+
private detachFn;
|
|
131
|
+
constructor(renderer: Renderer, opts: WorldPanelOptions);
|
|
132
|
+
/** Whether a repaint or an upload is pending. */
|
|
133
|
+
get dirty(): boolean;
|
|
134
|
+
/** Append a widget to the flow (or place it at its `rect`). */
|
|
135
|
+
add<W extends WorldWidget>(widget: W): W;
|
|
136
|
+
remove(widget: WorldWidget): void;
|
|
137
|
+
/** @internal `WorldWidgetHost` */
|
|
138
|
+
invalidate(widget: WorldWidget): void;
|
|
139
|
+
/** @internal `WorldWidgetHost`: re-run the flow and repaint everything next frame. */
|
|
140
|
+
relayout(): void;
|
|
141
|
+
private markAllDirty;
|
|
142
|
+
private readonly ring;
|
|
143
|
+
/** `r` grown by the focus ring, so a focus change repaints the ring too. */
|
|
144
|
+
private ringRect;
|
|
145
|
+
private layout;
|
|
146
|
+
/** The widget at panel px, or `null`. Explicit-rect widgets later in the list win. */
|
|
147
|
+
widgetAt(x: number, y: number): WorldWidget | null;
|
|
148
|
+
/**
|
|
149
|
+
* Paint what is dirty now (the layout if it changed, then the dirty rect) and queue the upload.
|
|
150
|
+
* `prepare` calls this; call it yourself to paint ahead of the frame.
|
|
151
|
+
*/
|
|
152
|
+
repaint(): void;
|
|
153
|
+
private readonly uploadRect;
|
|
154
|
+
/**
|
|
155
|
+
* Per frame, before drawing: a head-locked panel moves in front of `camera`, a billboard turns
|
|
156
|
+
* to face it. A plain panel ignores it.
|
|
157
|
+
*/
|
|
158
|
+
update(camera: Camera): void;
|
|
159
|
+
/**
|
|
160
|
+
* Where `ray` (world space) meets the panel's plane: px from the top-left (outside the quad
|
|
161
|
+
* allowed) and the distance along the ray, written to `this.hit`. False when the ray is
|
|
162
|
+
* parallel to the plane, points away from it, or the transform is singular.
|
|
163
|
+
*/
|
|
164
|
+
private project;
|
|
165
|
+
/**
|
|
166
|
+
* Where `ray` (world space) meets the panel: px from the top-left, the widget there and the
|
|
167
|
+
* distance along the ray; `null` when it misses. The result object is reused.
|
|
168
|
+
*/
|
|
169
|
+
hitTest(ray: Ray): WorldPanelHit | null;
|
|
170
|
+
/** A `HitTester` for the pointer router whose hit's `target` is this panel. */
|
|
171
|
+
tester(): HitTester<WorldPanel>;
|
|
172
|
+
private setHover;
|
|
173
|
+
/** A pointer is over panel px (`x`, `y`); `id` tells pointers apart (default 0). */
|
|
174
|
+
pointerMove(x: number, y: number, id?: number): void;
|
|
175
|
+
/** The pointer left the panel (no widget is hovered; a held press stays until `pointerUp`). */
|
|
176
|
+
pointerLeave(id?: number): void;
|
|
177
|
+
/** A press at panel px: the widget there takes it (and focus when focusable). */
|
|
178
|
+
pointerDown(x: number, y: number, id?: number): void;
|
|
179
|
+
/**
|
|
180
|
+
* The press `id` ends at panel px (outside the quad allowed); a release over the pressed widget
|
|
181
|
+
* activates it. `NaN` coordinates cancel: the widget hears a release that is nowhere.
|
|
182
|
+
*/
|
|
183
|
+
pointerUp(x: number, y: number, id?: number): void;
|
|
184
|
+
/** Wheel over panel px: the widget there scrolls. Returns whether something used it. */
|
|
185
|
+
wheel(x: number, y: number, dy: number): boolean;
|
|
186
|
+
/**
|
|
187
|
+
* Drive the panel from the router's live pointers once per tick (after `input.update()`): a
|
|
188
|
+
* pointer whose nearest hit is this panel hovers, its `select` edge presses and releases; one
|
|
189
|
+
* that left releases outside. Pass `router.pointers` (or any array of `RoutedPointer`).
|
|
190
|
+
*/
|
|
191
|
+
poll(pointers: readonly RoutedPointer[]): void;
|
|
192
|
+
private trackedFor;
|
|
193
|
+
/** `router.addTester(panel.tester())`; returns the remover. */
|
|
194
|
+
attachTo(router: PointerRouter<unknown>): () => void;
|
|
195
|
+
/**
|
|
196
|
+
* Drive the panel on the input tick (ws/ui-4): registers the panel's tester with the input's
|
|
197
|
+
* pointer router and, through `input.onUpdated`, calls `poll(router.pointers)` after every
|
|
198
|
+
* `input.update()` and `update(camera)` with the router's camera (the one the rays go through,
|
|
199
|
+
* `renderer.camera` in a game, the head camera while `ctx.xr` is active). `opts.camera`
|
|
200
|
+
* (ws/api-core) names another camera to face, read each tick. Call once; `detach()` (and
|
|
201
|
+
* `dispose()`) undoes it. Manual `poll`/`update` still work for an input without a router.
|
|
202
|
+
*/
|
|
203
|
+
attach(input: WorldPanelInput, opts?: {
|
|
204
|
+
camera?: () => Camera | null;
|
|
205
|
+
}): void;
|
|
206
|
+
/** Stop following the input `attach` hooked; nothing without one. */
|
|
207
|
+
detach(): void;
|
|
208
|
+
/** Focus `widget` (`null` clears); a widget that is not focusable is ignored. */
|
|
209
|
+
focus(widget: WorldWidget | null): void;
|
|
210
|
+
private focusStep;
|
|
211
|
+
/** Focus the next focusable widget (wrapping); the first when none is focused. */
|
|
212
|
+
focusNext(): WorldWidget | null;
|
|
213
|
+
/** Focus the previous focusable widget (wrapping); the last when none is focused. */
|
|
214
|
+
focusPrev(): WorldWidget | null;
|
|
215
|
+
/** Activate the focused widget (a button presses, a toggle flips). */
|
|
216
|
+
activate(): void;
|
|
217
|
+
/**
|
|
218
|
+
* A keyboard event: Tab / Shift+Tab move focus, Enter and Space activate, arrows and the rest
|
|
219
|
+
* go to the focused widget. Returns whether the key was consumed.
|
|
220
|
+
*/
|
|
221
|
+
key(event: PanelKeyEvent): boolean;
|
|
222
|
+
/** Repaint what is dirty and upload it (once) before the pass. */
|
|
223
|
+
prepare(_encoder: GPUCommandEncoder, _frame?: Frame): void;
|
|
224
|
+
/** Draw the quad inside the scene pass, with the pipeline for its depth format and aux key. */
|
|
225
|
+
draw(pass: GPURenderPassEncoder, frame?: Frame): void;
|
|
226
|
+
private pipelineFor;
|
|
227
|
+
/** Release the texture and buffers; the panel draws nothing after. */
|
|
228
|
+
dispose(): void;
|
|
229
|
+
/** Whether a press is held on some widget. */
|
|
230
|
+
get pressing(): boolean;
|
|
231
|
+
}
|
|
232
|
+
/** `new WorldPanel(renderer, opts)`. */
|
|
233
|
+
export declare function createWorldPanel(renderer: Renderer, opts: WorldPanelOptions): WorldPanel;
|
|
234
|
+
/** The pointer router's `HitTester` for `panel`: `router.addTester(worldPanelTarget(panel))`. */
|
|
235
|
+
export declare function worldPanelTarget(panel: WorldPanel): HitTester<WorldPanel>;
|