@woosh/meep-engine 3.20.0 → 3.21.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 (701) hide show
  1. package/build/bundle-worker-terrain.js +1 -1
  2. package/editor/Editor.d.ts.map +1 -1
  3. package/editor/enableEditor.d.ts.map +1 -1
  4. package/editor/particles/effect/ParticleEffectDocument.d.ts.map +1 -1
  5. package/editor/particles/effect/ParticleReferenceSimulation.d.ts.map +1 -1
  6. package/editor/templates/entity_templates.d.ts.map +1 -1
  7. package/editor/tools/v2/GizmoNode.d.ts +1 -1
  8. package/editor/tools/v2/GizmoNode.d.ts.map +1 -1
  9. package/editor/view/ecs/HierarchicalEntityListView.d.ts +3 -3
  10. package/editor/view/ecs/HierarchicalEntityListView.d.ts.map +1 -1
  11. package/editor/view/makeEntityDecorators.d.ts.map +1 -1
  12. package/editor/view/node-graph/NodeGraphClipboard.d.ts.map +1 -1
  13. package/editor/view/tools/ToolSettingsView.d.ts +1 -1
  14. package/editor/view/tools/ToolSettingsView.d.ts.map +1 -1
  15. package/package.json +12 -12
  16. package/src/core/IdPool.d.ts.map +1 -1
  17. package/src/core/binary/32BitEncoder.d.ts.map +1 -1
  18. package/src/core/binary/BinaryBuffer.d.ts +1 -1
  19. package/src/core/binary/BinaryBuffer.d.ts.map +1 -1
  20. package/src/core/bvh2/binary/2/BinaryUint32BVH.d.ts +1 -1
  21. package/src/core/bvh2/binary/2/BinaryUint32BVH.d.ts.map +1 -1
  22. package/src/core/bvh2/bvh3/BVH.d.ts +3 -3
  23. package/src/core/bvh2/bvh3/BVH.d.ts.map +1 -1
  24. package/src/core/bvh2/bvh3/BVH.js +1 -2
  25. package/src/core/bvh2/bvh3/query/bvh_query_user_data_nearest_to_point_filtered.d.ts.map +1 -1
  26. package/src/core/bvh2/traversal/aabb3_detailed_volume_intersection_callback_based.d.ts.map +1 -1
  27. package/src/core/cache/Cache.d.ts +1 -1
  28. package/src/core/cache/Cache.d.ts.map +1 -1
  29. package/src/core/cache/wtinylfu/CacheWTinylfu.d.ts.map +1 -1
  30. package/src/core/collection/list/List.d.ts.map +1 -1
  31. package/src/core/collection/list/ListForwarder.d.ts +1 -1
  32. package/src/core/collection/list/ListForwarder.d.ts.map +1 -1
  33. package/src/core/collection/map/HashMap.d.ts.map +1 -1
  34. package/src/core/collection/set/ArraySet.d.ts.map +1 -1
  35. package/src/core/collection/table/RowFirstTable.d.ts +1 -1
  36. package/src/core/collection/table/RowFirstTable.d.ts.map +1 -1
  37. package/src/core/collection/table/bind/TableRecord.d.ts +1 -1
  38. package/src/core/collection/table/bind/TableRecord.d.ts.map +1 -1
  39. package/src/core/color/Color.d.ts +8 -8
  40. package/src/core/color/Color.d.ts.map +1 -1
  41. package/src/core/color/hsv/hsv_to_rgb_uint8.d.ts.map +1 -1
  42. package/src/core/color/hsv/rgb_to_hsv.d.ts.map +1 -1
  43. package/src/core/events/signal/Signal.d.ts +1 -1
  44. package/src/core/events/signal/Signal.d.ts.map +1 -1
  45. package/src/core/events/signal/signal_aggregate_by_time_window.d.ts.map +1 -1
  46. package/src/core/fsm/simple/SimpleStateMachineDescription.d.ts.map +1 -1
  47. package/src/core/geom/2d/aabb/AABB2.d.ts +4 -4
  48. package/src/core/geom/2d/aabb/AABB2.d.ts.map +1 -1
  49. package/src/core/geom/2d/bvh/BVH2D.d.ts +1 -1
  50. package/src/core/geom/2d/bvh/BVH2D.d.ts.map +1 -1
  51. package/src/core/geom/2d/triangle/tri2_rasterize_conservative.d.ts.map +1 -1
  52. package/src/core/geom/3d/aabb/AABB3.d.ts +6 -6
  53. package/src/core/geom/3d/aabb/AABB3.d.ts.map +1 -1
  54. package/src/core/geom/3d/atlas/atlas_bench_lib.d.ts.map +1 -1
  55. package/src/core/geom/3d/atlas/atlas_compute_charts.d.ts.map +1 -1
  56. package/src/core/geom/3d/atlas/atlas_generate.d.ts.map +1 -1
  57. package/src/core/geom/3d/atlas/pack/atlas_pack_charts.d.ts.map +1 -1
  58. package/src/core/geom/3d/atlas/param/atlas_chart_param_validity.d.ts.map +1 -1
  59. package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_bff.d.ts.map +1 -1
  60. package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_lscm.d.ts.map +1 -1
  61. package/src/core/geom/3d/atlas/segment/atlas_compute_planar_regions.d.ts.map +1 -1
  62. package/src/core/geom/3d/atlas/segment/atlas_segment_charts.d.ts.map +1 -1
  63. package/src/core/geom/3d/atlas/segment/atlas_segment_charts_atomic.d.ts.map +1 -1
  64. package/src/core/geom/3d/mat4/m4_decompose.d.ts +7 -1
  65. package/src/core/geom/3d/mat4/m4_decompose.d.ts.map +1 -1
  66. package/src/core/geom/3d/quadric/Quadric3.d.ts +11 -11
  67. package/src/core/geom/3d/quadric/Quadric3.d.ts.map +1 -1
  68. package/src/core/geom/3d/ray/Ray3.d.ts +3 -3
  69. package/src/core/geom/3d/ray/Ray3.d.ts.map +1 -1
  70. package/src/core/geom/3d/shape/TransformedShape3D.d.ts +1 -1
  71. package/src/core/geom/3d/shape/TransformedShape3D.d.ts.map +1 -1
  72. package/src/core/geom/3d/tetrahedra/TetrahedralMesh.d.ts.map +1 -1
  73. package/src/core/geom/3d/tetrahedra/delaunay/debug/push_boundary_with_validation.d.ts.map +1 -1
  74. package/src/core/geom/3d/tetrahedra/delaunay/debug/validate_cavity_boundary.d.ts.map +1 -1
  75. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_carve_outside_surface.d.ts.map +1 -1
  76. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_improve_quality.d.ts.map +1 -1
  77. package/src/core/geom/3d/tetrahedra/validate_tetrahedral_mesh.d.ts.map +1 -1
  78. package/src/core/geom/3d/tetrahedra/validate_tetrahedron_neighbourhood.d.ts.map +1 -1
  79. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_to_indexed_geometry.d.ts.map +1 -1
  80. package/src/core/geom/3d/util/aabb3_emit_point_grid.d.ts.map +1 -1
  81. package/src/core/geom/Quaternion.d.ts +4 -4
  82. package/src/core/geom/Quaternion.d.ts.map +1 -1
  83. package/src/core/geom/Vector1.d.ts +1 -1
  84. package/src/core/geom/Vector1.d.ts.map +1 -1
  85. package/src/core/geom/Vector2.d.ts +2 -2
  86. package/src/core/geom/Vector2.d.ts.map +1 -1
  87. package/src/core/geom/Vector3.d.ts +3 -3
  88. package/src/core/geom/Vector3.d.ts.map +1 -1
  89. package/src/core/geom/Vector4.d.ts +4 -4
  90. package/src/core/geom/Vector4.d.ts.map +1 -1
  91. package/src/core/geom/packing/max-rect/find_best_container.d.ts.map +1 -1
  92. package/src/core/geom/vec3/v3_hash.d.ts +12 -0
  93. package/src/core/geom/vec3/v3_hash.d.ts.map +1 -0
  94. package/src/core/geom/vec3/v3_hash.js +19 -0
  95. package/src/core/geom/vec3/v3_lerp.d.ts +3 -1
  96. package/src/core/geom/vec3/v3_lerp.d.ts.map +1 -1
  97. package/src/core/geom/vec3/v3_set.d.ts +14 -0
  98. package/src/core/geom/vec3/v3_set.d.ts.map +1 -0
  99. package/src/core/geom/vec3/v3_set.js +17 -0
  100. package/src/core/geom/vec3/v3_slerp.d.ts +3 -1
  101. package/src/core/geom/vec3/v3_slerp.d.ts.map +1 -1
  102. package/src/core/geom/vec4/v4_equals_array.d.ts +11 -0
  103. package/src/core/geom/vec4/v4_equals_array.d.ts.map +1 -0
  104. package/src/core/geom/vec4/v4_equals_array.js +16 -0
  105. package/src/core/geom/vec4/v4_hash.d.ts +12 -0
  106. package/src/core/geom/vec4/v4_hash.d.ts.map +1 -0
  107. package/src/core/geom/vec4/v4_hash.js +18 -0
  108. package/src/core/geom/vec4/v4_set.d.ts +15 -0
  109. package/src/core/geom/vec4/v4_set.d.ts.map +1 -0
  110. package/src/core/geom/vec4/v4_set.js +19 -0
  111. package/src/core/graph/convert_graph_to_dot_string.d.ts +1 -1
  112. package/src/core/graph/convert_graph_to_dot_string.d.ts.map +1 -1
  113. package/src/core/graph/metis/native/bisection/split_graph_two_way.d.ts.map +1 -1
  114. package/src/core/graph/metis/native/metis_partition_kway.d.ts.map +1 -1
  115. package/src/core/graph/metis/native/refine/fm_kway.d.ts.map +1 -1
  116. package/src/core/json/abstractJSONSerializer.d.ts.map +1 -1
  117. package/src/core/lang/reactive/AbstractCachingParser.d.ts.map +1 -1
  118. package/src/core/localization/Localization.d.ts.map +1 -1
  119. package/src/core/math/linalg/cg/cg_solve.d.ts.map +1 -1
  120. package/src/core/math/noise/create_simplex_noise_2d.d.ts.map +1 -1
  121. package/src/core/math/physics/mie/compute_bhmie_optical_properties.d.ts.map +1 -1
  122. package/src/core/math/physics/mie/compute_mie_particle_properties_rgb.d.ts.map +1 -1
  123. package/src/core/math/random/seededRandom_Mulberry32.d.ts +1 -1
  124. package/src/core/math/random/seededRandom_Mulberry32.d.ts.map +1 -1
  125. package/src/core/model/ModuleRegistry.d.ts.map +1 -1
  126. package/src/core/model/node-graph/visual/layout/layout_assign_coordinates.d.ts.map +1 -1
  127. package/src/core/model/node-graph/visual/layout/layout_node_graph.d.ts.map +1 -1
  128. package/src/core/model/node-graph/visual/layout/layout_order_layers.d.ts.map +1 -1
  129. package/src/core/model/reactive/model/ReactiveExpression.d.ts.map +1 -1
  130. package/src/core/model/validate_enum_schema.d.ts.map +1 -1
  131. package/src/core/process/Future.d.ts.map +1 -1
  132. package/src/core/process/task/Task.d.ts.map +1 -1
  133. package/src/core/process/task/util/countTask.d.ts.map +1 -1
  134. package/src/core/process/task/util/randomCountTask.d.ts.map +1 -1
  135. package/src/core/process/worker/WorkerBuilder.d.ts.map +1 -1
  136. package/src/engine/Clock.d.ts +1 -1
  137. package/src/engine/Clock.d.ts.map +1 -1
  138. package/src/engine/EngineHarness.d.ts.map +1 -1
  139. package/src/engine/animation/Animations.d.ts.map +1 -1
  140. package/src/engine/animation/EntityAnimation.d.ts.map +1 -1
  141. package/src/engine/animation/TransitionFunctions.d.ts.map +1 -1
  142. package/src/engine/animation/Tween.d.ts.map +1 -1
  143. package/src/engine/animation/curve/editor/uploadViaElement.d.ts.map +1 -1
  144. package/src/engine/animation/curve/view/AnimationCurveView.d.ts +1 -1
  145. package/src/engine/animation/curve/view/AnimationCurveView.d.ts.map +1 -1
  146. package/src/engine/asset/AssetManager.d.ts.map +1 -1
  147. package/src/engine/asset/AssetRequest.d.ts.map +1 -1
  148. package/src/engine/asset/loaders/AssetLoader.d.ts.map +1 -1
  149. package/src/engine/asset/loaders/image/avif/encode_image_source.d.ts.map +1 -1
  150. package/src/engine/asset/loaders/image/avif/threaded_image_encoder.d.ts.map +1 -1
  151. package/src/engine/browserInfo.d.ts.map +1 -1
  152. package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts +1 -1
  153. package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts.map +1 -1
  154. package/src/engine/control/first-person/abilities/LedgeGrab.js +9 -9
  155. package/src/engine/control/first-person/abilities/Mantle.js +8 -8
  156. package/src/engine/control/first-person/abilities/ScrambleUp.js +2 -2
  157. package/src/engine/control/first-person/abilities/WallJump.js +2 -2
  158. package/src/engine/control/first-person/abilities/WallRun.js +3 -3
  159. package/src/engine/control/first-person/collision/KinematicMover.d.ts +1 -1
  160. package/src/engine/control/first-person/collision/KinematicMover.d.ts.map +1 -1
  161. package/src/engine/control/first-person/collision/KinematicMover.js +19 -46
  162. package/src/engine/control/first-person/sensors/FirstPersonSensors.d.ts +17 -5
  163. package/src/engine/control/first-person/sensors/FirstPersonSensors.d.ts.map +1 -1
  164. package/src/engine/control/first-person/sensors/FirstPersonSensors.js +20 -7
  165. package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.d.ts.map +1 -1
  166. package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.js +9 -8
  167. package/src/engine/control/first-person/test/buildTestPlayer.d.ts.map +1 -1
  168. package/src/engine/ecs/EntityComponentDataset.d.ts.map +1 -1
  169. package/src/engine/ecs/EntityManager.d.ts.map +1 -1
  170. package/src/engine/ecs/EntityObserver.d.ts.map +1 -1
  171. package/src/engine/ecs/System.d.ts.map +1 -1
  172. package/src/engine/ecs/animation/Animation.d.ts +1 -1
  173. package/src/engine/ecs/animation/Animation.d.ts.map +1 -1
  174. package/src/engine/ecs/async/SystemWorkerLoopback.d.ts +3 -3
  175. package/src/engine/ecs/async/SystemWorkerLoopback.d.ts.map +1 -1
  176. package/src/engine/ecs/dynamic_actions/DynamicActorSystem.d.ts.map +1 -1
  177. package/src/engine/ecs/grid/pick.d.ts.map +1 -1
  178. package/src/engine/ecs/guid/UUID.d.ts +1 -1
  179. package/src/engine/ecs/guid/UUID.d.ts.map +1 -1
  180. package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.d.ts.map +1 -1
  181. package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.js +26 -9
  182. package/src/engine/ecs/parent/EntityNode.d.ts +1 -1
  183. package/src/engine/ecs/parent/EntityNode.d.ts.map +1 -1
  184. package/src/engine/ecs/parent/FaceEditor.d.ts +7 -7
  185. package/src/engine/ecs/parent/FaceEditor.d.ts.map +1 -1
  186. package/src/engine/ecs/storage/binary/collection/BinaryCollectionDeSerializer.d.ts.map +1 -1
  187. package/src/engine/ecs/storage/binary/object/BinaryObjectSerializationAdapter2.d.ts +2 -2
  188. package/src/engine/ecs/storage/binary/object/BinaryObjectSerializationAdapter2.d.ts.map +1 -1
  189. package/src/engine/ecs/terrain/TerrainClouds.d.ts +1 -1
  190. package/src/engine/ecs/terrain/ecs/Terrain.d.ts +1 -1
  191. package/src/engine/ecs/terrain/ecs/Terrain.d.ts.map +1 -1
  192. package/src/engine/ecs/terrain/ecs/TerrainSystem.d.ts.map +1 -1
  193. package/src/engine/ecs/terrain/overlay/TerrainOverlay.d.ts +1 -1
  194. package/src/engine/ecs/terrain/overlay/TerrainOverlay.d.ts.map +1 -1
  195. package/src/engine/ecs/terrain/tiles/TerrainTile.d.ts +1 -1
  196. package/src/engine/ecs/terrain/tiles/TerrainTile.d.ts.map +1 -1
  197. package/src/engine/ecs/terrain/tiles/TerrainTileManager.d.ts +1 -1
  198. package/src/engine/ecs/terrain/tiles/TerrainTileManager.d.ts.map +1 -1
  199. package/src/engine/ecs/terrain/util/obtainTerrain.d.ts.map +1 -1
  200. package/src/engine/ecs/transform/Transform64.d.ts +6 -6
  201. package/src/engine/ecs/transform/Transform64.d.ts.map +1 -1
  202. package/src/engine/ecs/transform-attachment/TransformAttachment.d.ts +1 -1
  203. package/src/engine/ecs/transform-attachment/TransformAttachment.d.ts.map +1 -1
  204. package/src/engine/graphics/FrameRunner.d.ts.map +1 -1
  205. package/src/engine/graphics/ecs/camera/camera_traverse_active.d.ts.map +1 -1
  206. package/src/engine/graphics/ecs/camera/pp/PerfectPanner.d.ts +1 -1
  207. package/src/engine/graphics/ecs/camera/pp/PerfectPanner.d.ts.map +1 -1
  208. package/src/engine/graphics/ecs/highlight/HighlightDefinition.d.ts +1 -1
  209. package/src/engine/graphics/ecs/highlight/HighlightDefinition.d.ts.map +1 -1
  210. package/src/engine/graphics/ecs/make_bvh_depth_range_computer.d.ts.map +1 -1
  211. package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMesh.d.ts +4 -4
  212. package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMesh.d.ts.map +1 -1
  213. package/src/engine/graphics/ecs/path/tube/TubePathStyle.d.ts +1 -1
  214. package/src/engine/graphics/ecs/path/tube/TubePathStyle.d.ts.map +1 -1
  215. package/src/engine/graphics/ecs/path/tube/build/computeFrenetFrames.d.ts.map +1 -1
  216. package/src/engine/graphics/ecs/trail3d/Trail3D.d.ts +3 -3
  217. package/src/engine/graphics/ecs/trail3d/Trail3D.d.ts.map +1 -1
  218. package/src/engine/graphics/geometry/buffered/build_height_field_geometry.d.ts +1 -1
  219. package/src/engine/graphics/geometry/buffered/build_height_field_geometry.d.ts.map +1 -1
  220. package/src/engine/graphics/geometry/buffered/query/GeometrySpatialQueryAccelerator.d.ts +1 -1
  221. package/src/engine/graphics/geometry/buffered/query/GeometrySpatialQueryAccelerator.d.ts.map +1 -1
  222. package/src/engine/graphics/make_ray_from_viewport_position.d.ts.map +1 -1
  223. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts.map +1 -1
  224. package/src/engine/graphics/particles/particular/engine/emitter/computeEmissionFunction.d.ts.map +1 -1
  225. package/src/engine/graphics/particles/particular/engine/utils/distribute_points_on_indexed_triangles.d.ts.map +1 -1
  226. package/src/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.d.ts.map +1 -1
  227. package/src/engine/graphics/particles/particular/engine/utils/volume/AttributeValue.d.ts +3 -3
  228. package/src/engine/graphics/particles/particular/engine/utils/volume/AttributeValue.d.ts.map +1 -1
  229. package/src/engine/graphics/render/frame_graph/FrameGraph.d.ts.map +1 -1
  230. package/src/engine/graphics/render/gizmo/GizmoShapeRenderingInterface.d.ts +1 -1
  231. package/src/engine/graphics/render/gizmo/GizmoShapeRenderingInterface.d.ts.map +1 -1
  232. package/src/engine/graphics/render/layers/RenderLayer.d.ts +3 -3
  233. package/src/engine/graphics/render/layers/RenderLayer.d.ts.map +1 -1
  234. package/src/engine/graphics/render/visibility/IncrementalDeltaSet.d.ts +1 -1
  235. package/src/engine/graphics/render/visibility/IncrementalDeltaSet.d.ts.map +1 -1
  236. package/src/engine/graphics/render/visibility/VisibilityComputer.d.ts +2 -2
  237. package/src/engine/graphics/render/visibility/VisibilityComputer.d.ts.map +1 -1
  238. package/src/engine/graphics/sh3/path_tracer/PathTracedMesh.d.ts +1 -1
  239. package/src/engine/graphics/sh3/path_tracer/PathTracedMesh.d.ts.map +1 -1
  240. package/src/engine/graphics/sh3/path_tracer/populate_path_traced_scene_from_ecd.d.ts.map +1 -1
  241. package/src/engine/graphics/sh3/path_tracer/populate_path_traced_scene_from_ecd.js +5 -1
  242. package/src/engine/graphics/texture/3d/SingleChannelSampler3D.d.ts +1 -1
  243. package/src/engine/graphics/texture/3d/SingleChannelSampler3D.d.ts.map +1 -1
  244. package/src/engine/graphics/texture/sampler/Sampler2D.d.ts.map +1 -1
  245. package/src/engine/graphics/texture/sampler/filter/sampler2d_scale_down_generic.d.ts +1 -1
  246. package/src/engine/graphics/texture/sampler/filter/sampler2d_scale_down_generic.d.ts.map +1 -1
  247. package/src/engine/graphics/texture/sampler/sampler2d_channel_compute_max.d.ts +1 -1
  248. package/src/engine/graphics/texture/sampler/sampler2d_channel_compute_max.d.ts.map +1 -1
  249. package/src/engine/graphics/texture/sampler/sampler2d_channel_compute_min.d.ts +1 -1
  250. package/src/engine/graphics/texture/sampler/sampler2d_channel_compute_min.d.ts.map +1 -1
  251. package/src/engine/graphics/texture/sampler/sampler2d_combine.d.ts.map +1 -1
  252. package/src/engine/graphics/texture/sampler/sampler2d_compute_texel_value_conversion_scale_to_uint8.d.ts.map +1 -1
  253. package/src/engine/graphics/texture/sampler/search/make_edge_condition_channel_threshold.d.ts.map +1 -1
  254. package/src/engine/graphics/texture/sampler/search/sampler2d_find_pixels.d.ts.map +1 -1
  255. package/src/engine/graphics/texture/virtual/VirtualTextureTileLoader.d.ts +3 -3
  256. package/src/engine/graphics/texture/virtual/VirtualTextureTileLoader.d.ts.map +1 -1
  257. package/src/engine/graphics/texture/virtual/VirtualTextureUsage.d.ts +1 -1
  258. package/src/engine/graphics/texture/virtual/VirtualTextureUsage.d.ts.map +1 -1
  259. package/src/engine/graphics/texture/virtual/debug/UsageDebugView.d.ts +2 -2
  260. package/src/engine/graphics/texture/virtual/debug/UsageDebugView.d.ts.map +1 -1
  261. package/src/engine/graphics/texture/virtual/debug/UsagePyramidDebugView.d.ts +1 -1
  262. package/src/engine/graphics/texture/virtual/debug/UsagePyramidDebugView.d.ts.map +1 -1
  263. package/src/engine/graphics/texture/virtual/tile/decompose_finger_print.d.ts.map +1 -1
  264. package/src/engine/graphics3/HighlightOutlineSystem.d.ts.map +1 -1
  265. package/src/engine/graphics3/ParticipatingMedia.d.ts +1 -1
  266. package/src/engine/graphics3/ParticipatingMedia.d.ts.map +1 -1
  267. package/src/engine/graphics3/VolumetricLightMap.d.ts +1 -1
  268. package/src/engine/graphics3/VolumetricLightMap.d.ts.map +1 -1
  269. package/src/engine/graphics3/decal/graph_build_decal_clusters.d.ts.map +1 -1
  270. package/src/engine/graphics3/highlight/pack_highlight_table.d.ts.map +1 -1
  271. package/src/engine/graphics3/preview/make_model_preview_scene.d.ts.map +1 -1
  272. package/src/engine/graphics3/terrain/GPUTerrainSplatRenderer.d.ts.map +1 -1
  273. package/src/engine/graphics3/terrain/pack_terrain_row_table.d.ts.map +1 -1
  274. package/src/engine/grid/obstacle/GridObstacle.d.ts.map +1 -1
  275. package/src/engine/input/devices/GamepadDevice.d.ts +1 -1
  276. package/src/engine/input/devices/GamepadDevice.d.ts.map +1 -1
  277. package/src/engine/input/devices/PointerDevice.d.ts +1 -1
  278. package/src/engine/input/devices/PointerDevice.d.ts.map +1 -1
  279. package/src/engine/input/ecs/controllers/KeyboardCameraController.d.ts.map +1 -1
  280. package/src/engine/input/ecs/controllers/KeyboardCameraController.js +11 -2
  281. package/src/engine/intelligence/behavior/ecs/BehaviorComponent.d.ts +1 -1
  282. package/src/engine/intelligence/behavior/ecs/BehaviorComponent.d.ts.map +1 -1
  283. package/src/engine/intelligence/behavior/ecs/SendEventBehavior.d.ts.map +1 -1
  284. package/src/engine/intelligence/behavior/primitive/ActionBehavior.d.ts.map +1 -1
  285. package/src/engine/intelligence/behavior/util/RotationBehavior.d.ts.map +1 -1
  286. package/src/engine/intelligence/behavior/util/RotationBehavior.js +14 -2
  287. package/src/engine/intelligence/blackboard/Blackboard.d.ts.map +1 -1
  288. package/src/engine/intelligence/mcts/MonteCarlo.d.ts +1 -1
  289. package/src/engine/intelligence/mcts/MonteCarlo.d.ts.map +1 -1
  290. package/src/engine/intelligence/mcts/StateNode.d.ts.map +1 -1
  291. package/src/engine/intelligence/optimization/RandomOptimizer.d.ts +1 -1
  292. package/src/engine/intelligence/optimization/RandomOptimizer.d.ts.map +1 -1
  293. package/src/engine/knowledge/database/StaticKnowledgeDataTable.d.ts.map +1 -1
  294. package/src/engine/knowledge/database/StaticKnowledgeDatabase.d.ts +1 -1
  295. package/src/engine/knowledge/database/StaticKnowledgeDatabase.d.ts.map +1 -1
  296. package/src/engine/navigation/ecs/path_following/PathFollower.d.ts +2 -2
  297. package/src/engine/navigation/ecs/path_following/PathFollower.d.ts.map +1 -1
  298. package/src/engine/network/NetworkSession.d.ts.map +1 -1
  299. package/src/engine/network/PriorityFetch.d.ts +2 -2
  300. package/src/engine/network/PriorityFetch.d.ts.map +1 -1
  301. package/src/engine/network/diagnostics/BandwidthMeter.d.ts.map +1 -1
  302. package/src/engine/network/ecs/owner_authorization.d.ts.map +1 -1
  303. package/src/engine/network/orchestrator/NetworkPeer.d.ts.map +1 -1
  304. package/src/engine/network/orchestrator/ServerAuthoritativeServer.d.ts.map +1 -1
  305. package/src/engine/network/replication/Replicator.d.ts +1 -1
  306. package/src/engine/network/replication/Replicator.d.ts.map +1 -1
  307. package/src/engine/network/sim/SimActionExecutor.d.ts +1 -1
  308. package/src/engine/network/sim/SimActionExecutor.d.ts.map +1 -1
  309. package/src/engine/network/time/RenderPlayout.d.ts.map +1 -1
  310. package/src/engine/network/transport/Channel.d.ts.map +1 -1
  311. package/src/engine/network/transport/fragments/FragmentRetention.d.ts.map +1 -1
  312. package/src/engine/physics/body/SolverBodyState.d.ts +11 -11
  313. package/src/engine/physics/body/SolverBodyState.d.ts.map +1 -1
  314. package/src/engine/physics/body/SolverBodyState.js +13 -13
  315. package/src/engine/physics/broadphase/compute_fat_world_aabb.d.ts +4 -4
  316. package/src/engine/physics/broadphase/compute_fat_world_aabb.d.ts.map +1 -1
  317. package/src/engine/physics/broadphase/compute_fat_world_aabb.js +2 -2
  318. package/src/engine/physics/broadphase/generate_pairs.d.ts +3 -3
  319. package/src/engine/physics/broadphase/generate_pairs.d.ts.map +1 -1
  320. package/src/engine/physics/broadphase/generate_pairs.js +1 -1
  321. package/src/engine/physics/ccd/linear_sweep.d.ts +2 -3
  322. package/src/engine/physics/ccd/linear_sweep.d.ts.map +1 -1
  323. package/src/engine/physics/ccd/linear_sweep.js +4 -5
  324. package/src/engine/physics/constraint/solve_constraints.js +3 -3
  325. package/src/engine/physics/ecs/BodyKind.d.ts +1 -1
  326. package/src/engine/physics/ecs/BodyKind.js +1 -1
  327. package/src/engine/physics/ecs/Collider.d.ts +1 -1
  328. package/src/engine/physics/ecs/Collider.js +1 -1
  329. package/src/engine/physics/ecs/Joint.d.ts +15 -10
  330. package/src/engine/physics/ecs/Joint.d.ts.map +1 -1
  331. package/src/engine/physics/ecs/Joint.js +27 -18
  332. package/src/engine/physics/ecs/JointSerializationAdapter.d.ts.map +1 -1
  333. package/src/engine/physics/ecs/JointSerializationAdapter.js +8 -6
  334. package/src/engine/physics/ecs/PhysicsSystem.d.ts +40 -77
  335. package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -1
  336. package/src/engine/physics/ecs/PhysicsSystem.js +113 -75
  337. package/src/engine/physics/ecs/RigidBody.d.ts +17 -12
  338. package/src/engine/physics/ecs/RigidBody.d.ts.map +1 -1
  339. package/src/engine/physics/ecs/RigidBody.js +58 -24
  340. package/src/engine/physics/ecs/RigidBodySerializationAdapter.d.ts.map +1 -1
  341. package/src/engine/physics/ecs/RigidBodySerializationAdapter.js +13 -12
  342. package/src/engine/physics/ecs/find_non_finite_physics_state.d.ts +1 -1
  343. package/src/engine/physics/ecs/find_non_finite_physics_state.js +1 -1
  344. package/src/engine/physics/fluid/FluidField.d.ts.map +1 -1
  345. package/src/engine/physics/fluid/REVIEW_02_PLAN.md +4 -4
  346. package/src/engine/physics/fluid/SliceVisualiser.d.ts.map +1 -1
  347. package/src/engine/physics/fluid/ecs/FluidComponent.d.ts +10 -10
  348. package/src/engine/physics/fluid/ecs/FluidComponent.js +10 -10
  349. package/src/engine/physics/fluid/ecs/FluidEffectorsComponent.d.ts +2 -2
  350. package/src/engine/physics/fluid/ecs/FluidEffectorsComponent.js +2 -2
  351. package/src/engine/physics/fluid/ecs/FluidObstacle.d.ts +3 -3
  352. package/src/engine/physics/fluid/ecs/FluidObstacle.js +3 -3
  353. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +1 -1
  354. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.js +4 -4
  355. package/src/engine/physics/fluid/ecs/FluidSystem.d.ts +2 -2
  356. package/src/engine/physics/fluid/ecs/FluidSystem.js +3 -3
  357. package/src/engine/physics/fluid/ecs/WorkerFluidSystem.d.ts +1 -1
  358. package/src/engine/physics/fluid/ecs/WorkerFluidSystem.js +2 -2
  359. package/src/engine/physics/fluid/ecs/fluid_reanchor_field.d.ts +3 -3
  360. package/src/engine/physics/fluid/ecs/fluid_reanchor_field.d.ts.map +1 -1
  361. package/src/engine/physics/fluid/ecs/fluid_reanchor_field.js +3 -3
  362. package/src/engine/physics/fluid/ecs/fluid_sync_effectors_from_transform.d.ts +3 -3
  363. package/src/engine/physics/fluid/ecs/fluid_sync_effectors_from_transform.d.ts.map +1 -1
  364. package/src/engine/physics/fluid/ecs/fluid_sync_effectors_from_transform.js +2 -2
  365. package/src/engine/physics/fluid/effector/AbstractFluidEffector.d.ts +3 -3
  366. package/src/engine/physics/fluid/effector/AbstractFluidEffector.d.ts.map +1 -1
  367. package/src/engine/physics/fluid/effector/AbstractFluidEffector.js +2 -2
  368. package/src/engine/physics/fluid/effector/ImpulseFluidEffector.js +2 -2
  369. package/src/engine/physics/fluid/effector/WakeFluidEffector.d.ts +4 -4
  370. package/src/engine/physics/fluid/effector/WakeFluidEffector.js +8 -8
  371. package/src/engine/physics/inertia/world_inverse_inertia.d.ts +8 -17
  372. package/src/engine/physics/inertia/world_inverse_inertia.d.ts.map +1 -1
  373. package/src/engine/physics/inertia/world_inverse_inertia.js +11 -11
  374. package/src/engine/physics/integration/integrate_position.d.ts +6 -7
  375. package/src/engine/physics/integration/integrate_position.d.ts.map +1 -1
  376. package/src/engine/physics/integration/integrate_position.js +5 -6
  377. package/src/engine/physics/integration/integrate_velocity.d.ts +4 -4
  378. package/src/engine/physics/integration/integrate_velocity.d.ts.map +1 -1
  379. package/src/engine/physics/integration/integrate_velocity.js +7 -7
  380. package/src/engine/physics/inverse_kinematics/fabrik/fabrik_solve.d.ts +4 -4
  381. package/src/engine/physics/inverse_kinematics/fabrik/fabrik_solve.d.ts.map +1 -1
  382. package/src/engine/physics/inverse_kinematics/fabrik/fabrik_solve.js +3 -3
  383. package/src/engine/physics/narrowphase/convex_decomposition.d.ts.map +1 -1
  384. package/src/engine/physics/narrowphase/decomposition/triangle_buffer_layout.d.ts +1 -2
  385. package/src/engine/physics/narrowphase/decomposition/triangle_buffer_layout.d.ts.map +1 -1
  386. package/src/engine/physics/narrowphase/decomposition/triangle_buffer_layout.js +1 -2
  387. package/src/engine/physics/narrowphase/narrowphase_step.d.ts +7 -6
  388. package/src/engine/physics/narrowphase/narrowphase_step.d.ts.map +1 -1
  389. package/src/engine/physics/narrowphase/narrowphase_step.js +8 -8
  390. package/src/engine/physics/queries/PhysicsSurfacePoint.d.ts +10 -5
  391. package/src/engine/physics/queries/PhysicsSurfacePoint.d.ts.map +1 -1
  392. package/src/engine/physics/queries/PhysicsSurfacePoint.js +10 -6
  393. package/src/engine/physics/queries/overlap_shape.d.ts +5 -14
  394. package/src/engine/physics/queries/overlap_shape.d.ts.map +1 -1
  395. package/src/engine/physics/queries/overlap_shape.js +4 -4
  396. package/src/engine/physics/queries/raycast.d.ts.map +1 -1
  397. package/src/engine/physics/queries/shape_cast.d.ts +9 -1
  398. package/src/engine/physics/queries/shape_cast.d.ts.map +1 -1
  399. package/src/engine/physics/queries/shape_cast.js +2 -2
  400. package/src/engine/physics/solver/solve_contacts.d.ts +2 -2
  401. package/src/engine/physics/solver/solve_contacts.d.ts.map +1 -1
  402. package/src/engine/physics/solver/solve_contacts.js +2 -2
  403. package/src/engine/physics/vehicle/RaycastVehicle.d.ts +4 -8
  404. package/src/engine/physics/vehicle/RaycastVehicle.d.ts.map +1 -1
  405. package/src/engine/physics/vehicle/RaycastVehicle.js +16 -12
  406. package/src/engine/save/Storage.d.ts.map +1 -1
  407. package/src/engine/sound/SoundEngine.d.ts +1 -1
  408. package/src/engine/sound/SoundEngine.d.ts.map +1 -1
  409. package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts.map +1 -1
  410. package/src/engine/sound/ecs/audio/AudioEmitterSystem.js +27 -2
  411. package/src/engine/sound/simulation/AcousticSimulator.d.ts +2 -2
  412. package/src/engine/sound/simulation/AcousticSimulator.d.ts.map +1 -1
  413. package/src/engine/sound/simulation/core/VolumeField.d.ts +1 -1
  414. package/src/engine/sound/simulation/core/VolumeField.d.ts.map +1 -1
  415. package/src/engine/sound/simulation/probe/AcousticProbeField.d.ts.map +1 -1
  416. package/src/engine/sound/simulation/probe/probe_delaunay_edges.d.ts.map +1 -1
  417. package/src/engine/sound/simulation/probe/probe_densify_portals.d.ts.map +1 -1
  418. package/src/engine/sound/simulation/probe/probe_detect_portals.d.ts.map +1 -1
  419. package/src/engine/sound/simulation/probe/probe_place_sdf_cover.d.ts.map +1 -1
  420. package/src/engine/sound/simulation/probe/probe_refine_connectivity.d.ts.map +1 -1
  421. package/src/engine/sound/simulation/render/ProbeReverbRenderer.d.ts +1 -1
  422. package/src/engine/sound/simulation/render/ProbeReverbRenderer.d.ts.map +1 -1
  423. package/src/engine/sound/simulation/render/foaReverbImpulseResponse.d.ts.map +1 -1
  424. package/src/engine/sound/sopra/SopraEngine.d.ts.map +1 -1
  425. package/src/engine/sound/sopra/legacy/SoundEmitter.d.ts +3 -3
  426. package/src/engine/sound/sopra/legacy/SoundEmitter.d.ts.map +1 -1
  427. package/src/engine/sound/sopra/legacy/SoundTrack.d.ts +3 -3
  428. package/src/engine/sound/sopra/legacy/SoundTrack.d.ts.map +1 -1
  429. package/src/engine/sound/sopra/util/buildAttenuationCurve.d.ts.map +1 -1
  430. package/src/engine/ui/notification/NotificationManager.d.ts.map +1 -1
  431. package/src/engine/ui/notification/ViewEmitter.d.ts +1 -1
  432. package/src/engine/ui/notification/ViewEmitter.d.ts.map +1 -1
  433. package/src/engine/ui/tiles2d/TileGrid.d.ts.map +1 -1
  434. package/src/extractName.d.ts.map +1 -1
  435. package/src/format/image/avif/api/convert_to_rgba.d.ts.map +1 -1
  436. package/src/format/image/avif/av1/encode/encode_av1_still.d.ts.map +1 -1
  437. package/src/format/image/avif/heif/write_avif_file.d.ts +2 -2
  438. package/src/format/image/avif/heif/write_avif_file.d.ts.map +1 -1
  439. package/src/format/image/jpeg/JpegImage.d.ts.map +1 -1
  440. package/src/format/image/png/PNG.d.ts.map +1 -1
  441. package/src/format/image/png/chunk/png_chunk_decode_iTXt.d.ts.map +1 -1
  442. package/src/format/image/png/chunk/png_chunk_decode_zTXt.d.ts.map +1 -1
  443. package/src/format/scene/gltf/ext/GltfBufferViewExtensionSet.d.ts.map +1 -1
  444. package/src/format/scene/gltf/gltf_node_world_matrices.d.ts.map +1 -1
  445. package/src/format/scene/usd/unpack_usdz.d.ts.map +1 -1
  446. package/src/format/scene/usd/usd_triangulate.d.ts.map +1 -1
  447. package/src/format/texture/basis/astc_integer_sequence.d.ts.map +1 -1
  448. package/src/generation/grid/actions/ContinuousGridCellActionWriteObstacle.d.ts.map +1 -1
  449. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorClingToTerrain.d.ts.map +1 -1
  450. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorClingToTerrain.js +22 -3
  451. package/src/generation/markers/transform/MarkerNodeTransformerRecordPropertyClosure.d.ts.map +1 -1
  452. package/src/generation/theme/ThemeEngine.d.ts +2 -2
  453. package/src/generation/theme/ThemeEngine.d.ts.map +1 -1
  454. package/src/shade/descriptor/ObjectDescriptorBase.d.ts +1 -1
  455. package/src/shade/descriptor/ObjectDescriptorBase.d.ts.map +1 -1
  456. package/src/shade/descriptor/texture/TextureDescriptor.d.ts +1 -1
  457. package/src/shade/device/ShadeGPUCommandContext.d.ts +1 -1
  458. package/src/shade/device/ShadeGPUCommandContext.d.ts.map +1 -1
  459. package/src/shade/device/pass/ShadeGPUComputePassEncoder.d.ts +1 -1
  460. package/src/shade/device/pass/ShadeGPUComputePassEncoder.d.ts.map +1 -1
  461. package/src/shade/device/pass/ShadeGPURenderPassEncoder.d.ts +1 -1
  462. package/src/shade/device/pass/ShadeGPURenderPassEncoder.d.ts.map +1 -1
  463. package/src/shade/device/timing/GPUTimerArray.d.ts.map +1 -1
  464. package/src/shade/device/timing/GPUTimerStats.d.ts +1 -1
  465. package/src/shade/device/timing/GPUTimerStats.d.ts.map +1 -1
  466. package/src/shade/device/timing/GPU_PROFILER_PROPOSAL_2026_08_28.md +894 -894
  467. package/src/shade/playground/basis_textures/texture_inventory.d.ts.map +1 -1
  468. package/src/shade/playground/bvh_repro/bvh_repro_device.d.ts.map +1 -1
  469. package/src/shade/playground/ground_seam/capture_scene_color.d.ts.map +1 -1
  470. package/src/shade/playground/ground_seam/measure_flicker.d.ts.map +1 -1
  471. package/src/shade/playground/particle_system/index.html +0 -1
  472. package/src/shade/playground/particle_system/main.js +1 -2
  473. package/src/shade/playground/particle_system/particle_prototype.d.ts.map +1 -1
  474. package/src/shade/playground/particle_system/particle_scene.d.ts +5 -6
  475. package/src/shade/playground/particle_system/particle_scene.d.ts.map +1 -1
  476. package/src/shade/playground/particle_system/particle_scene.js +6 -7
  477. package/src/shade/playground/skinned_blas_refit/sweep_views.js +2 -2
  478. package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.js +1 -1
  479. package/src/shade/playground/vgeo_viewer/README.md +123 -0
  480. package/src/shade/playground/vgeo_viewer/cut_geometry.d.ts +61 -0
  481. package/src/shade/playground/vgeo_viewer/cut_geometry.d.ts.map +1 -0
  482. package/src/shade/playground/vgeo_viewer/cut_geometry.js +497 -0
  483. package/src/shade/playground/vgeo_viewer/index.html +77 -0
  484. package/src/shade/playground/vgeo_viewer/main.d.ts +2 -0
  485. package/src/shade/playground/vgeo_viewer/main.d.ts.map +1 -0
  486. package/src/shade/playground/vgeo_viewer/main.js +1288 -0
  487. package/src/shade/playground/vgeo_viewer/sample_asset.d.ts +18 -0
  488. package/src/shade/playground/vgeo_viewer/sample_asset.d.ts.map +1 -0
  489. package/src/shade/playground/vgeo_viewer/sample_asset.js +117 -0
  490. package/src/shade/playground/vgeo_viewer/select_cut.d.ts +154 -0
  491. package/src/shade/playground/vgeo_viewer/select_cut.d.ts.map +1 -0
  492. package/src/shade/playground/vgeo_viewer/select_cut.js +437 -0
  493. package/src/shade/renderer/DynamicResolutionScaling.d.ts +1 -1
  494. package/src/shade/renderer/DynamicResolutionScaling.d.ts.map +1 -1
  495. package/src/shade/renderer/Renderer.d.ts +5 -5
  496. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  497. package/src/shade/renderer/animation/GPUAnimationManager.d.ts.map +1 -1
  498. package/src/shade/renderer/animation/skin_normalize_mesh_frame.d.ts.map +1 -1
  499. package/src/shade/renderer/camera/Camera.d.ts +3 -3
  500. package/src/shade/renderer/camera/Camera.d.ts.map +1 -1
  501. package/src/shade/renderer/camera/GPUCameraContext.d.ts +1 -1
  502. package/src/shade/renderer/camera/GPUCameraContext.d.ts.map +1 -1
  503. package/src/shade/renderer/camera/OrthographicCamera.d.ts +4 -4
  504. package/src/shade/renderer/camera/OrthographicCamera.d.ts.map +1 -1
  505. package/src/shade/renderer/camera/PerspectiveCamera.d.ts +2 -2
  506. package/src/shade/renderer/camera/PerspectiveCamera.d.ts.map +1 -1
  507. package/src/shade/renderer/camera/orbital/OrbitalCameraController.d.ts +11 -3
  508. package/src/shade/renderer/camera/orbital/OrbitalCameraController.d.ts.map +1 -1
  509. package/src/shade/renderer/camera/orbital/OrbitalCameraController.js +25 -5
  510. package/src/shade/renderer/extension/FrameContext.d.ts +1 -1
  511. package/src/shade/renderer/extension/FrameContext.d.ts.map +1 -1
  512. package/src/shade/renderer/extension/GBufferTextures.d.ts +4 -4
  513. package/src/shade/renderer/extension/GBufferTextures.d.ts.map +1 -1
  514. package/src/shade/renderer/extension/PresentTarget.d.ts +1 -1
  515. package/src/shade/renderer/extension/PresentTarget.d.ts.map +1 -1
  516. package/src/shade/renderer/extension/RENDER_EXTENSION_DESIGN.md +918 -918
  517. package/src/shade/renderer/extension/SceneColor.d.ts +1 -1
  518. package/src/shade/renderer/extension/SceneColor.d.ts.map +1 -1
  519. package/src/shade/renderer/extension/ViewTextures.d.ts +4 -4
  520. package/src/shade/renderer/extension/ViewTextures.d.ts.map +1 -1
  521. package/src/shade/renderer/geometry/Attribute.d.ts +1 -1
  522. package/src/shade/renderer/geometry/Attribute.d.ts.map +1 -1
  523. package/src/shade/renderer/geometry/Geometry.d.ts +1 -1
  524. package/src/shade/renderer/geometry/Geometry.d.ts.map +1 -1
  525. package/src/shade/renderer/geometry/bvh/bvh2_check_bounds.d.ts.map +1 -1
  526. package/src/shade/renderer/geometry/bvh/bvh2_derive_topology.d.ts.map +1 -1
  527. package/src/shade/renderer/geometry/meshlet/MeshletBatch.d.ts +3 -3
  528. package/src/shade/renderer/geometry/meshlet/MeshletBatch.d.ts.map +1 -1
  529. package/src/shade/renderer/geometry/virtual/build/gltf/gltf_collect_geometries.d.ts.map +1 -1
  530. package/src/shade/renderer/geometry/virtual/format/attribute/VGEO_ATTRIBUTES.d.ts.map +1 -1
  531. package/src/shade/renderer/geometry/virtual/format/frame/vgeo_read_frame_extent.d.ts +29 -0
  532. package/src/shade/renderer/geometry/virtual/format/frame/vgeo_read_frame_extent.d.ts.map +1 -0
  533. package/src/shade/renderer/geometry/virtual/format/frame/vgeo_read_frame_extent.js +59 -0
  534. package/src/shade/renderer/geometry/virtual/format/frame/vgeo_scan_frames.d.ts +0 -1
  535. package/src/shade/renderer/geometry/virtual/format/frame/vgeo_scan_frames.d.ts.map +1 -1
  536. package/src/shade/renderer/geometry/virtual/format/frame/vgeo_scan_frames.js +2 -23
  537. package/src/shade/renderer/geometry/virtual/format/read/VGeoByteSource.d.ts +94 -0
  538. package/src/shade/renderer/geometry/virtual/format/read/VGeoByteSource.d.ts.map +1 -0
  539. package/src/shade/renderer/geometry/virtual/format/read/VGeoByteSource.js +170 -0
  540. package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerHeader.d.ts +122 -0
  541. package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerHeader.d.ts.map +1 -0
  542. package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerHeader.js +143 -0
  543. package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerReader.d.ts +185 -0
  544. package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerReader.d.ts.map +1 -0
  545. package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerReader.js +572 -0
  546. package/src/shade/renderer/geometry/virtual/format/read/VGeoDirectory.d.ts +64 -0
  547. package/src/shade/renderer/geometry/virtual/format/read/VGeoDirectory.d.ts.map +1 -0
  548. package/src/shade/renderer/geometry/virtual/format/read/VGeoDirectory.js +80 -0
  549. package/src/shade/renderer/geometry/virtual/format/read/VGeoPage.d.ts +198 -0
  550. package/src/shade/renderer/geometry/virtual/format/read/VGeoPage.d.ts.map +1 -0
  551. package/src/shade/renderer/geometry/virtual/format/read/VGeoPage.js +232 -0
  552. package/src/shade/renderer/geometry/virtual/format/read/VGeoPageWant.d.ts +51 -0
  553. package/src/shade/renderer/geometry/virtual/format/read/VGeoPageWant.d.ts.map +1 -0
  554. package/src/shade/renderer/geometry/virtual/format/read/VGeoPageWant.js +55 -0
  555. package/src/shade/renderer/geometry/virtual/format/read/VGeoReadOptions.d.ts +68 -0
  556. package/src/shade/renderer/geometry/virtual/format/read/VGeoReadOptions.d.ts.map +1 -0
  557. package/src/shade/renderer/geometry/virtual/format/read/VGeoReadOptions.js +72 -0
  558. package/src/shade/renderer/geometry/virtual/format/read/vgeo_fetch_byte_source.d.ts +28 -0
  559. package/src/shade/renderer/geometry/virtual/format/read/vgeo_fetch_byte_source.d.ts.map +1 -0
  560. package/src/shade/renderer/geometry/virtual/format/read/vgeo_fetch_byte_source.js +108 -0
  561. package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_directory.d.ts +23 -0
  562. package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_directory.d.ts.map +1 -0
  563. package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_directory.js +83 -0
  564. package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_header.d.ts +53 -0
  565. package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_header.d.ts.map +1 -0
  566. package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_header.js +211 -0
  567. package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_page.d.ts +26 -0
  568. package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_page.d.ts.map +1 -0
  569. package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_page.js +271 -0
  570. package/src/shade/renderer/global_illumination/brick4/cpu/brick4_bake_for_scene.d.ts.map +1 -1
  571. package/src/shade/renderer/global_illumination/clipmap/GPUClipMap3D.d.ts +2 -2
  572. package/src/shade/renderer/global_illumination/clipmap/GPUClipMap3D.d.ts.map +1 -1
  573. package/src/shade/renderer/global_illumination/lpv/LightProbeVolume.d.ts +1 -1
  574. package/src/shade/renderer/global_illumination/lpv/LightProbeVolume.d.ts.map +1 -1
  575. package/src/shade/renderer/global_illumination/lpv/bake/GPULightProbeVolumeRenderer.d.ts +1 -1
  576. package/src/shade/renderer/global_illumination/lpv/bake/GPULightProbeVolumeRenderer.d.ts.map +1 -1
  577. package/src/shade/renderer/global_illumination/sharc/SpatialHashRadianceCache.d.ts +1 -1
  578. package/src/shade/renderer/global_illumination/sharc/SpatialHashRadianceCache.d.ts.map +1 -1
  579. package/src/shade/renderer/gpu_primitive/bvh/check_bvh_structure.d.ts.map +1 -1
  580. package/src/shade/renderer/light/LightCollection.d.ts +2 -2
  581. package/src/shade/renderer/light/LightCollection.d.ts.map +1 -1
  582. package/src/shade/renderer/light/model/PointLight.d.ts +1 -1
  583. package/src/shade/renderer/light/model/PointLight.d.ts.map +1 -1
  584. package/src/shade/renderer/light/model/SpotLight.d.ts +1 -1
  585. package/src/shade/renderer/light/model/SpotLight.d.ts.map +1 -1
  586. package/src/shade/renderer/loader/gltf/fix_up_material_sides.d.ts.map +1 -1
  587. package/src/shade/renderer/loader/gltf/gltf_create_material.d.ts +1 -1
  588. package/src/shade/renderer/loader/gltf/gltf_create_material.d.ts.map +1 -1
  589. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +2 -2
  590. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts.map +1 -1
  591. package/src/shade/renderer/loader/usd/usd_decode_image.d.ts +1 -1
  592. package/src/shade/renderer/loader/usd/usd_decode_image.d.ts.map +1 -1
  593. package/src/shade/renderer/material/util/material_convert_metallic_roughness_to_specular_glossiness.d.ts.map +1 -1
  594. package/src/shade/renderer/material/util/material_convert_specular_glossiness_to_metallic_roughness.d.ts.map +1 -1
  595. package/src/shade/renderer/particles/DESIGN.md +18 -7
  596. package/src/shade/renderer/particles/GPUParticleSystem.d.ts +24 -10
  597. package/src/shade/renderer/particles/GPUParticleSystem.d.ts.map +1 -1
  598. package/src/shade/renderer/particles/GPUParticleSystem.js +77 -72
  599. package/src/shade/renderer/particles/coherence/graph_particle_bucket.d.ts +17 -16
  600. package/src/shade/renderer/particles/coherence/graph_particle_bucket.d.ts.map +1 -1
  601. package/src/shade/renderer/particles/coherence/graph_particle_bucket.js +35 -22
  602. package/src/shade/renderer/particles/graph/ParticleGroupBuilder.d.ts +6 -6
  603. package/src/shade/renderer/particles/graph/ParticleGroupBuilder.d.ts.map +1 -1
  604. package/src/shade/renderer/particles/graph/ParticleNodeGroup.d.ts.map +1 -1
  605. package/src/shade/renderer/particles/graph/ParticleValueType.d.ts +1 -1
  606. package/src/shade/renderer/particles/graph/ParticleValueType.d.ts.map +1 -1
  607. package/src/shade/renderer/particles/graph/make_particle_group.d.ts.map +1 -1
  608. package/src/shade/renderer/particles/graph/particle_graph_authoring.d.ts.map +1 -1
  609. package/src/shade/renderer/particles/graph/particle_group_json.d.ts.map +1 -1
  610. package/src/shade/renderer/particles/graph_particles.d.ts +11 -0
  611. package/src/shade/renderer/particles/graph_particles.d.ts.map +1 -1
  612. package/src/shade/renderer/particles/graph_particles.js +55 -37
  613. package/src/shade/renderer/particles/graph_particles_billboard.d.ts.map +1 -1
  614. package/src/shade/renderer/particles/isa/ParticleVMISA.d.ts.map +1 -1
  615. package/src/shade/renderer/particles/isa/particle_assembly.d.ts.map +1 -1
  616. package/src/shade/renderer/particles/layout/ParticleLayout.d.ts.map +1 -1
  617. package/src/shade/renderer/particles/optimizer/dag/particle_vector_lift.d.ts.map +1 -1
  618. package/src/shade/renderer/particles/optimizer/dag/particle_vector_pack.d.ts.map +1 -1
  619. package/src/shade/renderer/particles/optimizer/optimize_particle_program.d.ts +1 -1
  620. package/src/shade/renderer/particles/optimizer/optimize_particle_program.d.ts.map +1 -1
  621. package/src/shade/renderer/particles/optimizer/particle_program_equivalence.d.ts.map +1 -1
  622. package/src/shade/renderer/particles/runtime/create_particle_effect.d.ts.map +1 -1
  623. package/src/shade/renderer/particles/sort/graph_particle_sort.d.ts +17 -13
  624. package/src/shade/renderer/particles/sort/graph_particle_sort.d.ts.map +1 -1
  625. package/src/shade/renderer/particles/sort/graph_particle_sort.js +43 -33
  626. package/src/shade/renderer/particles/vm/ParticleVMReference.d.ts.map +1 -1
  627. package/src/shade/renderer/postprocess/denoise/LigmaDenoiser.d.ts +1 -1
  628. package/src/shade/renderer/postprocess/denoise/LigmaDenoiser.d.ts.map +1 -1
  629. package/src/shade/renderer/postprocess/graph_pass_composit_red_as_rgba.d.ts.map +1 -1
  630. package/src/shade/renderer/postprocess/nss/NSS.d.ts +4 -4
  631. package/src/shade/renderer/postprocess/nss/NSS.d.ts.map +1 -1
  632. package/src/shade/renderer/postprocess/ssr/SSR.d.ts +3 -3
  633. package/src/shade/renderer/postprocess/ssr/SSR.d.ts.map +1 -1
  634. package/src/shade/renderer/postprocess/taa/TAA.d.ts +2 -2
  635. package/src/shade/renderer/postprocess/taa/TAA.d.ts.map +1 -1
  636. package/src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.d.ts.map +1 -1
  637. package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts.map +1 -1
  638. package/src/shade/renderer/scene/InstanceBatch.d.ts +1 -1
  639. package/src/shade/renderer/scene/InstanceBatch.d.ts.map +1 -1
  640. package/src/shade/renderer/scene/Node3D.d.ts +3 -3
  641. package/src/shade/renderer/scene/Node3D.d.ts.map +1 -1
  642. package/src/shade/renderer/scene/bvh/StaticSceneBVH.d.ts.map +1 -1
  643. package/src/shade/renderer/shader/compiler/CodeChunk.d.ts.map +1 -1
  644. package/src/shade/renderer/shader/graph/graph_prepare_pass_input_data.d.ts.map +1 -1
  645. package/src/shade/renderer/shader/graph/graph_prepare_pass_input_data.js +11 -0
  646. package/src/shade/renderer/shader/type/WebGPUStruct.d.ts +1 -1
  647. package/src/shade/renderer/shader/type/WebGPUStruct.d.ts.map +1 -1
  648. package/src/shade/renderer/texture/GPUTextureContext.d.ts +1 -1
  649. package/src/shade/renderer/texture/GPUTextureContext.d.ts.map +1 -1
  650. package/src/shade/renderer/texture/format/sampler_descriptor_unpack.d.ts.map +1 -1
  651. package/src/shade/renderer/texture/source/ShadeImage.d.ts +7 -7
  652. package/src/shade/renderer/texture/source/ShadeImage.d.ts.map +1 -1
  653. package/src/shade/renderer/texture/virtual/VTPageTable.d.ts.map +1 -1
  654. package/src/shade/renderer/view/GPUViewContext.d.ts +2 -2
  655. package/src/shade/renderer/view/GPUViewContext.d.ts.map +1 -1
  656. package/src/shade/renderer/view/GPUViewSkyContext.d.ts +1 -1
  657. package/src/shade/renderer/view/GPUViewSkyContext.d.ts.map +1 -1
  658. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts +2 -2
  659. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts.map +1 -1
  660. package/src/shade/renderer/volumetrics/ParticipatingMediaVolume.d.ts +1 -1
  661. package/src/shade/renderer/volumetrics/ParticipatingMediaVolume.d.ts.map +1 -1
  662. package/src/shade/wgsl/emulator/CPUBitmapData.d.ts.map +1 -1
  663. package/src/view/View.d.ts +1 -1
  664. package/src/view/View.d.ts.map +1 -1
  665. package/src/view/elements/button/ButtonView.d.ts +1 -1
  666. package/src/view/elements/button/ButtonView.d.ts.map +1 -1
  667. package/src/view/elements/progress/SmoothProgressBar.d.ts +2 -2
  668. package/src/view/elements/progress/SmoothProgressBar.d.ts.map +1 -1
  669. package/src/view/elements/radial/RadialMenuElement.d.ts +3 -3
  670. package/src/view/elements/radial/RadialMenuElement.d.ts.map +1 -1
  671. package/src/view/elements/windrose/WindRoseDiagram.d.ts.map +1 -1
  672. package/src/view/layout/DockLayoutView.d.ts.map +1 -1
  673. package/src/view/layout/DrawerView.d.ts +2 -2
  674. package/src/view/layout/DrawerView.d.ts.map +1 -1
  675. package/src/view/layout/SplitView.d.ts +9 -9
  676. package/src/view/layout/SplitView.d.ts.map +1 -1
  677. package/src/view/minimap/MinimapMarkerCollection.d.ts +3 -2
  678. package/src/view/minimap/MinimapMarkerCollection.d.ts.map +1 -1
  679. package/src/view/minimap/MinimapMarkerCollection.js +28 -5
  680. package/src/view/minimap/dom/MinimapMarkerView.js +65 -34
  681. package/src/view/minimap/gl/MarkerGL.d.ts +15 -3
  682. package/src/view/minimap/gl/MarkerGL.d.ts.map +1 -1
  683. package/src/view/minimap/gl/MarkerGL.js +31 -4
  684. package/src/engine/physics/BULLET_REVIEW.md +0 -945
  685. package/src/engine/physics/CANNON_REVIEW.md +0 -1300
  686. package/src/engine/physics/CONSTRAINT_SOLVER_BENCH_LOG.md +0 -208
  687. package/src/engine/physics/CONSTRAINT_SOLVER_IMPROVEMENTS_PLAN.md +0 -364
  688. package/src/engine/physics/INTEPOLATION_SYSTEM_PLAN.md +0 -287
  689. package/src/engine/physics/JOLT_REVIEW.md +0 -913
  690. package/src/engine/physics/PLAN.md +0 -1120
  691. package/src/engine/physics/RAPIER_REVIEW.md +0 -934
  692. package/src/engine/physics/REVIEW_001_ACTION_PLAN.md +0 -642
  693. package/src/engine/physics/REVIEW_002.md +0 -151
  694. package/src/engine/physics/REVIEW_003.md +0 -166
  695. package/src/shade/descriptor/util/optional_clone.d.ts +0 -7
  696. package/src/shade/descriptor/util/optional_clone.d.ts.map +0 -1
  697. package/src/shade/descriptor/util/optional_equality.d.ts +0 -10
  698. package/src/shade/descriptor/util/optional_equality.d.ts.map +0 -1
  699. package/src/shade/descriptor/util/optional_hash.d.ts +0 -9
  700. package/src/shade/descriptor/util/optional_hash.d.ts.map +0 -1
  701. package/src/shade/renderer/geometry/virtual/format/prototypeVGEOFormatViewer.js +0 -2063
@@ -24,6 +24,8 @@ import { solve_joints } from "../constraint/solve_constraints.js";
24
24
  import { ManifoldStore } from "../contact/ManifoldStore.js";
25
25
  import { ContactEventBuffer, ContactEventKind } from "../events/ContactEventBuffer.js";
26
26
  import { diff_manifolds } from "../events/diff_manifolds.js";
27
+ import { v3_add } from "../../../core/geom/vec3/v3_add.js";
28
+ import { v3_set } from "../../../core/geom/vec3/v3_set.js";
27
29
  import { world_inverse_inertia_apply } from "../inertia/world_inverse_inertia.js";
28
30
  import { integrate_position } from "../integration/integrate_position.js";
29
31
  import { integrate_velocity_forces, integrate_velocity_gravity } from "../integration/integrate_velocity.js";
@@ -60,9 +62,9 @@ const scratch_angular_delta = new Float64Array(3);
60
62
  /**
61
63
  * Scratch for {@link applyImpulseAt}'s LockRot*-masked inverse-inertia
62
64
  * diagonal (the same mask {@link SolverBodyState#gather} applies).
63
- * @type {{x: number, y: number, z: number}}
65
+ * @type {Float64Array}
64
66
  */
65
- const scratch_locked_inertia = { x: 0, y: 0, z: 0 };
67
+ const scratch_locked_inertia = new Float64Array(3);
66
68
 
67
69
  /**
68
70
  * Reusable scratch buffer for world-AABB construction so the link path is
@@ -104,7 +106,7 @@ const scratch_prox_sleeper = new Float64Array(6);
104
106
  /**
105
107
  * Rigid-body physics system.
106
108
  *
107
- * v1 scope: pool + active list + two BVHs (static / dynamic), Transform sync
109
+ * v1 scope: pool + active list + two BVHs (static / dynamic), Transform64 sync
108
110
  * contract, and the user-facing API surface (gravity, force / impulse, layer
109
111
  * filtering, wake / sleep, contact filter). The per-step simulation pipeline
110
112
  * (broadphase pair generation, narrowphase, solver, islands, sleep test,
@@ -185,7 +187,7 @@ export class PhysicsSystem extends System {
185
187
  * Data-oriented mirror of the per-body solver hot state (velocity,
186
188
  * inverse mass / inertia, orientation), packed into one ArrayBuffer
187
189
  * and indexed by body slot. Gathered from the `RigidBody` /
188
- * `Transform` components once per step (after islands are built),
190
+ * `Transform64` components once per step (after islands are built),
189
191
  * mutated in place by the TGS substep loop, and the persistent
190
192
  * velocity scattered back at the end. Keeps the solver's hottest inner
191
193
  * loop free of component-object dereferences.
@@ -250,7 +252,8 @@ export class PhysicsSystem extends System {
250
252
  contactDampingRatio = 10;
251
253
 
252
254
  /**
253
- * Reusable contact-event payload. Listeners must copy any fields they
255
+ * Reusable contact-event payload. `point` and `normal` are three-element
256
+ * `Float64Array`s indexed `[0] [1] [2]`. Listeners must copy any fields they
254
257
  * intend to retain past their own scope. Reset before each dispatch.
255
258
  * @private
256
259
  */
@@ -259,16 +262,19 @@ export class PhysicsSystem extends System {
259
262
  entityB: -1,
260
263
  kind: 0,
261
264
  depth: 0,
262
- normal: new Vector3(),
263
- point: new Vector3(),
265
+ normal: new Float64Array(3),
266
+ point: new Float64Array(3),
264
267
  };
265
268
 
266
269
  /**
267
- * World gravity, m/s². Applied each step scaled by per-body gravityScale.
270
+ * World gravity, m/s², indexed `[0] [1] [2]`. Applied each step scaled by the
271
+ * per-body gravityScale. Raw storage with no change signal — write it through
272
+ * {@link setGravity}, or with {@link v3_set} if the wake side-effect is not
273
+ * wanted; `gravity.set(x, y, z)` is `TypedArray.prototype.set` and writes nothing.
268
274
  * @readonly
269
- * @type {Vector3}
275
+ * @type {Float64Array}
270
276
  */
271
- gravity = new Vector3(0, -9.81, 0);
277
+ gravity = Float64Array.of(0, -9.81, 0);
272
278
 
273
279
  /**
274
280
  * Optional global contact filter. Called for each surviving broadphase
@@ -294,12 +300,12 @@ export class PhysicsSystem extends System {
294
300
 
295
301
  /**
296
302
  * Per-body list of attached colliders. Each entry stores the
297
- * Collider component, its world Transform, the entity that owns
303
+ * Collider component, its world Transform64, the entity that owns
298
304
  * it (the body entity for same-entity attachments, a child entity
299
305
  * for compound bodies), and the BVH leaf id assigned at attach
300
306
  * time. A body may have zero or more attached colliders.
301
307
  *
302
- * @type {Array<Array<{collider: Collider, transform: Transform, entity: number, bvhNode: number}>>}
308
+ * @type {Array<Array<{collider: Collider, transform: Transform64, entity: number, bvhNode: number}>>}
303
309
  */
304
310
  __body_collider_lists = [];
305
311
 
@@ -504,10 +510,15 @@ export class PhysicsSystem extends System {
504
510
 
505
511
  /**
506
512
  * Replace the world gravity vector. Effective on the next step.
507
- * @param {Vector3|{x:number,y:number,z:number}} v
513
+ * @param {Vector3|ArrayLike<number>} v indexed as [x, y, z]
508
514
  */
509
515
  setGravity(v) {
510
- this.gravity.set(v.x, v.y, v.z);
516
+ assert.defined(v, 'v');
517
+ assert.isNumber(v[0], 'v[0]');
518
+ assert.isNumber(v[1], 'v[1]');
519
+ assert.isNumber(v[2], 'v[2]');
520
+
521
+ v3_set(this.gravity, 0, v[0], v[1], v[2]);
511
522
  }
512
523
 
513
524
  /**
@@ -725,8 +736,8 @@ export class PhysicsSystem extends System {
725
736
  * Attach a collider to an existing body. The collider can live on the
726
737
  * same entity as the body (single-collider body) or on a child entity
727
738
  * (compound body). The world transform passed here is the collider's
728
- * own — for a same-entity collider it is the body's Transform; for a
729
- * child collider it is the child entity's Transform.
739
+ * own — for a same-entity collider it is the body's Transform64; for a
740
+ * child collider it is the child entity's Transform64.
730
741
  *
731
742
  * Idempotent — re-attaching the same collider is a no-op.
732
743
  *
@@ -902,14 +913,19 @@ export class PhysicsSystem extends System {
902
913
  * Wakes the body if it is asleep.
903
914
  *
904
915
  * @param {RigidBody} rigidBody
905
- * @param {Vector3|{x:number,y:number,z:number}} impulse
916
+ * @param {Vector3|ArrayLike<number>} impulse indexed as [x, y, z]
906
917
  */
907
918
  applyImpulse(rigidBody, impulse) {
919
+ assert.defined(impulse, 'impulse');
920
+ assert.isNumber(impulse[0], 'impulse[0]');
921
+ assert.isNumber(impulse[1], 'impulse[1]');
922
+ assert.isNumber(impulse[2], 'impulse[2]');
923
+
908
924
  if (rigidBody.kind !== BodyKind.Dynamic) {
909
925
  return;
910
926
  }
911
927
  const inv_m = rigidBody.mass > 0 ? 1 / rigidBody.mass : 0;
912
- rigidBody.linearVelocity.addScaled(impulse, inv_m);
928
+ v3_add(rigidBody.linearVelocity, 0, impulse[0] * inv_m, impulse[1] * inv_m, impulse[2] * inv_m);
913
929
 
914
930
  this.__wake_body(rigidBody);
915
931
  }
@@ -922,8 +938,8 @@ export class PhysicsSystem extends System {
922
938
  * Wakes the body if it is asleep.
923
939
  *
924
940
  * @param {RigidBody} rigidBody
925
- * @param {Transform64} transform body's current world Transform (used for r and I_w)
926
- * @param {Vector3|{x:number,y:number,z:number}} impulse
941
+ * @param {Transform64} transform body's current world transform (used for r and I_w)
942
+ * @param {Vector3|ArrayLike<number>} impulse indexed as [x, y, z]
927
943
  * @param {Vector3|ArrayLike<number>} worldPoint world-space point indexed as [x, y, z]
928
944
  */
929
945
  applyImpulseAt(
@@ -945,19 +961,15 @@ export class PhysicsSystem extends System {
945
961
 
946
962
  const inv_m = rigidBody.mass > 0 ? 1 / rigidBody.mass : 0;
947
963
 
948
- const impulse_x = impulse.x;
949
- const impulse_y = impulse.y;
950
- const impulse_z = impulse.z;
964
+ const impulse_x = impulse[0];
965
+ const impulse_y = impulse[1];
966
+ const impulse_z = impulse[2];
951
967
 
952
- assert.isNumber(impulse_x, 'impulse_x');
953
- assert.isNumber(impulse_y, 'impulse_y');
954
- assert.isNumber(impulse_z, 'impulse_z');
968
+ assert.isNumber(impulse_x, 'impulse[0]');
969
+ assert.isNumber(impulse_y, 'impulse[1]');
970
+ assert.isNumber(impulse_z, 'impulse[2]');
955
971
 
956
- rigidBody.linearVelocity.set(
957
- rigidBody.linearVelocity.x + impulse_x * inv_m,
958
- rigidBody.linearVelocity.y + impulse_y * inv_m,
959
- rigidBody.linearVelocity.z + impulse_z * inv_m
960
- );
972
+ v3_add(rigidBody.linearVelocity, 0, impulse_x * inv_m, impulse_y * inv_m, impulse_z * inv_m);
961
973
 
962
974
  // World points use indexed coordinates, including Transform64 translation views.
963
975
  const rx = worldPoint[0] - transform.translation_x;
@@ -974,15 +986,14 @@ export class PhysicsSystem extends System {
974
986
  // DOF either.
975
987
  const flags = rigidBody.flags;
976
988
  const ii = rigidBody.inverseInertiaLocal;
977
- scratch_locked_inertia.x = (flags & RigidBodyFlags.LockRotX) !== 0 ? 0 : ii.x;
978
- scratch_locked_inertia.y = (flags & RigidBodyFlags.LockRotY) !== 0 ? 0 : ii.y;
979
- scratch_locked_inertia.z = (flags & RigidBodyFlags.LockRotZ) !== 0 ? 0 : ii.z;
989
+ scratch_locked_inertia[0] = (flags & RigidBodyFlags.LockRotX) !== 0 ? 0 : ii[0];
990
+ scratch_locked_inertia[1] = (flags & RigidBodyFlags.LockRotY) !== 0 ? 0 : ii[1];
991
+ scratch_locked_inertia[2] = (flags & RigidBodyFlags.LockRotZ) !== 0 ? 0 : ii[2];
980
992
  world_inverse_inertia_apply(scratch_angular_delta, 0, scratch_locked_inertia, transform.rotation, tx, ty, tz);
981
993
 
982
- rigidBody.angularVelocity.set(
983
- rigidBody.angularVelocity.x + scratch_angular_delta[0],
984
- rigidBody.angularVelocity.y + scratch_angular_delta[1],
985
- rigidBody.angularVelocity.z + scratch_angular_delta[2]
994
+ v3_add(
995
+ rigidBody.angularVelocity, 0,
996
+ scratch_angular_delta[0], scratch_angular_delta[1], scratch_angular_delta[2]
986
997
  );
987
998
 
988
999
  this.__wake_body(rigidBody);
@@ -995,17 +1006,18 @@ export class PhysicsSystem extends System {
995
1006
  * Wakes the body if asleep.
996
1007
  *
997
1008
  * @param {RigidBody} rigidBody
998
- * @param {Vector3|{x:number,y:number,z:number}} torque
1009
+ * @param {Vector3|ArrayLike<number>} torque indexed as [x, y, z]
999
1010
  */
1000
1011
  applyTorque(rigidBody, torque) {
1012
+ assert.defined(torque, 'torque');
1013
+ assert.isNumber(torque[0], 'torque[0]');
1014
+ assert.isNumber(torque[1], 'torque[1]');
1015
+ assert.isNumber(torque[2], 'torque[2]');
1016
+
1001
1017
  if (rigidBody.kind !== BodyKind.Dynamic) {
1002
1018
  return;
1003
1019
  }
1004
- rigidBody.accumulatedTorque.set(
1005
- rigidBody.accumulatedTorque.x + torque.x,
1006
- rigidBody.accumulatedTorque.y + torque.y,
1007
- rigidBody.accumulatedTorque.z + torque.z
1008
- );
1020
+ v3_add(rigidBody.accumulatedTorque, 0, torque[0], torque[1], torque[2]);
1009
1021
  this.__wake_body(rigidBody);
1010
1022
  }
1011
1023
 
@@ -1017,11 +1029,16 @@ export class PhysicsSystem extends System {
1017
1029
  * Wakes the body if asleep.
1018
1030
  *
1019
1031
  * @param {RigidBody} rigidBody
1020
- * @param {Transform64} transform body's current world Transform
1021
- * @param {Vector3|{x:number,y:number,z:number}} force
1032
+ * @param {Transform64} transform body's current world transform
1033
+ * @param {Vector3|ArrayLike<number>} force indexed as [x, y, z]
1022
1034
  * @param {Vector3|ArrayLike<number>} worldPoint world-space point indexed as [x, y, z]
1023
1035
  */
1024
1036
  applyForceAt(rigidBody, transform, force, worldPoint) {
1037
+ assert.defined(force, 'force');
1038
+ assert.isNumber(force[0], 'force[0]');
1039
+ assert.isNumber(force[1], 'force[1]');
1040
+ assert.isNumber(force[2], 'force[2]');
1041
+
1025
1042
  assert.defined(worldPoint, 'worldPoint');
1026
1043
  assert.isNumber(worldPoint[0], 'worldPoint[0]');
1027
1044
  assert.isNumber(worldPoint[1], 'worldPoint[1]');
@@ -1030,21 +1047,18 @@ export class PhysicsSystem extends System {
1030
1047
  if (rigidBody.kind !== BodyKind.Dynamic) {
1031
1048
  return;
1032
1049
  }
1033
- rigidBody.accumulatedForce.set(
1034
- rigidBody.accumulatedForce.x + force.x,
1035
- rigidBody.accumulatedForce.y + force.y,
1036
- rigidBody.accumulatedForce.z + force.z
1037
- );
1050
+ v3_add(rigidBody.accumulatedForce, 0, force[0], force[1], force[2]);
1038
1051
 
1039
1052
  // World points use indexed coordinates, including Transform64 translation views.
1040
1053
  const rx = worldPoint[0] - transform.translation_x;
1041
1054
  const ry = worldPoint[1] - transform.translation_y;
1042
1055
  const rz = worldPoint[2] - transform.translation_z;
1043
1056
 
1044
- rigidBody.accumulatedTorque.set(
1045
- rigidBody.accumulatedTorque.x + (ry * force.z - rz * force.y),
1046
- rigidBody.accumulatedTorque.y + (rz * force.x - rx * force.z),
1047
- rigidBody.accumulatedTorque.z + (rx * force.y - ry * force.x)
1057
+ v3_add(
1058
+ rigidBody.accumulatedTorque, 0,
1059
+ ry * force[2] - rz * force[1],
1060
+ rz * force[0] - rx * force[2],
1061
+ rx * force[1] - ry * force[0]
1048
1062
  );
1049
1063
 
1050
1064
  this.__wake_body(rigidBody);
@@ -1055,13 +1069,18 @@ export class PhysicsSystem extends System {
1055
1069
  * Wakes the body if asleep.
1056
1070
  *
1057
1071
  * @param {RigidBody} rigidBody
1058
- * @param {Vector3|{x:number,y:number,z:number}} force
1072
+ * @param {Vector3|ArrayLike<number>} force indexed as [x, y, z]
1059
1073
  */
1060
1074
  applyForce(rigidBody, force) {
1075
+ assert.defined(force, 'force');
1076
+ assert.isNumber(force[0], 'force[0]');
1077
+ assert.isNumber(force[1], 'force[1]');
1078
+ assert.isNumber(force[2], 'force[2]');
1079
+
1061
1080
  if (rigidBody.kind !== BodyKind.Dynamic) {
1062
1081
  return;
1063
1082
  }
1064
- rigidBody.accumulatedForce.add(force);
1083
+ v3_add(rigidBody.accumulatedForce, 0, force[0], force[1], force[2]);
1065
1084
  this.__wake_body(rigidBody);
1066
1085
  }
1067
1086
 
@@ -1069,10 +1088,15 @@ export class PhysicsSystem extends System {
1069
1088
  * Replace the linear velocity. Wakes the body if asleep.
1070
1089
  *
1071
1090
  * @param {RigidBody} rigidBody
1072
- * @param {Vector3|{x:number,y:number,z:number}} v
1091
+ * @param {Vector3|ArrayLike<number>} v indexed as [x, y, z]
1073
1092
  */
1074
1093
  setLinearVelocity(rigidBody, v) {
1075
- rigidBody.linearVelocity.copy(v);
1094
+ assert.defined(v, 'v');
1095
+ assert.isNumber(v[0], 'v[0]');
1096
+ assert.isNumber(v[1], 'v[1]');
1097
+ assert.isNumber(v[2], 'v[2]');
1098
+
1099
+ v3_set(rigidBody.linearVelocity, 0, v[0], v[1], v[2]);
1076
1100
  if (rigidBody.kind === BodyKind.Dynamic) {
1077
1101
  this.__wake_body(rigidBody);
1078
1102
  }
@@ -1085,10 +1109,15 @@ export class PhysicsSystem extends System {
1085
1109
  * body, so the spin is silently discarded until something else wakes it.
1086
1110
  *
1087
1111
  * @param {RigidBody} rigidBody
1088
- * @param {Vector3|{x:number,y:number,z:number}} v
1112
+ * @param {Vector3|ArrayLike<number>} v indexed as [x, y, z]
1089
1113
  */
1090
1114
  setAngularVelocity(rigidBody, v) {
1091
- rigidBody.angularVelocity.copy(v);
1115
+ assert.defined(v, 'v');
1116
+ assert.isNumber(v[0], 'v[0]');
1117
+ assert.isNumber(v[1], 'v[1]');
1118
+ assert.isNumber(v[2], 'v[2]');
1119
+
1120
+ v3_set(rigidBody.angularVelocity, 0, v[0], v[1], v[2]);
1092
1121
  if (rigidBody.kind === BodyKind.Dynamic) {
1093
1122
  this.__wake_body(rigidBody);
1094
1123
  }
@@ -1096,13 +1125,13 @@ export class PhysicsSystem extends System {
1096
1125
 
1097
1126
  /**
1098
1127
  * Teleport a body to a new pose, bypassing integration: writes the body's
1099
- * Transform directly and wakes it. For an interpolated body this also flags a
1128
+ * Transform64 directly and wakes it. For an interpolated body this also flags a
1100
1129
  * render `snap` on its {@link Interpolated} component, so the producer keeps
1101
1130
  * this pose (rather than restoring the previous tick over it) and the
1102
1131
  * renderer shows the new pose without sliding across the jump.
1103
1132
  *
1104
1133
  * This is the authoritative way to reposition an interpolated body — a raw
1105
- * `Transform` write would be undone by the per-step restore. Velocity is left
1134
+ * `Transform64` write would be undone by the per-step restore. Velocity is left
1106
1135
  * as-is; zero it via {@link setLinearVelocity} if the teleport should also
1107
1136
  * stop the body.
1108
1137
  *
@@ -1112,18 +1141,29 @@ export class PhysicsSystem extends System {
1112
1141
  * into must react.
1113
1142
  *
1114
1143
  * @param {RigidBody} rigidBody
1115
- * @param {Vector3|{x:number,y:number,z:number}} position world position
1116
- * @param {Quaternion|{x:number,y:number,z:number,w:number}} rotation world unit-quaternion rotation
1144
+ * @param {Vector3|ArrayLike<number>} position world position, indexed as [x, y, z]
1145
+ * @param {Quaternion|ArrayLike<number>} rotation world unit-quaternion rotation, indexed as [x, y, z, w]
1117
1146
  */
1118
1147
  setPose(rigidBody, position, rotation) {
1148
+ assert.defined(position, 'position');
1149
+ assert.isNumber(position[0], 'position[0]');
1150
+ assert.isNumber(position[1], 'position[1]');
1151
+ assert.isNumber(position[2], 'position[2]');
1152
+
1153
+ assert.defined(rotation, 'rotation');
1154
+ assert.isNumber(rotation[0], 'rotation[0]');
1155
+ assert.isNumber(rotation[1], 'rotation[1]');
1156
+ assert.isNumber(rotation[2], 'rotation[2]');
1157
+ assert.isNumber(rotation[3], 'rotation[3]');
1158
+
1119
1159
  const idx = body_id_index(rigidBody._bodyId);
1120
1160
  const transform = this.__transforms[idx];
1121
1161
  if (transform === undefined) {
1122
1162
  return;
1123
1163
  }
1124
1164
 
1125
- transform.setTranslation(position.x, position.y, position.z);
1126
- transform.setRotation(rotation.x, rotation.y, rotation.z, rotation.w);
1165
+ transform.setTranslation(position[0], position[1], position[2]);
1166
+ transform.setRotation(rotation[0], rotation[1], rotation[2], rotation[3]);
1127
1167
 
1128
1168
  if (rigidBody.kind !== BodyKind.Dynamic) {
1129
1169
  // Static AND Kinematic: the body itself never sleeps and __wake_body is a no-op for it,
@@ -1160,7 +1200,7 @@ export class PhysicsSystem extends System {
1160
1200
  // CLEARS it). The renderer's update runs every render cycle while a fixed step only
1161
1201
  // runs when the accumulator crosses the step size, so a render frame landing between
1162
1202
  // this setPose and the next fixedUpdate clears `snap` before __interp_restore reads
1163
- // it — restore then overwrites the teleported Transform with the pre-teleport tick's
1203
+ // it — restore then overwrites the teleported Transform64 with the pre-teleport tick's
1164
1204
  // snapshot and the teleport is silently reverted in the SIMULATION. This only bites
1165
1205
  // once InterpolationSystem is wired (the app does not wire it yet). The robust fix is
1166
1206
  // to make the teleport authoritative independent of the shared flag — either overwrite
@@ -1743,8 +1783,6 @@ export class PhysicsSystem extends System {
1743
1783
  // separation path already does via clear_contacts.
1744
1784
  const has_contact = manifolds.is_touched(slot) && manifolds.contact_count(slot) > 0;
1745
1785
 
1746
- // Scratch payload — write the point/normal components by index to
1747
- // skip the Vector3 change-signal dispatch (nothing observes them).
1748
1786
  const pt = payload.point;
1749
1787
  const nm = payload.normal;
1750
1788
  if (has_contact) {
@@ -1955,12 +1993,12 @@ export class PhysicsSystem extends System {
1955
1993
  */
1956
1994
  fixedUpdate(dt) {
1957
1995
  // Producer: restore authoritative pose (undo render interpolation)
1958
- // before the sim reads any Transform this step.
1996
+ // before the sim reads any Transform64 this step.
1959
1997
  this.__interp_restore();
1960
1998
 
1961
- const gx = this.gravity.x;
1962
- const gy = this.gravity.y;
1963
- const gz = this.gravity.z;
1999
+ const gx = this.gravity[0];
2000
+ const gy = this.gravity[1];
2001
+ const gz = this.gravity[2];
1964
2002
 
1965
2003
  const storage = this.storage;
1966
2004
  const bodies = this.__bodies;
@@ -2273,7 +2311,7 @@ export class PhysicsSystem extends System {
2273
2311
  apply_restitution(manifolds, this);
2274
2312
 
2275
2313
  // Scatter the solved persistent linear / angular velocity back onto the
2276
- // RigidBody components (pose was written through to the Transforms each
2314
+ // RigidBody components (pose was written through to the transforms each
2277
2315
  // substep). After this the bodies are authoritative again for CCD,
2278
2316
  // interpolation recording, and the sleep test below.
2279
2317
  solver_state.scatter(bodies);
@@ -9,10 +9,16 @@ export const RIGID_BODY_UNALLOCATED: number;
9
9
  /**
10
10
  * Rigid-body component.
11
11
  *
12
- * Pose lives on {@link Transform}; this component owns the dynamic state that is not
12
+ * Pose lives on {@link Transform64}; this component owns the dynamic state that is not
13
13
  * part of TRS: velocity, mass, inertia, damping, gravity scale, layer / mask
14
14
  * filtering and a small set of bit-flags ({@link RigidBodyFlags}).
15
15
  *
16
+ * The vector fields are raw three-element `Float64Array`s, indexed `[0] [1] [2]` for
17
+ * x, y, z. They are plain storage: no change signal, no setter dispatch, nothing to
18
+ * subscribe to. The solver writes them thousands of times per step and every one of
19
+ * those writes is a typed-array store. Use {@link v3_set} to write all three at once —
20
+ * `array.set(x, y, z)` is `TypedArray.prototype.set`, which silently writes nothing.
21
+ *
16
22
  * Defaults are conservative: the body translates under forces but cannot rotate
17
23
  * unless the user explicitly sets {@link inverseInertiaLocal} — forgetting to
18
24
  * configure inertia results in a locked-rotation body, never a NaN tumble.
@@ -28,30 +34,30 @@ export class RigidBody {
28
34
  /**
29
35
  * Linear velocity in world space, m/s.
30
36
  * @readonly
31
- * @type {Vector3}
37
+ * @type {Float64Array}
32
38
  */
33
- readonly linearVelocity: Vector3;
39
+ readonly linearVelocity: Float64Array;
34
40
  /**
35
41
  * Angular velocity in world space, rad/s.
36
42
  * @readonly
37
- * @type {Vector3}
43
+ * @type {Float64Array}
38
44
  */
39
- readonly angularVelocity: Vector3;
45
+ readonly angularVelocity: Float64Array;
40
46
  /**
41
47
  * Accumulator for forces applied between fixed-update steps. Consumed and
42
48
  * zeroed by the integrator. User code applies via
43
49
  * {@link PhysicsSystem#applyForce}; do not write directly.
44
50
  * @readonly
45
- * @type {Vector3}
51
+ * @type {Float64Array}
46
52
  */
47
- readonly accumulatedForce: Vector3;
53
+ readonly accumulatedForce: Float64Array;
48
54
  /**
49
55
  * Accumulator for torques applied between fixed-update steps. Consumed and
50
56
  * zeroed by the integrator.
51
57
  * @readonly
52
- * @type {Vector3}
58
+ * @type {Float64Array}
53
59
  */
54
- readonly accumulatedTorque: Vector3;
60
+ readonly accumulatedTorque: Float64Array;
55
61
  /**
56
62
  * Total mass, kg. Must be positive for Dynamic bodies; Static / Kinematic
57
63
  * bodies behave as if mass were infinite regardless of this value.
@@ -63,9 +69,9 @@ export class RigidBody {
63
69
  * corresponding rotational degree of freedom. The default of (0,0,0) means
64
70
  * rotation is locked until the user sets a value.
65
71
  * @readonly
66
- * @type {Vector3}
72
+ * @type {Float64Array}
67
73
  */
68
- readonly inverseInertiaLocal: Vector3;
74
+ readonly inverseInertiaLocal: Float64Array;
69
75
  /**
70
76
  * @type {number}
71
77
  */
@@ -221,7 +227,6 @@ export namespace RigidBody {
221
227
  let typeName: string;
222
228
  }
223
229
  import { BodyKind } from "./BodyKind.js";
224
- import Vector3 from "../../../core/geom/Vector3.js";
225
230
  import { RigidBodyFlags } from "./RigidBodyFlags.js";
226
231
  import { SleepState } from "./SleepState.js";
227
232
  //# sourceMappingURL=RigidBody.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RigidBody.d.ts","sourceRoot":"","sources":["../../../../../src/engine/physics/ecs/RigidBody.js"],"names":[],"mappings":"AAMA;;;;;;GAMG;AACH,qCAFU,MAAM,CAEyB;AAEzC;;;;;;;;;;;;;GAaG;AACH;IAEI;;OAEG;IACH,MAFU,QAAQ,GAAC,MAAM,CAED;IAExB;;;;OAIG;IACH,yBAFU,OAAO,CAEqB;IAEtC;;;;OAIG;IACH,0BAFU,OAAO,CAEsB;IAEvC;;;;;;OAMG;IACH,2BAFU,OAAO,CAEuB;IAExC;;;;;OAKG;IACH,4BAFU,OAAO,CAEwB;IAEzC;;;;OAIG;IACH,MAFU,MAAM,CAEP;IAET;;;;;;OAMG;IACH,8BAFU,OAAO,CAE0B;IAE3C;;OAEG;IACH,eAFU,MAAM,CAEE;IAElB;;OAEG;IACH,gBAFU,MAAM,CAEG;IAEnB;;;;OAIG;IACH,cAFU,MAAM,CAEC;IAEjB;;;OAGG;IACH,OAFU,MAAM,CAEN;IAEV;;;OAGG;IACH,MAFU,MAAM,CAEM;IAEtB;;OAEG;IACH,OAFU,cAAc,GAAC,MAAM,CAEH;IAE5B;;;;;;;;;;OAUG;IACH,YAFU,UAAU,GAAC,MAAM,CAEG;IAE9B;;;;;;;;;;;OAWG;IACH,aAFU,MAAM,CAEA;IAEhB;;;;;;;;;;;OAWG;IACH,kBAFU,MAAM,CAEM;IAEtB;;;OAGG;IACH,kBAFU,MAAM,CAEM;IAEtB;;;;OAIG;IACH,SAFU,MAAM,CAEiB;IAEjC;;;OAGG;IACH,cAFW,MAAM,GAAC,cAAc,QAI/B;IAED;;;OAGG;IACH,gBAFW,MAAM,GAAC,cAAc,QAI/B;IAED;;;;OAIG;IACH,cAHW,MAAM,GAAC,cAAc,GACnB,OAAO,CAInB;IAED;;;;OAIG;IACH,gBAHW,MAAM,GAAC,cAAc,SACrB,OAAO,QAQjB;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;MAgBC;IAED,0BAcC;IAED;;;;;;;;;;OAUG;IACH,cAHW,SAAS,GACP,OAAO,CAmBnB;IAED;;;;OAIG;IACH,QAFa,MAAM,CAiBlB;IASL;;;OAGG;IACH,sBAFU,OAAO,CAEc;CAZ9B;;kBAIS,MAAM;;yBAxSS,eAAe;oBADpB,+BAA+B;+BAEpB,qBAAqB;2BACzB,iBAAiB"}
1
+ {"version":3,"file":"RigidBody.d.ts","sourceRoot":"","sources":["../../../../../src/engine/physics/ecs/RigidBody.js"],"names":[],"mappings":"AAOA;;;;;;GAMG;AACH,qCAFU,MAAM,CAEyB;AA6BzC;;;;;;;;;;;;;;;;;;;GAmBG;AACH;IAEI;;OAEG;IACH,MAFU,QAAQ,GAAC,MAAM,CAED;IAExB;;;;OAIG;IACH,yBAFU,YAAY,CAEe;IAErC;;;;OAIG;IACH,0BAFU,YAAY,CAEgB;IAEtC;;;;;;OAMG;IACH,2BAFU,YAAY,CAEiB;IAEvC;;;;;OAKG;IACH,4BAFU,YAAY,CAEkB;IAExC;;;;OAIG;IACH,MAFU,MAAM,CAEP;IAET;;;;;;OAMG;IACH,8BAFU,YAAY,CAEoB;IAE1C;;OAEG;IACH,eAFU,MAAM,CAEE;IAElB;;OAEG;IACH,gBAFU,MAAM,CAEG;IAEnB;;;;OAIG;IACH,cAFU,MAAM,CAEC;IAEjB;;;OAGG;IACH,OAFU,MAAM,CAEN;IAEV;;;OAGG;IACH,MAFU,MAAM,CAEM;IAEtB;;OAEG;IACH,OAFU,cAAc,GAAC,MAAM,CAEH;IAE5B;;;;;;;;;;OAUG;IACH,YAFU,UAAU,GAAC,MAAM,CAEG;IAE9B;;;;;;;;;;;OAWG;IACH,aAFU,MAAM,CAEA;IAEhB;;;;;;;;;;;OAWG;IACH,kBAFU,MAAM,CAEM;IAEtB;;;OAGG;IACH,kBAFU,MAAM,CAEM;IAEtB;;;;OAIG;IACH,SAFU,MAAM,CAEiB;IAEjC;;;OAGG;IACH,cAFW,MAAM,GAAC,cAAc,QAI/B;IAED;;;OAGG;IACH,gBAFW,MAAM,GAAC,cAAc,QAI/B;IAED;;;;OAIG;IACH,cAHW,MAAM,GAAC,cAAc,GACnB,OAAO,CAInB;IAED;;;;OAIG;IACH,gBAHW,MAAM,GAAC,cAAc,SACrB,OAAO,QAQjB;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;MAgBC;IAED,0BAcC;IAED;;;;;;;;;;OAUG;IACH,cAHW,SAAS,GACP,OAAO,CAmBnB;IAED;;;;OAIG;IACH,QAFa,MAAM,CAiBlB;IASL;;;OAGG;IACH,sBAFU,OAAO,CAEc;CAZ9B;;kBAIS,MAAM;;yBAzUS,eAAe;+BACT,qBAAqB;2BACzB,iBAAiB"}
@@ -1,5 +1,6 @@
1
1
  import { computeHashFloat } from "../../../core/primitives/numbers/computeHashFloat.js";
2
- import Vector3 from "../../../core/geom/Vector3.js";
2
+ import { v3_equals_array } from "../../../core/geom/vec3/v3_equals_array.js";
3
+ import { v3_hash } from "../../../core/geom/vec3/v3_hash.js";
3
4
  import { BodyKind } from "./BodyKind.js";
4
5
  import { RigidBodyFlags } from "./RigidBodyFlags.js";
5
6
  import { SleepState } from "./SleepState.js";
@@ -13,13 +14,46 @@ import { SleepState } from "./SleepState.js";
13
14
  */
14
15
  export const RIGID_BODY_UNALLOCATED = -1;
15
16
 
17
+ /**
18
+ * Read a `{x, y, z}` (or scalar) JSON value into a 3-component span.
19
+ *
20
+ * @param {Float64Array} target
21
+ * @param {{x:number, y:number, z:number}|number} json
22
+ */
23
+ function v3_from_json(target, json) {
24
+ if (typeof json === "number") {
25
+ // scalar shorthand, kept from the Vector3-backed encoding
26
+ target[0] = json;
27
+ target[1] = json;
28
+ target[2] = json;
29
+ } else {
30
+ target[0] = json.x;
31
+ target[1] = json.y;
32
+ target[2] = json.z;
33
+ }
34
+ }
35
+
36
+ /**
37
+ * @param {Float64Array} v
38
+ * @returns {{x:number, y:number, z:number}}
39
+ */
40
+ function v3_to_json(v) {
41
+ return { x: v[0], y: v[1], z: v[2] };
42
+ }
43
+
16
44
  /**
17
45
  * Rigid-body component.
18
46
  *
19
- * Pose lives on {@link Transform}; this component owns the dynamic state that is not
47
+ * Pose lives on {@link Transform64}; this component owns the dynamic state that is not
20
48
  * part of TRS: velocity, mass, inertia, damping, gravity scale, layer / mask
21
49
  * filtering and a small set of bit-flags ({@link RigidBodyFlags}).
22
50
  *
51
+ * The vector fields are raw three-element `Float64Array`s, indexed `[0] [1] [2]` for
52
+ * x, y, z. They are plain storage: no change signal, no setter dispatch, nothing to
53
+ * subscribe to. The solver writes them thousands of times per step and every one of
54
+ * those writes is a typed-array store. Use {@link v3_set} to write all three at once —
55
+ * `array.set(x, y, z)` is `TypedArray.prototype.set`, which silently writes nothing.
56
+ *
23
57
  * Defaults are conservative: the body translates under forces but cannot rotate
24
58
  * unless the user explicitly sets {@link inverseInertiaLocal} — forgetting to
25
59
  * configure inertia results in a locked-rotation body, never a NaN tumble.
@@ -37,33 +71,33 @@ export class RigidBody {
37
71
  /**
38
72
  * Linear velocity in world space, m/s.
39
73
  * @readonly
40
- * @type {Vector3}
74
+ * @type {Float64Array}
41
75
  */
42
- linearVelocity = new Vector3(0, 0, 0);
76
+ linearVelocity = new Float64Array(3);
43
77
 
44
78
  /**
45
79
  * Angular velocity in world space, rad/s.
46
80
  * @readonly
47
- * @type {Vector3}
81
+ * @type {Float64Array}
48
82
  */
49
- angularVelocity = new Vector3(0, 0, 0);
83
+ angularVelocity = new Float64Array(3);
50
84
 
51
85
  /**
52
86
  * Accumulator for forces applied between fixed-update steps. Consumed and
53
87
  * zeroed by the integrator. User code applies via
54
88
  * {@link PhysicsSystem#applyForce}; do not write directly.
55
89
  * @readonly
56
- * @type {Vector3}
90
+ * @type {Float64Array}
57
91
  */
58
- accumulatedForce = new Vector3(0, 0, 0);
92
+ accumulatedForce = new Float64Array(3);
59
93
 
60
94
  /**
61
95
  * Accumulator for torques applied between fixed-update steps. Consumed and
62
96
  * zeroed by the integrator.
63
97
  * @readonly
64
- * @type {Vector3}
98
+ * @type {Float64Array}
65
99
  */
66
- accumulatedTorque = new Vector3(0, 0, 0);
100
+ accumulatedTorque = new Float64Array(3);
67
101
 
68
102
  /**
69
103
  * Total mass, kg. Must be positive for Dynamic bodies; Static / Kinematic
@@ -77,9 +111,9 @@ export class RigidBody {
77
111
  * corresponding rotational degree of freedom. The default of (0,0,0) means
78
112
  * rotation is locked until the user sets a value.
79
113
  * @readonly
80
- * @type {Vector3}
114
+ * @type {Float64Array}
81
115
  */
82
- inverseInertiaLocal = new Vector3(0, 0, 0);
116
+ inverseInertiaLocal = new Float64Array(3);
83
117
 
84
118
  /**
85
119
  * @type {number}
@@ -210,10 +244,10 @@ export class RigidBody {
210
244
  toJSON() {
211
245
  return {
212
246
  kind: this.kind,
213
- linearVelocity: this.linearVelocity.toJSON(),
214
- angularVelocity: this.angularVelocity.toJSON(),
247
+ linearVelocity: v3_to_json(this.linearVelocity),
248
+ angularVelocity: v3_to_json(this.angularVelocity),
215
249
  mass: this.mass,
216
- inverseInertiaLocal: this.inverseInertiaLocal.toJSON(),
250
+ inverseInertiaLocal: v3_to_json(this.inverseInertiaLocal),
217
251
  linearDamping: this.linearDamping,
218
252
  angularDamping: this.angularDamping,
219
253
  gravityScale: this.gravityScale,
@@ -227,10 +261,10 @@ export class RigidBody {
227
261
 
228
262
  fromJSON(json) {
229
263
  if (json.kind !== undefined) this.kind = json.kind;
230
- if (json.linearVelocity !== undefined) this.linearVelocity.fromJSON(json.linearVelocity);
231
- if (json.angularVelocity !== undefined) this.angularVelocity.fromJSON(json.angularVelocity);
264
+ if (json.linearVelocity !== undefined) v3_from_json(this.linearVelocity, json.linearVelocity);
265
+ if (json.angularVelocity !== undefined) v3_from_json(this.angularVelocity, json.angularVelocity);
232
266
  if (json.mass !== undefined) this.mass = json.mass;
233
- if (json.inverseInertiaLocal !== undefined) this.inverseInertiaLocal.fromJSON(json.inverseInertiaLocal);
267
+ if (json.inverseInertiaLocal !== undefined) v3_from_json(this.inverseInertiaLocal, json.inverseInertiaLocal);
234
268
  if (json.linearDamping !== undefined) this.linearDamping = json.linearDamping;
235
269
  if (json.angularDamping !== undefined) this.angularDamping = json.angularDamping;
236
270
  if (json.gravityScale !== undefined) this.gravityScale = json.gravityScale;
@@ -266,9 +300,9 @@ export class RigidBody {
266
300
  && this.flags === other.flags
267
301
  && this.sleepState === other.sleepState
268
302
  && this.sleep_timer === other.sleep_timer
269
- && this.linearVelocity.equals(other.linearVelocity)
270
- && this.angularVelocity.equals(other.angularVelocity)
271
- && this.inverseInertiaLocal.equals(other.inverseInertiaLocal);
303
+ && v3_equals_array(this.linearVelocity, 0, other.linearVelocity, 0)
304
+ && v3_equals_array(this.angularVelocity, 0, other.angularVelocity, 0)
305
+ && v3_equals_array(this.inverseInertiaLocal, 0, other.inverseInertiaLocal, 0);
272
306
  }
273
307
 
274
308
  /**
@@ -287,9 +321,9 @@ export class RigidBody {
287
321
  h = (h * 31 + (this.flags | 0)) | 0;
288
322
  h = (h * 31 + (this.sleepState | 0)) | 0;
289
323
  h = (h * 31 + computeHashFloat(this.sleep_timer)) | 0;
290
- h = (h * 31 + this.linearVelocity.hash()) | 0;
291
- h = (h * 31 + this.angularVelocity.hash()) | 0;
292
- h = (h * 31 + this.inverseInertiaLocal.hash()) | 0;
324
+ h = (h * 31 + v3_hash(this.linearVelocity, 0)) | 0;
325
+ h = (h * 31 + v3_hash(this.angularVelocity, 0)) | 0;
326
+ h = (h * 31 + v3_hash(this.inverseInertiaLocal, 0)) | 0;
293
327
  return h;
294
328
  }
295
329
  }