@woosh/meep-engine 3.60.4 → 3.60.6

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 (419) hide show
  1. package/CHANGELOG.md +2621 -0
  2. package/CONTRIBUTING.md +7 -0
  3. package/MIGRATION_2_TO_3.md +136 -0
  4. package/SECURITY.md +4 -0
  5. package/editor/EditorCameraNavigation.d.ts +2 -1
  6. package/editor/EditorCameraNavigation.d.ts.map +1 -1
  7. package/editor/EditorCameraNavigation.js +51 -57
  8. package/package.json +6 -2
  9. package/src/engine/EngineHarness.d.ts +3 -9
  10. package/src/engine/EngineHarness.d.ts.map +1 -1
  11. package/src/engine/EngineHarness.js +6 -8
  12. package/src/engine/graphics/camera/makeOrbitalCameraController.d.ts +9 -6
  13. package/src/engine/graphics/camera/makeOrbitalCameraController.d.ts.map +1 -1
  14. package/src/engine/graphics/camera/makeOrbitalCameraController.js +44 -71
  15. package/src/engine/graphics/camera/orbital/MomentumAxis.d.ts +64 -0
  16. package/src/engine/graphics/camera/orbital/MomentumAxis.d.ts.map +1 -0
  17. package/src/engine/graphics/camera/orbital/MomentumAxis.js +187 -0
  18. package/src/engine/graphics/camera/orbital/OrbitalCameraRig.d.ts +86 -0
  19. package/src/engine/graphics/camera/orbital/OrbitalCameraRig.d.ts.map +1 -0
  20. package/src/engine/graphics/camera/orbital/OrbitalCameraRig.js +319 -0
  21. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.d.ts +34 -10
  22. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.d.ts.map +1 -1
  23. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.js +116 -30
  24. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraControllerSystem.d.ts +1 -7
  25. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraControllerSystem.d.ts.map +1 -1
  26. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraControllerSystem.js +1 -37
  27. package/src/engine/graphics/ecs/water/Water.d.ts +8 -0
  28. package/src/engine/graphics/ecs/water/Water.d.ts.map +1 -1
  29. package/src/engine/graphics/ecs/water/Water.js +8 -0
  30. package/src/engine/graphics3/WaterSystem.d.ts.map +1 -1
  31. package/src/engine/graphics3/WaterSystem.js +731 -734
  32. package/src/engine/graphics3/decal/DecalTileShader.d.ts +61 -0
  33. package/src/engine/graphics3/decal/DecalTileShader.d.ts.map +1 -0
  34. package/src/engine/graphics3/decal/DecalTileShader.js +138 -0
  35. package/src/engine/graphics3/decal/GPUDecalRenderer.d.ts +10 -4
  36. package/src/engine/graphics3/decal/GPUDecalRenderer.d.ts.map +1 -1
  37. package/src/engine/graphics3/decal/GPUDecalRenderer.js +149 -44
  38. package/src/engine/graphics3/decal/chunk_decal_tile_vertex.d.ts +25 -0
  39. package/src/engine/graphics3/decal/chunk_decal_tile_vertex.d.ts.map +1 -0
  40. package/src/engine/graphics3/decal/chunk_decal_tile_vertex.js +55 -0
  41. package/src/engine/graphics3/decal/graph_gather_decal_tiles.d.ts +22 -0
  42. package/src/engine/graphics3/decal/graph_gather_decal_tiles.d.ts.map +1 -0
  43. package/src/engine/graphics3/decal/graph_gather_decal_tiles.js +70 -0
  44. package/src/engine/graphics3/decal/shader_decal_composite.d.ts +7 -5
  45. package/src/engine/graphics3/decal/shader_decal_composite.d.ts.map +1 -1
  46. package/src/engine/graphics3/decal/shader_decal_composite.js +48 -44
  47. package/src/engine/graphics3/decal/shader_decal_tile_copy.d.ts +12 -0
  48. package/src/engine/graphics3/decal/shader_decal_tile_copy.d.ts.map +1 -0
  49. package/src/engine/graphics3/decal/shader_decal_tile_copy.js +78 -0
  50. package/src/engine/graphics3/decal/shader_gather_decal_tiles.d.ts +11 -0
  51. package/src/engine/graphics3/decal/shader_gather_decal_tiles.d.ts.map +1 -0
  52. package/src/engine/graphics3/decal/shader_gather_decal_tiles.js +80 -0
  53. package/src/engine/input/devices/mouse/MouseEventButtons.d.ts +13 -0
  54. package/src/engine/input/devices/mouse/MouseEventButtons.d.ts.map +1 -0
  55. package/src/engine/input/devices/mouse/MouseEventButtons.js +23 -0
  56. package/src/engine/input/ecs/controllers/KeyboardCameraController.d.ts +4 -0
  57. package/src/engine/input/ecs/controllers/KeyboardCameraController.d.ts.map +1 -1
  58. package/src/engine/input/ecs/controllers/KeyboardCameraController.js +9 -45
  59. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  60. package/src/shade/playground/water_refraction/README.md +5 -6
  61. package/src/shade/playground/water_refraction/index.html +1 -1
  62. package/src/shade/renderer/Renderer.d.ts +11 -0
  63. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  64. package/src/shade/renderer/Renderer.js +50 -6
  65. package/src/shade/renderer/camera/orbital/OrbitalCameraController.d.ts +40 -80
  66. package/src/shade/renderer/camera/orbital/OrbitalCameraController.d.ts.map +1 -1
  67. package/src/shade/renderer/camera/orbital/OrbitalCameraController.js +197 -147
  68. package/src/shade/renderer/fluid/GPUFluidCascade.d.ts +3 -3
  69. package/src/shade/renderer/fluid/GPUFluidCascadeStack.d.ts +1 -1
  70. package/src/shade/renderer/fluid/forcing/GPUFluidForcing.d.ts +6 -6
  71. package/src/shade/renderer/fluid/pressure/GPUFluidPressureSolve.d.ts +1 -1
  72. package/src/shade/renderer/fluid/query/GPUFluidQueries.d.ts +1 -1
  73. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts +28 -45
  74. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts.map +1 -1
  75. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.js +111 -119
  76. package/src/shade/renderer/geometry/sdf/cards/GPUMeshCardSets.d.ts +22 -3
  77. package/src/shade/renderer/geometry/sdf/cards/GPUMeshCardSets.d.ts.map +1 -1
  78. package/src/shade/renderer/geometry/sdf/cards/GPUMeshCardSets.js +84 -3
  79. package/src/shade/renderer/geometry/virtual/proxy/vgeo_proxy_triangle_limit.d.ts +19 -0
  80. package/src/shade/renderer/geometry/virtual/proxy/vgeo_proxy_triangle_limit.d.ts.map +1 -0
  81. package/src/shade/renderer/geometry/virtual/proxy/vgeo_proxy_triangle_limit.js +25 -0
  82. package/src/shade/renderer/geometry/virtual/proxy/vgeo_to_proxy_mesh.d.ts +31 -0
  83. package/src/shade/renderer/geometry/virtual/proxy/vgeo_to_proxy_mesh.d.ts.map +1 -0
  84. package/src/shade/renderer/geometry/virtual/proxy/vgeo_to_proxy_mesh.js +343 -0
  85. package/src/shade/renderer/geometry/virtual/runtime/VirtualGeometry.d.ts +15 -0
  86. package/src/shade/renderer/geometry/virtual/runtime/VirtualGeometry.d.ts.map +1 -1
  87. package/src/shade/renderer/geometry/virtual/runtime/VirtualGeometry.js +38 -0
  88. package/src/shade/renderer/geometry/virtual/runtime/vgeo_meshlet_metadata_write.d.ts +17 -0
  89. package/src/shade/renderer/geometry/virtual/runtime/vgeo_meshlet_metadata_write.d.ts.map +1 -0
  90. package/src/shade/renderer/geometry/virtual/runtime/vgeo_meshlet_metadata_write.js +29 -0
  91. package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_meshlet_batch.d.ts.map +1 -1
  92. package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_meshlet_batch.js +7 -13
  93. package/src/shade/renderer/geometry/virtual/sdf/VGeoSDFProxies.d.ts +28 -59
  94. package/src/shade/renderer/geometry/virtual/sdf/VGeoSDFProxies.d.ts.map +1 -1
  95. package/src/shade/renderer/geometry/virtual/sdf/VGeoSDFProxies.js +84 -789
  96. package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts.map +1 -1
  97. package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.js +1 -8
  98. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.d.ts +7 -6
  99. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.d.ts.map +1 -1
  100. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.js +12 -11
  101. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_instance.d.ts +2 -2
  102. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_instance.js +2 -2
  103. package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.d.ts +1 -4
  104. package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.d.ts.map +1 -1
  105. package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.js +1 -10
  106. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_surface.d.ts +5 -15
  107. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_surface.d.ts.map +1 -1
  108. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_surface.js +6 -34
  109. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.d.ts.map +1 -1
  110. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.js +1 -7
  111. package/src/shade/renderer/hiz/HZBFootprint.d.ts +14 -0
  112. package/src/shade/renderer/hiz/HZBFootprint.d.ts.map +1 -0
  113. package/src/shade/renderer/hiz/HZBFootprint.js +16 -0
  114. package/src/shade/renderer/hiz/HZB_FOOTPRINT_X.d.ts +10 -0
  115. package/src/shade/renderer/hiz/HZB_FOOTPRINT_X.d.ts.map +1 -0
  116. package/src/shade/renderer/hiz/HZB_FOOTPRINT_X.js +11 -0
  117. package/src/shade/renderer/hiz/HZB_FOOTPRINT_Y.d.ts +10 -0
  118. package/src/shade/renderer/hiz/HZB_FOOTPRINT_Y.d.ts.map +1 -0
  119. package/src/shade/renderer/hiz/HZB_FOOTPRINT_Y.js +11 -0
  120. package/src/shade/renderer/hiz/HierarchicalZBuffer.d.ts +0 -7
  121. package/src/shade/renderer/hiz/HierarchicalZBuffer.d.ts.map +1 -1
  122. package/src/shade/renderer/hiz/HierarchicalZBuffer.js +405 -350
  123. package/src/shade/renderer/hiz/chunk_hzb_footprint_x.d.ts +12 -0
  124. package/src/shade/renderer/hiz/chunk_hzb_footprint_x.d.ts.map +1 -0
  125. package/src/shade/renderer/hiz/chunk_hzb_footprint_x.js +27 -0
  126. package/src/shade/renderer/hiz/chunk_hzb_footprint_y.d.ts +12 -0
  127. package/src/shade/renderer/hiz/chunk_hzb_footprint_y.d.ts.map +1 -0
  128. package/src/shade/renderer/hiz/chunk_hzb_footprint_y.js +27 -0
  129. package/src/shade/renderer/hiz/hzb_footprint_texels.d.ts +14 -0
  130. package/src/shade/renderer/hiz/hzb_footprint_texels.d.ts.map +1 -0
  131. package/src/shade/renderer/hiz/hzb_footprint_texels.js +34 -0
  132. package/src/shade/renderer/hiz/shader_hzb_reduce_any.d.ts +0 -5
  133. package/src/shade/renderer/hiz/shader_hzb_reduce_any.d.ts.map +1 -1
  134. package/src/shade/renderer/hiz/shader_hzb_reduce_any.js +37 -57
  135. package/src/shade/renderer/hiz/shader_hzb_reduce_mip0.d.ts +11 -0
  136. package/src/shade/renderer/hiz/shader_hzb_reduce_mip0.d.ts.map +1 -0
  137. package/src/shade/renderer/hiz/{shader_hzb_reduce_mip0_clip.js → shader_hzb_reduce_mip0.js} +120 -111
  138. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
  139. package/src/shade/renderer/material/GPUMaterialManager.d.ts +11 -1
  140. package/src/shade/renderer/material/GPUMaterialManager.d.ts.map +1 -1
  141. package/src/shade/renderer/material/GPUMaterialManager.js +16 -8
  142. package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts +12 -12
  143. package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts.map +1 -1
  144. package/src/shade/renderer/material/resident/GPUResidentMaterialContext.js +17 -118
  145. package/src/shade/renderer/postprocess/gtao/GTAO.d.ts +7 -3
  146. package/src/shade/renderer/postprocess/gtao/GTAO.d.ts.map +1 -1
  147. package/src/shade/renderer/postprocess/gtao/GTAO.js +26 -13
  148. package/src/shade/renderer/postprocess/gtao/ao_reproject_shader.d.ts +14 -0
  149. package/src/shade/renderer/postprocess/gtao/ao_reproject_shader.d.ts.map +1 -1
  150. package/src/shade/renderer/postprocess/gtao/ao_reproject_shader.js +196 -68
  151. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.d.ts.map +1 -1
  152. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.js +42 -28
  153. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao_with_irradiance.d.ts.map +1 -1
  154. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao_with_irradiance.js +429 -414
  155. package/src/shade/renderer/postprocess/gtao/shader_gtao_spatial_denoise.d.ts +16 -0
  156. package/src/shade/renderer/postprocess/gtao/shader_gtao_spatial_denoise.d.ts.map +1 -0
  157. package/src/shade/renderer/postprocess/gtao/shader_gtao_spatial_denoise.js +156 -0
  158. package/src/shade/renderer/scene/GPUSceneContext.d.ts +2 -2
  159. package/src/shade/renderer/scene/GPUSceneContext.js +5 -5
  160. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts.map +1 -1
  161. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.js +7 -2
  162. package/src/shade/renderer/water/GPUWaterRenderer.d.ts +0 -6
  163. package/src/shade/renderer/water/GPUWaterRenderer.d.ts.map +1 -1
  164. package/src/shade/renderer/water/GPUWaterRenderer.js +12 -17
  165. package/src/shade/renderer/water/medium/graph_water_meshlets.d.ts +35 -0
  166. package/src/shade/renderer/water/medium/graph_water_meshlets.d.ts.map +1 -0
  167. package/src/shade/renderer/water/medium/graph_water_meshlets.js +89 -0
  168. package/src/shade/renderer/water/query/GPUWaterQueries.d.ts +1 -1
  169. package/src/shade/renderer/water/shader_water.d.ts.map +1 -1
  170. package/src/shade/renderer/water/shader_water.js +22 -13
  171. package/src/shade/renderer/water/shader_water_avboit.d.ts.map +1 -1
  172. package/src/shade/renderer/water/shader_water_avboit.js +7 -7
  173. package/src/shade/renderer/water/surface/graph_water_tessellation.d.ts +1 -1
  174. package/src/shade/renderer/water/surface/graph_water_tessellation.js +1 -1
  175. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +9 -1
  176. package/editor/REWORK_PLAN_2026_08.md +0 -692
  177. package/src/CODEC_LAYOUT_VERIFICATION.md +0 -419
  178. package/src/CORRECTNESS_HUNT_2026_07_24.md +0 -142
  179. package/src/DUPLICATION_AUDIT_2026_08_07/00_core_reuse_surface.md +0 -738
  180. package/src/DUPLICATION_AUDIT_2026_08_07/A_core_math_geom.md +0 -79
  181. package/src/DUPLICATION_AUDIT_2026_08_07/B_core_data.md +0 -93
  182. package/src/DUPLICATION_AUDIT_2026_08_07/C_gfx_render.md +0 -80
  183. package/src/DUPLICATION_AUDIT_2026_08_07/D_gfx_features.md +0 -164
  184. package/src/DUPLICATION_AUDIT_2026_08_07/E_physics.md +0 -69
  185. package/src/DUPLICATION_AUDIT_2026_08_07/F_sound.md +0 -110
  186. package/src/DUPLICATION_AUDIT_2026_08_07/G_net_save.md +0 -129
  187. package/src/DUPLICATION_AUDIT_2026_08_07/H_engine_misc.md +0 -72
  188. package/src/DUPLICATION_AUDIT_2026_08_07/I_generation_view.md +0 -74
  189. package/src/DUPLICATION_AUDIT_2026_08_07/K_crosscutting.md +0 -169
  190. package/src/DUPLICATION_AUDIT_2026_08_07.md +0 -254
  191. package/src/DUPLICATION_AUDIT_REMEDIATION.md +0 -250
  192. package/src/DUPLICATION_REVIEW_2026_10_24.md +0 -1072
  193. package/src/REVIEW_2026_08_06/adv-core.md +0 -511
  194. package/src/REVIEW_2026_08_06/adv-gfx.md +0 -480
  195. package/src/REVIEW_2026_08_06/adv-view.md +0 -446
  196. package/src/REVIEW_2026_08_06/api-core.md +0 -296
  197. package/src/REVIEW_2026_08_06/api-engine.md +0 -195
  198. package/src/REVIEW_2026_08_06/bvh-phys-sound-net.md +0 -507
  199. package/src/REVIEW_2026_08_06/core-binary.md +0 -348
  200. package/src/REVIEW_2026_08_06/core-collection.md +0 -376
  201. package/src/REVIEW_2026_08_06/core-math.md +0 -221
  202. package/src/REVIEW_2026_08_06/core-process.md +0 -266
  203. package/src/REVIEW_2026_08_06/core-science.md +0 -223
  204. package/src/REVIEW_2026_08_06/engine-ai-nav.md +0 -279
  205. package/src/REVIEW_2026_08_06/engine-animation.md +0 -167
  206. package/src/REVIEW_2026_08_06/engine-asset.md +0 -166
  207. package/src/REVIEW_2026_08_06/engine-ecs.md +0 -920
  208. package/src/REVIEW_2026_08_06/engine-input.md +0 -197
  209. package/src/REVIEW_2026_08_06/engine-misc.md +0 -248
  210. package/src/REVIEW_2026_08_06/engine-terrain.md +0 -52
  211. package/src/REVIEW_2026_08_06/generation.md +0 -176
  212. package/src/REVIEW_2026_08_06/geom-2d.md +0 -434
  213. package/src/REVIEW_2026_08_06/geom-3d.md +0 -117
  214. package/src/REVIEW_2026_08_06/gfx-gi.md +0 -143
  215. package/src/REVIEW_2026_08_06/gfx-render.md +0 -740
  216. package/src/REVIEW_2026_08_06/gfx-texture.md +0 -690
  217. package/src/REVIEW_2026_08_06/prior-criticals.md +0 -49
  218. package/src/REVIEW_2026_08_06/prior-highs.md +0 -138
  219. package/src/REVIEW_2026_08_06/test-gaps.md +0 -364
  220. package/src/REVIEW_2026_08_06/view.md +0 -667
  221. package/src/REVIEW_2026_08_06.md +0 -610
  222. package/src/core/binary/lz4/LZ4_HIGH_COMPRESSION_PLAN_2026_09_14.md +0 -542
  223. package/src/core/bvh2/bvh3/NOTES.md +0 -2
  224. package/src/core/bvh8/NOTES.md +0 -63
  225. package/src/core/cache/wtinylfu/benchmark/CacheWTinylfu.bench.md +0 -243
  226. package/src/core/color/COLOR_FIX_PLAN_2026_08_28.md +0 -417
  227. package/src/core/color/COLOR_REVIEW_2026_08_28.md +0 -779
  228. package/src/core/geom/2d/polygon/TRIANGULATION_DESIGN.md +0 -433
  229. package/src/core/geom/3d/atlas/ATLAS_PORT_PLAN.md +0 -486
  230. package/src/core/geom/3d/atlas/BFF_PLAN.md +0 -174
  231. package/src/core/geom/3d/atlas/REVIEW_02.md +0 -392
  232. package/src/core/geom/3d/gjk/GJK_REVIEW_NOTES.md +0 -146
  233. package/src/core/geom/3d/gjk/NOTES.md +0 -8
  234. package/src/core/geom/3d/topology/TOPO_MESH_RETIREMENT_PLAN.md +0 -135
  235. package/src/core/geom/GEOMETRY_REVIEW_002_API_ISSUES.md +0 -381
  236. package/src/core/geom/GEOMETRY_REVIEW_002_NAMING.md +0 -684
  237. package/src/core/geom/MANIFOLD_COMPARISON_2026_08_01.md +0 -554
  238. package/src/core/model/reactive/evaluation/PREDICATE_APPLICABILITY_PROPOSAL.md +0 -446
  239. package/src/engine/REVIEW_2026_07_03.md +0 -211
  240. package/src/engine/asset/loaders/image/IMAGE_CODEC_REVIEW_2026_08_28.md +0 -815
  241. package/src/engine/control/first-person/DESIGN.md +0 -658
  242. package/src/engine/control/first-person/DESIGN_COLLISION.md +0 -382
  243. package/src/engine/control/first-person/DESIGN_EXTENSIONS.md +0 -563
  244. package/src/engine/control/first-person/TODO.md +0 -160
  245. package/src/engine/ecs/ASYNC_SYSTEMS_PROPOSAL.md +0 -531
  246. package/src/engine/ecs/HIERARCHY_REVIEW.md +0 -717
  247. package/src/engine/ecs/async/WORKER_SYSTEM_PLAN.md +0 -262
  248. package/src/engine/ecs/ik/PLAN.md +0 -179
  249. package/src/engine/ecs/storage/binary/SERIALIZATION_COVERAGE.md +0 -272
  250. package/src/engine/ecs/storage/binary/object-v2/DESIGN.md +0 -199
  251. package/src/engine/ecs/transform/TRANSFORM64_MIGRATION_PLAN_2026_09_04.md +0 -521
  252. package/src/engine/graphics/CONTEXT_LOSS_RECOVERY_PLAN.md +0 -463
  253. package/src/engine/graphics/ecs/camera/pp/NOTES.md +0 -48
  254. package/src/engine/graphics/render/frame_graph/CORRECTNESS_FIXES_2026_09_04.md +0 -659
  255. package/src/engine/graphics/render/frame_graph/FRAME_GRAPH_RECOMMENDATIONS.md +0 -235
  256. package/src/engine/graphics/sh3/path_tracer/REVIEW_001_ACTION_PLAN.md +0 -490
  257. package/src/engine/graphics/texture/sampler/compare/FLIP_IMPLEMENTATION_PLAN.md +0 -466
  258. package/src/engine/input/GAMEPAD_API_PROPOSAL.md +0 -717
  259. package/src/engine/input/ecs/ism/ISM_DESIGN.md +0 -1523
  260. package/src/engine/input/ecs/ism/ISM_IMPLEMENTATION_PLAN.md +0 -627
  261. package/src/engine/navigation/mesh/OVERLAPPING_SURFACES_2026_08_25.md +0 -661
  262. package/src/engine/navigation/mesh/PATHFINDING_PLAN.md +0 -229
  263. package/src/engine/network/CONGESTION_CONTROL.md +0 -87
  264. package/src/engine/network/MESSAGE_TRANSPORT.md +0 -364
  265. package/src/engine/network/SMOOTHNESS_DESIGN.md +0 -400
  266. package/src/engine/physics/cloth/MEASUREMENTS.md +0 -5304
  267. package/src/engine/physics/cloth/PLAN.md +0 -3056
  268. package/src/engine/physics/fluid/GPU_FLUID_CASCADES_PROPOSAL_2026_10_16.md +0 -1382
  269. package/src/engine/physics/fluid/REVIEW_02_PLAN.md +0 -243
  270. package/src/engine/physics/fluid/solver/NOTES.md +0 -46
  271. package/src/engine/sound/SOUND_EMITTER_RETIREMENT_PLAN.md +0 -536
  272. package/src/engine/sound/simulation/IMPLEMENTATION_PLAN.md +0 -432
  273. package/src/engine/sound/simulation/PROBE_PLACEMENT.md +0 -250
  274. package/src/engine/sound/simulation/PROBE_TRANSFER_RESEARCH.md +0 -322
  275. package/src/engine/sound/simulation/REFLECTION_IR_PLAN.md +0 -261
  276. package/src/engine/sound/simulation/VISIBILITY_GRAPH_PLAN.md +0 -121
  277. package/src/engine/sound/sopra/IMPLEMENTATION_PLAN.md +0 -999
  278. package/src/format/image/avif/DECISIONS.md +0 -545
  279. package/src/format/image/jpeg/NOTES.md +0 -3
  280. package/src/format/scene/gltf/MESHOPT_COMPRESSION_PLAN.md +0 -814
  281. package/src/generation/COORDINATES.md +0 -54
  282. package/src/generation/REVIEW_01_ACTION_PLAN.md +0 -628
  283. package/src/generation/foliage/ANNUAL_SHOOTS_BRIEF_2026_10_25.md +0 -220
  284. package/src/generation/foliage/CROWN_FILLING_BRIEF_2026_10_26.md +0 -172
  285. package/src/generation/foliage/CROWN_FULLNESS_BRIEF_2026_10_26.md +0 -86
  286. package/src/generation/foliage/FOLIAGE_DESIGN.md +0 -547
  287. package/src/generation/foliage/FOLIAGE_PLAN.md +0 -198
  288. package/src/generation/foliage/LEAF_ARCHITECTURE_BRIEF_2026_10_26.md +0 -158
  289. package/src/generation/foliage/LOD_REWORK_BRIEF_2026_10_27.md +0 -521
  290. package/src/generation/foliage/REAL_TIME_TREES_BRIEF_2026_10_27.md +0 -86
  291. package/src/generation/foliage/SELF_ORGANIZING_FRAMEWORK_BRIEF_2026_10_26.md +0 -347
  292. package/src/generation/foliage/SHOOT_SYSTEMS_ALL_SPECIES_BRIEF_2026_10_26.md +0 -248
  293. package/src/generation/foliage/SPEEDTREE_COMPARISON_2026_10_24.md +0 -694
  294. package/src/generation/foliage/TWO_FRONT_ENDS_BRIEF_2026_10_28.md +0 -552
  295. package/src/shade/RENDERER_CONTRACT.md +0 -697
  296. package/src/shade/SHADER_F16_PROPOSAL_2026_10_24.md +0 -263
  297. package/src/shade/device/IMMEDIATE_DATA_PLAN_2026_08_28.md +0 -569
  298. package/src/shade/device/PASS_ENCODER_PROPOSAL_2026_08_31.md +0 -755
  299. package/src/shade/device/mock/EXTENSION_PROPOSAL_2026_08_22.md +0 -458
  300. package/src/shade/device/mock/IMPLEMENTATION_PLAN.md +0 -255
  301. package/src/shade/device/mock/REVIEW_2026_08_22.md +0 -527
  302. package/src/shade/device/timing/GPU_PROFILER_PROPOSAL_2026_08_28.md +0 -894
  303. package/src/shade/device/timing/profile/SGPT_FORMAT.md +0 -345
  304. package/src/shade/renderer/NOTES.md +0 -78
  305. package/src/shade/renderer/PLAN.md +0 -8
  306. package/src/shade/renderer/animation/ADDITIVE_BLENDING_PLAN.md +0 -145
  307. package/src/shade/renderer/animation/SKINNING_FRAME_PLAN.md +0 -357
  308. package/src/shade/renderer/atmosphere/NOTES.md +0 -6
  309. package/src/shade/renderer/camera/orbital/MomentumAxis.d.ts +0 -76
  310. package/src/shade/renderer/camera/orbital/MomentumAxis.d.ts.map +0 -1
  311. package/src/shade/renderer/camera/orbital/MomentumAxis.js +0 -164
  312. package/src/shade/renderer/camera/orbital/OrbitalCameraConfig.d.ts +0 -45
  313. package/src/shade/renderer/camera/orbital/OrbitalCameraConfig.d.ts.map +0 -1
  314. package/src/shade/renderer/camera/orbital/OrbitalCameraConfig.js +0 -66
  315. package/src/shade/renderer/camera/orbital/OrbitalCameraInput.d.ts +0 -98
  316. package/src/shade/renderer/camera/orbital/OrbitalCameraInput.d.ts.map +0 -1
  317. package/src/shade/renderer/camera/orbital/OrbitalCameraInput.js +0 -184
  318. package/src/shade/renderer/camera/orbital/OrbitalCameraRig.d.ts +0 -175
  319. package/src/shade/renderer/camera/orbital/OrbitalCameraRig.d.ts.map +0 -1
  320. package/src/shade/renderer/camera/orbital/OrbitalCameraRig.js +0 -411
  321. package/src/shade/renderer/camera/orbital/README.md +0 -81
  322. package/src/shade/renderer/camera/orbital/index.d.ts +0 -6
  323. package/src/shade/renderer/camera/orbital/index.d.ts.map +0 -1
  324. package/src/shade/renderer/camera/orbital/index.js +0 -9
  325. package/src/shade/renderer/extension/RENDER_EXTENSION_DESIGN.md +0 -964
  326. package/src/shade/renderer/fluid/GPU_FLUID_OCCUPANCY_AND_SOTA_REVIEW_2026_10_26.md +0 -361
  327. package/src/shade/renderer/geometry/bvh/BLAS_REFIT_BATCH_PLAN.md +0 -619
  328. package/src/shade/renderer/geometry/meshlet/COMPACTION_PLAN_2026_09_16.md +0 -674
  329. package/src/shade/renderer/geometry/sdf/NOTES.md +0 -6
  330. package/src/shade/renderer/geometry/virtual/ATTRIBUTE_PLAN_2026_09_18.md +0 -540
  331. package/src/shade/renderer/geometry/virtual/MICRON_COMPARISON_2026_08_20.md +0 -305
  332. package/src/shade/renderer/geometry/virtual/VGEO_FORMAT.md +0 -913
  333. package/src/shade/renderer/geometry/virtual/VIRTUAL_GEOMETRY_DESIGN.md +0 -787
  334. package/src/shade/renderer/geometry/virtual/VIRTUAL_GEOMETRY_PLAN.md +0 -481
  335. package/src/shade/renderer/geometry/virtual/VK_LOD_CLUSTERS_COMPARISON_2026_08_20.md +0 -301
  336. package/src/shade/renderer/geometry/virtual/WEDGE_PLAN_2026_09_18.md +0 -448
  337. package/src/shade/renderer/geometry/virtual/runtime/CULL_PLAN_2026_09_16.md +0 -385
  338. package/src/shade/renderer/geometry/virtual/runtime/CUT_PLAN_2026_09_14.md +0 -656
  339. package/src/shade/renderer/geometry/virtual/runtime/REVIEW_LEDGER.md +0 -308
  340. package/src/shade/renderer/geometry/virtual/runtime/RUNTIME_PLAN.md +0 -657
  341. package/src/shade/renderer/geometry/virtual/runtime/RUNTIME_PLAN_2026_09_14.md +0 -551
  342. package/src/shade/renderer/geometry/virtual/runtime/SHADOW_PLAN_2026_09_28.md +0 -529
  343. package/src/shade/renderer/geometry/virtual/sdf/VGEO_SDF.d.ts +0 -47
  344. package/src/shade/renderer/geometry/virtual/sdf/VGEO_SDF.d.ts.map +0 -1
  345. package/src/shade/renderer/geometry/virtual/sdf/VGEO_SDF.js +0 -80
  346. package/src/shade/renderer/geometry/virtual/sdf/shader_vgeo_sdf_collect.d.ts +0 -16
  347. package/src/shade/renderer/geometry/virtual/sdf/shader_vgeo_sdf_collect.d.ts.map +0 -1
  348. package/src/shade/renderer/geometry/virtual/sdf/shader_vgeo_sdf_collect.js +0 -67
  349. package/src/shade/renderer/geometry/virtual/sdf/shader_vgeo_sdf_decode.d.ts +0 -17
  350. package/src/shade/renderer/geometry/virtual/sdf/shader_vgeo_sdf_decode.d.ts.map +0 -1
  351. package/src/shade/renderer/geometry/virtual/sdf/shader_vgeo_sdf_decode.js +0 -145
  352. package/src/shade/renderer/geometry/virtual/sdf/shader_vgeo_sdf_traverse.d.ts +0 -12
  353. package/src/shade/renderer/geometry/virtual/sdf/shader_vgeo_sdf_traverse.d.ts.map +0 -1
  354. package/src/shade/renderer/geometry/virtual/sdf/shader_vgeo_sdf_traverse.js +0 -105
  355. package/src/shade/renderer/global_illumination/lpv/NOTES.md +0 -3
  356. package/src/shade/renderer/global_illumination/probe_clipmap/PROBE_CLIPMAP_PROPOSAL_2026_10_27.md +0 -4306
  357. package/src/shade/renderer/global_illumination/probe_clipmap/PROBE_RAYS_VARIABLE_AND_SORTED_SCOPE_2026_10_30.md +0 -410
  358. package/src/shade/renderer/global_illumination/sharc/NOTES.md +0 -8
  359. package/src/shade/renderer/gpu_primitive/bvh/GPU_BVH_BUILD_PLAN.md +0 -1369
  360. package/src/shade/renderer/gpu_primitive/bvh/PHASE1_HANDOVER.md +0 -202
  361. package/src/shade/renderer/gpu_primitive/indirect/NOTES.md +0 -94
  362. package/src/shade/renderer/hiz/NOTES.md +0 -3
  363. package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.d.ts +0 -8
  364. package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.d.ts.map +0 -1
  365. package/src/shade/renderer/light/cluster/NOTES.md +0 -11
  366. package/src/shade/renderer/light/cluster/PROPOSAL_ALGORITHM_2026_10_16.md +0 -524
  367. package/src/shade/renderer/light/cluster/PROPOSAL_HIERARCHICAL_2026_10_16.md +0 -1101
  368. package/src/shade/renderer/material/resident/shader_resident_texture_means.d.ts +0 -24
  369. package/src/shade/renderer/material/resident/shader_resident_texture_means.d.ts.map +0 -1
  370. package/src/shade/renderer/material/resident/shader_resident_texture_means.js +0 -120
  371. package/src/shade/renderer/particles/DESIGN.md +0 -1011
  372. package/src/shade/renderer/particles/EMITTER_GLOBAL_STATE_PLAN_2026_10_29.md +0 -280
  373. package/src/shade/renderer/particles/ORIENTATION_PLAN_2026_10_15.md +0 -453
  374. package/src/shade/renderer/path_tracer/PATH_TRACED_MEDIA_PLAN_2026_10_02.md +0 -520
  375. package/src/shade/renderer/postprocess/bloom/NOTES.md +0 -6
  376. package/src/shade/renderer/postprocess/fsr/NOTES.md +0 -4
  377. package/src/shade/renderer/postprocess/gtao/NOTES.md +0 -6
  378. package/src/shade/renderer/postprocess/nss/NOTES.md +0 -332
  379. package/src/shade/renderer/postprocess/perspective/NOTES.md +0 -3
  380. package/src/shade/renderer/postprocess/sscs/NOTES.md +0 -5
  381. package/src/shade/renderer/postprocess/ssr/NOTES.md +0 -14
  382. package/src/shade/renderer/postprocess/ssr/REPROJECTION_PROPOSAL.md +0 -286
  383. package/src/shade/renderer/postprocess/ssr/prefilter/NOTES.md +0 -39
  384. package/src/shade/renderer/postprocess/taa/NOTES.md +0 -11
  385. package/src/shade/renderer/postprocess/upscale-dither/NOTES.md +0 -78
  386. package/src/shade/renderer/postprocess/vrs/NOTES.md +0 -4
  387. package/src/shade/renderer/rasterize/native/avboit/AVBOIT_LEDGER.md +0 -1218
  388. package/src/shade/renderer/rasterize/native/avboit/AVBOIT_PLAN_2026_09_03.md +0 -600
  389. package/src/shade/renderer/restir/reservoir/NOTES.md +0 -6
  390. package/src/shade/renderer/shader/chunk/atmosphere/NOTES.md +0 -6
  391. package/src/shade/renderer/shader/chunk/brdf/FRESNEL_BRIEF_2026_10_16.md +0 -391
  392. package/src/shade/renderer/shader/chunk/color/tonemap/ACES_TONE_MAPPING_BRIEF_2026_10_17.md +0 -153
  393. package/src/shade/renderer/shader/chunk/color/tonemap/HDR_TONE_MAPPING_FORMS_BRIEF_2026_10_16.md +0 -322
  394. package/src/shade/renderer/shader/chunk/color/tonemap/SDR_TONE_MAPPING_BRIEF_2026_10_16.md +0 -247
  395. package/src/shade/renderer/shader/chunk/fsr/NOTES.md +0 -3
  396. package/src/shade/renderer/shader/chunk/fsr/spd/NOTES.md +0 -4
  397. package/src/shade/renderer/shader/chunk/geometry/ray/NOTES.md +0 -4
  398. package/src/shade/renderer/shader/chunk/material/MULTISCATTER.md +0 -159
  399. package/src/shade/renderer/shader/chunk/mboit/NOTES.md +0 -38
  400. package/src/shade/renderer/shader/chunk/spherical_harmonics/l1i/NOTES.md +0 -3
  401. package/src/shade/renderer/shader/chunk/spherical_harmonics/sampling/NOTES.md +0 -8
  402. package/src/shade/renderer/shader/compiler/SHADER_SWITCH_PROPOSAL_2026_10_16.md +0 -927
  403. package/src/shade/renderer/shadow/contact/FINDINGS.md +0 -413
  404. package/src/shade/renderer/shadow/map/csm/NOTES.md +0 -5
  405. package/src/shade/renderer/shadow/ray/NOTES.md +0 -31
  406. package/src/shade/renderer/shadow/sdf/NOTES.md +0 -9
  407. package/src/shade/renderer/shadow/sdf/brixelizer/NOTES.md +0 -5
  408. package/src/shade/renderer/shadow/sdf/cascade/NOTES.md +0 -9
  409. package/src/shade/renderer/shadow/vsm/NOTES.md +0 -12
  410. package/src/shade/renderer/shadow/vsm/PLAN.md +0 -442
  411. package/src/shade/renderer/shadow/vsm/REVIEW_LEDGER.md +0 -43
  412. package/src/shade/renderer/texture/COMPRESSED_TEXTURE_PLAN_2026_09_01.md +0 -2444
  413. package/src/shade/renderer/texture/mipmaps/NOTES.md +0 -3
  414. package/src/shade/renderer/volumetrics/NOTES.md +0 -1329
  415. package/src/shade/renderer/volumetrics/VOLUMETRIC_NOISE_PLAN_2026_10_15.md +0 -336
  416. package/src/shade/renderer/water/medium/GPUWaterBodies.d.ts +0 -23
  417. package/src/shade/renderer/water/medium/GPUWaterBodies.d.ts.map +0 -1
  418. package/src/shade/renderer/water/medium/GPUWaterBodies.js +0 -75
  419. package/src/shade/wgsl/NOTES.md +0 -4
@@ -1,66 +0,0 @@
1
- /**
2
- * Tunable "feel" parameters for the orbital camera, shared by the control core
3
- * ({@link OrbitalCameraRig}) and the input adapter ({@link OrbitalCameraInput}).
4
- * One frozen source of truth so the two layers can never disagree.
5
- *
6
- * The model is **direct drive + release momentum** (a "throw", like Google Earth
7
- * / Cesium), NOT a smoothed-target spring. While dragging, the camera follows
8
- * input 1:1 (no lag, fully responsive). On release the recent input velocity is
9
- * carried forward and decays exponentially — the weighty follow-through. See
10
- * {@link MomentumAxis}.
11
- *
12
- * Defaults grounded in the competitor survey:
13
- * - `momentumDecayHalfLife` ≈ Cesium spin inertia (tau 2.5 → half-life 0.28 s).
14
- * - `velocityWindow` ≈ Mapbox's 160 ms release-velocity window (a touch shorter).
15
- * - `zoomStep` 0.9 multiplicative per notch ≈ three.js `pow(0.95, zoomSpeed)`.
16
- */
17
- export const ORBITAL_CAMERA_FEEL_DEFAULTS = Object.freeze({
18
- // ── momentum / inertia (rotate + pan) ───────────────────────────────────
19
- // false → motion stops the instant input ends (direct, zero-inertia; the
20
- // Maya/CAD "precision" feel).
21
- momentumEnabled: true,
22
- // seconds for the coast velocity to halve. Larger = longer, heavier glide.
23
- momentumDecayHalfLife: 0.10,
24
- // seconds of recent input averaged to derive the throw velocity on release.
25
- // Averaging (vs. taking the last frame) rejects a single jittery final frame.
26
- velocityWindow: 0.10,
27
- // below this angular speed (rad/s) the coast snaps to rest. Pan scales this
28
- // by the orbit distance so the stop feels the same at any zoom.
29
- momentumStopSpeed: 0.012,
30
-
31
- // ── input mapping ───────────────────────────────────────────────────────
32
- rotateSpeed: 1.0, // gain on pointer-pixels → radians
33
- panSpeed: 1.0, // gain on pan drag
34
- zoomStep: 0.9, // multiplicative distance factor per wheel notch (direct/instant)
35
- invertWheel: false,
36
-
37
- // ── orbit limits ────────────────────────────────────────────────────────
38
- minPolar: 1e-6, // pitch clamp (radians), keep off the exact poles
39
- maxPolar: Math.PI - 1e-6,
40
-
41
- // ── programmatic framing glide (flyTo); 0 = instant snap ────────────────
42
- flyToDuration: 0.35,
43
-
44
- // ── dt safety ───────────────────────────────────────────────────────────
45
- maxDt: 0.1, // clamp tab-hitch / first-frame spikes (seconds)
46
- });
47
-
48
- /**
49
- * Merge overrides over the defaults to produce a controller config.
50
- * @param {Partial<typeof ORBITAL_CAMERA_FEEL_DEFAULTS>} [overrides]
51
- * @returns {typeof ORBITAL_CAMERA_FEEL_DEFAULTS}
52
- */
53
- export function createOrbitalCameraConfig(overrides = {}) {
54
- return { ...ORBITAL_CAMERA_FEEL_DEFAULTS, ...overrides };
55
- }
56
-
57
- /**
58
- * Ready-made "Precision" profile: no inertia — the camera stops the instant you
59
- * release (direct mouse-delta control, can stop on a pixel), the Maya/CAD
60
- * convention.
61
- * @param {Partial<typeof ORBITAL_CAMERA_FEEL_DEFAULTS>} [overrides]
62
- * @returns {typeof ORBITAL_CAMERA_FEEL_DEFAULTS}
63
- */
64
- export function createPrecisionProfile(overrides = {}) {
65
- return createOrbitalCameraConfig({ momentumEnabled: false, ...overrides });
66
- }
@@ -1,98 +0,0 @@
1
- /**
2
- * The INPUT ADAPTER for the orbital camera. Translates pointer/keyboard events
3
- * into {@link OrbitalCameraRig} intents — no camera state, no kinematics. Input
4
- * and control stay decoupled, so the rig is testable with plain numbers and this
5
- * adapter is testable by firing synthetic signals at injected fake devices.
6
- *
7
- * A drag is a bracketed gesture: `dragStart` engages the rig (rotate or pan,
8
- * chosen by which button is down), each `drag` applies a delta directly (1:1),
9
- * and `dragEnd` releases — handing the rig the recent velocity so it can throw.
10
- * Continuous WASD is sampled per frame from {@link update}.
11
- *
12
- * @author Alex Goldring (orbital rework)
13
- * @copyright Company Named Limited (c) 2026
14
- */
15
- export class OrbitalCameraInput {
16
- /**
17
- * @param {object} deps
18
- * @param {import("./OrbitalCameraRig.js").OrbitalCameraRig} deps.rig
19
- * @param {import("../../../../engine/input/devices/PointerDevice.js").PointerDevice} deps.pointer
20
- * @param {import("../../../../engine/input/devices/KeyboardDevice.js").default} deps.keyboard
21
- * @param {{ clientHeight: number }} deps.viewport pixel→angle scaling source (canvas/DOM element)
22
- * @param {{ fov: number }} deps.lens vertical fov in radians (e.g. the PerspectiveCamera)
23
- * @param {object} deps.config shared feel config
24
- */
25
- constructor({ rig, pointer, keyboard, viewport, lens, config }: {
26
- rig: import("./OrbitalCameraRig.js").OrbitalCameraRig;
27
- pointer: import("../../../../engine/input/devices/PointerDevice.js").PointerDevice;
28
- keyboard: import("../../../../engine/input/devices/KeyboardDevice.js").default;
29
- viewport: {
30
- clientHeight: number;
31
- };
32
- lens: {
33
- fov: number;
34
- };
35
- config: object;
36
- });
37
- rig: import("./OrbitalCameraRig.js").OrbitalCameraRig;
38
- pointer: import("../../../../engine/input/devices/PointerDevice.js").PointerDevice;
39
- keyboard: import("../../../../engine/input/devices/KeyboardDevice.js").default;
40
- viewport: {
41
- clientHeight: number;
42
- };
43
- lens: {
44
- fov: number;
45
- };
46
- config: any;
47
- _connected: boolean;
48
- /** @type {'rotate'|'pan'|null} active gesture */
49
- _mode: 'rotate' | 'pan' | null;
50
- _onDragStart: any;
51
- _onDrag: any;
52
- _onDragEnd: any;
53
- _onWheel: any;
54
- _onPinch: any;
55
- _onCancel: any;
56
- _cancelTarget: Element;
57
- /** Subscribe to device signals. Idempotent. */
58
- connect(): void;
59
- /** Unsubscribe. Releases any in-flight gesture so the rig doesn't hang engaged. */
60
- disconnect(): void;
61
- /**
62
- * Sample continuous (held-key) input. Called once per frame with the frame dt.
63
- * @param {number} dt seconds
64
- */
65
- update(dt: number): void;
66
- _handleDragStart(): void;
67
- /**
68
- * @param {{x:number,y:number}} position
69
- * @param {{x:number,y:number}} _origin
70
- * @param {{x:number,y:number}} lastPosition
71
- */
72
- _handleDrag(position: {
73
- x: number;
74
- y: number;
75
- }, _origin: {
76
- x: number;
77
- y: number;
78
- }, lastPosition: {
79
- x: number;
80
- y: number;
81
- }): void;
82
- _handleDragEnd(): void;
83
- _endGesture(): void;
84
- _cancelGesture(): void;
85
- /** @param {{x:number,y:number,z:number}} delta wheel delta (meep normalizes to signs) */
86
- _handleWheel(delta: {
87
- x: number;
88
- y: number;
89
- z: number;
90
- }): void;
91
- /**
92
- * Forward-compatible pinch handler. `scale` is the finger-spread ratio
93
- * (>1 spreading = zoom in). Inert until meep dispatches on.pinch.
94
- * @param {number} scale
95
- */
96
- _handlePinch(scale: number): void;
97
- }
98
- //# sourceMappingURL=OrbitalCameraInput.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"OrbitalCameraInput.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/camera/orbital/OrbitalCameraInput.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH;IACI;;;;;;;;OAQG;IACH;QAPkE,GAAG,EAA1D,OAAO,uBAAuB,EAAE,gBAAgB;QACgC,OAAO,EAAvF,OAAO,mDAAmD,EAAE,aAAa;QACE,QAAQ,EAAnF,OAAO,oDAAoD,EAAE,OAAO;QACrC,QAAQ,EAAvC;YAAE,YAAY,EAAE,MAAM,CAAA;SAAE;QACF,IAAI,EAA1B;YAAE,GAAG,EAAE,MAAM,CAAA;SAAE;QACF,MAAM,EAAnB,MAAM;OAqBhB;IAlBG,sDAAc;IACd,mFAAsB;IACtB,+EAAwB;IACxB;sBARuB,MAAM;MAQL;IACxB;aARc,MAAM;MAQJ;IAChB,YAAoB;IAEpB,oBAAuB;IACvB,iDAAiD;IACjD,OADW,QAAQ,GAAC,KAAK,GAAC,IAAI,CACb;IAEjB,kBAAoD;IACpD,aAA0C;IAC1C,gBAAgD;IAChD,cAA4C;IAC5C,cAA4C;IAC5C,eAA+C;IAC/C,uBAAyB;IAG7B,+CAA+C;IAC/C,gBAgBC;IAED,mFAAmF;IACnF,mBAgBC;IAED;;;OAGG;IACH,WAFW,MAAM,QAShB;IAID,yBAQC;IAED;;;;OAIG;IACH,sBAJW;QAAC,CAAC,EAAC,MAAM,CAAC;QAAA,CAAC,EAAC,MAAM,CAAA;KAAC,WACnB;QAAC,CAAC,EAAC,MAAM,CAAC;QAAA,CAAC,EAAC,MAAM,CAAA;KAAC,gBACnB;QAAC,CAAC,EAAC,MAAM,CAAC;QAAA,CAAC,EAAC,MAAM,CAAA;KAAC,QAe7B;IAED,uBAEC;IAED,oBAOC;IAED,uBAMC;IAID,yFAAyF;IACzF,oBADY;QAAC,CAAC,EAAC,MAAM,CAAC;QAAA,CAAC,EAAC,MAAM,CAAC;QAAA,CAAC,EAAC,MAAM,CAAA;KAAC,QAmBvC;IAED;;;;OAIG;IACH,oBAFW,MAAM,QAOhB;CACJ"}
@@ -1,184 +0,0 @@
1
- /**
2
- * The INPUT ADAPTER for the orbital camera. Translates pointer/keyboard events
3
- * into {@link OrbitalCameraRig} intents — no camera state, no kinematics. Input
4
- * and control stay decoupled, so the rig is testable with plain numbers and this
5
- * adapter is testable by firing synthetic signals at injected fake devices.
6
- *
7
- * A drag is a bracketed gesture: `dragStart` engages the rig (rotate or pan,
8
- * chosen by which button is down), each `drag` applies a delta directly (1:1),
9
- * and `dragEnd` releases — handing the rig the recent velocity so it can throw.
10
- * Continuous WASD is sampled per frame from {@link update}.
11
- *
12
- * @author Alex Goldring (orbital rework)
13
- * @copyright Company Named Limited (c) 2026
14
- */
15
- export class OrbitalCameraInput {
16
- /**
17
- * @param {object} deps
18
- * @param {import("./OrbitalCameraRig.js").OrbitalCameraRig} deps.rig
19
- * @param {import("../../../../engine/input/devices/PointerDevice.js").PointerDevice} deps.pointer
20
- * @param {import("../../../../engine/input/devices/KeyboardDevice.js").default} deps.keyboard
21
- * @param {{ clientHeight: number }} deps.viewport pixel→angle scaling source (canvas/DOM element)
22
- * @param {{ fov: number }} deps.lens vertical fov in radians (e.g. the PerspectiveCamera)
23
- * @param {object} deps.config shared feel config
24
- */
25
- constructor({ rig, pointer, keyboard, viewport, lens, config }) {
26
- this.rig = rig;
27
- this.pointer = pointer;
28
- this.keyboard = keyboard;
29
- this.viewport = viewport;
30
- this.lens = lens;
31
- this.config = config;
32
-
33
- this._connected = false;
34
- /** @type {'rotate'|'pan'|null} active gesture */
35
- this._mode = null;
36
-
37
- this._onDragStart = this._handleDragStart.bind(this);
38
- this._onDrag = this._handleDrag.bind(this);
39
- this._onDragEnd = this._handleDragEnd.bind(this);
40
- this._onWheel = this._handleWheel.bind(this);
41
- this._onPinch = this._handlePinch.bind(this);
42
- this._onCancel = this._cancelGesture.bind(this);
43
- this._cancelTarget = null;
44
- }
45
-
46
- /** Subscribe to device signals. Idempotent. */
47
- connect() {
48
- if (this._connected) {
49
- return;
50
- }
51
- this._connected = true;
52
-
53
- this.pointer.on.dragStart.add(this._onDragStart);
54
- this.pointer.on.drag.add(this._onDrag);
55
- this.pointer.on.dragEnd.add(this._onDragEnd);
56
- this.pointer.on.wheel.add(this._onWheel);
57
- // meep declares on.pinch but does not yet dispatch it (touch users get
58
- // single-pointer rotate via drag). Wired so pinch works once it lands.
59
- this.pointer.on.pinch.add(this._onPinch);
60
- this._cancelTarget = this.pointer.domElement;
61
- this._cancelTarget.addEventListener("pointercancel", this._onCancel);
62
- window.addEventListener("blur", this._onCancel);
63
- }
64
-
65
- /** Unsubscribe. Releases any in-flight gesture so the rig doesn't hang engaged. */
66
- disconnect() {
67
- if (!this._connected) {
68
- return;
69
- }
70
- this._connected = false;
71
-
72
- this.pointer.on.dragStart.remove(this._onDragStart);
73
- this.pointer.on.drag.remove(this._onDrag);
74
- this.pointer.on.dragEnd.remove(this._onDragEnd);
75
- this.pointer.on.wheel.remove(this._onWheel);
76
- this.pointer.on.pinch.remove(this._onPinch);
77
- this._cancelTarget.removeEventListener("pointercancel", this._onCancel);
78
- this._cancelTarget = null;
79
- window.removeEventListener("blur", this._onCancel);
80
-
81
- this._endGesture();
82
- }
83
-
84
- /**
85
- * Sample continuous (held-key) input. Called once per frame with the frame dt.
86
- * @param {number} dt seconds
87
- */
88
- update(dt) {
89
- const keys = this.keyboard.keys;
90
- const z = (keys.w?.is_down ? 1 : 0) + (keys.s?.is_down ? -1 : 0);
91
- const x = (keys.a?.is_down ? 1 : 0) + (keys.d?.is_down ? -1 : 0);
92
- if (x !== 0 || z !== 0) {
93
- this.rig.truckLocal(x, z, dt);
94
- }
95
- }
96
-
97
- // ── gesture lifecycle ────────────────────────────────────────────────────
98
-
99
- _handleDragStart() {
100
- // pick the gesture by which button is held when the drag begins
101
- this._mode = this.pointer.mouseButtonRight?.is_down ? "pan" : "rotate";
102
- if (this._mode === "pan") {
103
- this.rig.engagePan();
104
- } else {
105
- this.rig.engageRotate();
106
- }
107
- }
108
-
109
- /**
110
- * @param {{x:number,y:number}} position
111
- * @param {{x:number,y:number}} _origin
112
- * @param {{x:number,y:number}} lastPosition
113
- */
114
- _handleDrag(position, _origin, lastPosition) {
115
- if (this._mode === null) {
116
- return;
117
- }
118
- const dx = lastPosition.x - position.x;
119
- const dy = lastPosition.y - position.y;
120
-
121
- if (this._mode === "pan") {
122
- this.rig.panScreen(dx * this.config.panSpeed, dy * this.config.panSpeed, this.viewport.clientHeight, this.lens.fov);
123
- } else {
124
- const scale = (this.config.rotateSpeed * Math.PI * 2) / this.viewport.clientHeight;
125
- this.rig.rotate(dy * scale, dx * scale); // dPhi from vertical, dTheta from horizontal
126
- }
127
- }
128
-
129
- _handleDragEnd() {
130
- this._endGesture();
131
- }
132
-
133
- _endGesture() {
134
- if (this._mode === "pan") {
135
- this.rig.disengagePan();
136
- } else if (this._mode === "rotate") {
137
- this.rig.disengageRotate();
138
- }
139
- this._mode = null;
140
- }
141
-
142
- _cancelGesture() {
143
- if (this._mode === null) {
144
- return;
145
- }
146
- this.rig.cancelGesture();
147
- this._mode = null;
148
- }
149
-
150
- // ── zoom ─────────────────────────────────────────────────────────────────
151
-
152
- /** @param {{x:number,y:number,z:number}} delta wheel delta (meep normalizes to signs) */
153
- _handleWheel(delta) {
154
- let max = delta.x;
155
- if (Math.abs(delta.y) > Math.abs(max)) {
156
- max = delta.y;
157
- }
158
- if (Math.abs(delta.z) > Math.abs(max)) {
159
- max = delta.z;
160
- }
161
- if (max === 0) {
162
- return;
163
- }
164
-
165
- let s = Math.sign(max);
166
- if (this.config.invertWheel) {
167
- s = -s;
168
- }
169
- // scroll down (s>0) → factor>1 → zoom out; multiplicative = scale-uniform
170
- this.rig.dolly(Math.pow(this.config.zoomStep, -s));
171
- }
172
-
173
- /**
174
- * Forward-compatible pinch handler. `scale` is the finger-spread ratio
175
- * (>1 spreading = zoom in). Inert until meep dispatches on.pinch.
176
- * @param {number} scale
177
- */
178
- _handlePinch(scale) {
179
- if (typeof scale !== "number" || !(scale > 0)) {
180
- return;
181
- }
182
- this.rig.dolly(1 / scale);
183
- }
184
- }
@@ -1,175 +0,0 @@
1
- /**
2
- * The CONTROL CORE of the orbital camera — pure kinematics with no knowledge of
3
- * the DOM, input devices, or a wall clock. Drive it with intents, advance it
4
- * with an explicit `dt`, read a {@link Transform} back out. Unit testable with
5
- * plain numbers (see `OrbitalCameraRig.spec.js`).
6
- *
7
- * Feel model: **direct drive + release momentum** (a "throw"), via
8
- * {@link MomentumAxis}. A drag is bracketed by `engageRotate`/`disengageRotate`
9
- * (or pan); between them the orbit angles / target follow input 1:1 — no lag.
10
- * On disengage the recent input velocity is carried forward and decays to a
11
- * weighty stop. This is the Google-Earth/Cesium feel, not a spring chasing a
12
- * goal. Set `config.momentumEnabled = false` for an instant stop (precision).
13
- *
14
- * Zoom is applied directly (multiplicative, instant) — wheel notches are
15
- * discrete impulses, so there is nothing to "catch up" and no lag to hide.
16
- *
17
- * @author Alex Goldring (orbital rework)
18
- * @copyright Company Named Limited (c) 2026
19
- */
20
- export class OrbitalCameraRig {
21
- /**
22
- * @param {object} [options]
23
- * @param {ReturnType<typeof createOrbitalCameraConfig>} [options.config]
24
- * @param {NumericInterval} [options.distanceLimits]
25
- * @param {number} [options.movementSpeedScale]
26
- */
27
- constructor({ config, distanceLimits, movementSpeedScale }?: {
28
- config?: ReturnType<typeof createOrbitalCameraConfig>;
29
- distanceLimits?: NumericInterval;
30
- movementSpeedScale?: number;
31
- });
32
- config: Readonly<{
33
- momentumEnabled: true;
34
- momentumDecayHalfLife: 0.1;
35
- velocityWindow: 0.1;
36
- momentumStopSpeed: 0.012; /**
37
- * @param {object} [options]
38
- * @param {ReturnType<typeof createOrbitalCameraConfig>} [options.config]
39
- * @param {NumericInterval} [options.distanceLimits]
40
- * @param {number} [options.movementSpeedScale]
41
- */
42
- rotateSpeed: 1;
43
- panSpeed: 1;
44
- zoomStep: 0.9;
45
- invertWheel: false;
46
- minPolar: 0.000001;
47
- maxPolar: number;
48
- flyToDuration: 0.35;
49
- maxDt: 0.1;
50
- }>;
51
- distanceLimits: NumericInterval;
52
- movementSpeedScale: number;
53
- _phi: MomentumAxis;
54
- _theta: MomentumAxis;
55
- _tx: MomentumAxis;
56
- _ty: MomentumAxis;
57
- _tz: MomentumAxis;
58
- distance: number;
59
- _directDirty: boolean;
60
- _fly: {
61
- phi0: number;
62
- theta0: number;
63
- dist0: number;
64
- tx0: number;
65
- ty0: number;
66
- tz0: number;
67
- phi1: number;
68
- theta1: any;
69
- dist1: number;
70
- tx1: number;
71
- ty1: number;
72
- tz1: number;
73
- t: number;
74
- };
75
- _basisTransform: Transform64;
76
- _scratchTransform: Transform64;
77
- _scratchTarget: Vector3;
78
- /** Begin an orbit drag (pointer down). Cancels any coast/fly and takes direct control. */
79
- engageRotate(): void;
80
- /**
81
- * Apply an orbit delta directly (1:1). `dPhi` pitches (clamped to the polar
82
- * range), `dTheta` yaws. Radians.
83
- * @param {number} dPhi
84
- * @param {number} dTheta
85
- */
86
- rotate(dPhi: number, dTheta: number): void;
87
- /** End the orbit drag (pointer up): throw with the recent input velocity (or stop dead). */
88
- disengageRotate(): void;
89
- /** Begin a pan drag (pointer down, pan button). */
90
- engagePan(): void;
91
- /**
92
- * Screen-space pan: drag the target in the current view plane, directly (1:1).
93
- * `dx`/`dy` are pointer-pixel deltas (sign: last − current, "grab the world").
94
- * @param {number} dx pixels
95
- * @param {number} dy pixels
96
- * @param {number} viewportHeight pixels
97
- * @param {number} fov vertical fov, radians
98
- */
99
- panScreen(dx: number, dy: number, viewportHeight: number, fov: number): void;
100
- /** End the pan drag: throw the target with the recent velocity (or stop dead). */
101
- disengagePan(): void;
102
- /** Abort direct control without throwing, retaining the last applied pose. */
103
- cancelGesture(): void;
104
- /**
105
- * Multiplicative zoom, applied directly. `factor < 1` zooms in, `> 1` out.
106
- * Scale-uniform and clamped to {@link distanceLimits}.
107
- * @param {number} factor
108
- */
109
- dolly(factor: number): void;
110
- /** Set the zoom distance directly (world units), clamped. */
111
- setDistance(distance: any): void;
112
- /**
113
- * Keyboard fly: move the target in the camera-local XZ plane (directly).
114
- * `x` strafe (±1), `z` forward/back (±1); speed scales with
115
- * {@link movementSpeedScale} and zoom-out, integrated over `dt`.
116
- * @param {number} x
117
- * @param {number} z
118
- * @param {number} dt seconds
119
- */
120
- truckLocal(x: number, z: number, dt: number): void;
121
- /**
122
- * Point the camera at `to` from `from`. Instant by default (snap), or an
123
- * eased glide over `config.flyToDuration` when `animate` is true.
124
- * @param {Vector3} from eye position
125
- * @param {Vector3} to look-at target
126
- * @param {object} [opts]
127
- * @param {boolean} [opts.animate=false]
128
- */
129
- frameTo(from: Vector3, to: Vector3, { animate }?: {
130
- animate?: boolean;
131
- }): void;
132
- /**
133
- * Advance one frame. Returns whether the pose changed (so the caller can skip
134
- * a redundant transform write when the camera is fully at rest).
135
- * @param {number} dt seconds
136
- * @returns {boolean}
137
- */
138
- update(dt: number): boolean;
139
- /**
140
- * Write the current pose into `out` (position + look rotation), preserving
141
- * its scale. Returns `out`.
142
- * @param {Transform} out
143
- * @returns {Transform}
144
- */
145
- composeTransform(out: Transform): Transform;
146
- get phi(): number;
147
- get theta(): number;
148
- /** True when nothing is engaged, coasting, or flying. */
149
- get isAtRest(): boolean;
150
- /**
151
- * Current target. Writes into `out` if given (no allocation), else a shared
152
- * scratch vector — copy it if you need to retain it.
153
- * @param {Vector3} [out]
154
- * @returns {Vector3}
155
- */
156
- getTarget(out?: Vector3): Vector3;
157
- _advanceFly(dt: any): boolean;
158
- _deriveOrbit(from: any, to: any): {
159
- phi: number;
160
- theta: number;
161
- distance: number;
162
- };
163
- _currentTarget(): Vector3;
164
- /** Matrix of the current pose, for deriving the pan/truck view basis. */
165
- _currentBasisMatrix(): Float64Array;
166
- _poseToTransform(out: any, phi: any, theta: any, radius: any, target: any): void;
167
- /** Representative of `target` angle nearest `current` (shortest arc). */
168
- _shortestAzimuth(target: any, current: any): any;
169
- }
170
- import { NumericInterval } from "../../../../core/math/interval/NumericInterval.js";
171
- import { MomentumAxis } from "./MomentumAxis.js";
172
- import { Transform64 } from "../../../../engine/ecs/transform/Transform64.js";
173
- import Vector3 from "../../../../core/geom/Vector3.js";
174
- import { createOrbitalCameraConfig } from "./OrbitalCameraConfig.js";
175
- //# sourceMappingURL=OrbitalCameraRig.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"OrbitalCameraRig.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/camera/orbital/OrbitalCameraRig.js"],"names":[],"mappings":"AAYA;;;;;;;;;;;;;;;;;;GAkBG;AACH;IACI;;;;;OAKG;IACH;QAJkE,MAAM,GAA7D,WAAW,gCAAgC,CAAC;QAClB,cAAc,GAAxC,eAAe;QACE,kBAAkB,GAAnC,MAAM;OA4BhB;IAzBG;;;;kCAPJ;;;;;WAKG;;;;;;;;;OAEqB;IACpB,gCAAsE;IACtE,2BAA4C;IAG5C,mBAAyC;IACzC,qBAAiC;IACjC,kBAA8B;IAC9B,kBAA8B;IAC9B,kBAA8B;IAG9B,iBAAiB;IAIjB,sBAAyB;IAGzB;;;;;;;;;;;;;;MAAgB;IAGhB,6BAAwC;IACxC,+BAA0C;IAC1C,wBAAmC;IAOvC,0FAA0F;IAC1F,qBAIC;IAED;;;;;OAKG;IACH,aAHW,MAAM,UACN,MAAM,QAKhB;IAED,4FAA4F;IAC5F,wBAGC;IAMD,mDAAmD;IACnD,kBAKC;IAED;;;;;;;OAOG;IACH,cALW,MAAM,MACN,MAAM,kBACN,MAAM,OACN,MAAM,QAsBhB;IAED,kFAAkF;IAClF,qBAMC;IAED,8EAA8E;IAC9E,sBAQC;IAMD;;;;OAIG;IACH,cAFW,MAAM,QAQhB;IAED,6DAA6D;IAC7D,iCAGC;IAED;;;;;;;OAOG;IACH,cAJW,MAAM,KACN,MAAM,MACN,MAAM,QAuBhB;IAMD;;;;;;;OAOG;IACH,cALW,OAAO,MACP,OAAO;QAEQ,OAAO,GAAtB,OAAO;aAyBjB;IAMD;;;;;OAKG;IACH,WAHW,MAAM,GACJ,OAAO,CAoCnB;IAED;;;;;OAKG;IACH,4CASC;IAID,kBAAqC;IACrC,oBAAyC;IACzC,yDAAyD;IACzD,wBAQC;IAED;;;;;OAKG;IACH,gBAHW,OAAO,GACL,OAAO,CAMnB;IAMD,8BAiBC;IAED;;;;MAaC;IAED,0BAGC;IAED,yEAAyE;IACzE,oCAOC;IAED,iFAYC;IAED,yEAAyE;IACzE,iDAIC;CACJ;gCAtZ+B,mDAAmD;6BAGtD,mBAAmB;4BADpB,iDAAiD;oBADzD,kCAAkC;0CAGZ,0BAA0B"}