@woosh/meep-engine 3.38.0 → 3.39.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/bundle-worker-image-decoder.js +1 -1
- package/build/bundle-worker-terrain.js +1 -1
- package/package.json +1 -1
- package/src/core/binary/BinaryBuffer.d.ts +11 -0
- package/src/core/binary/BinaryBuffer.d.ts.map +1 -1
- package/src/core/binary/BinaryBuffer.js +30 -0
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_aabb.d.ts.map +1 -1
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_aabb.js +28 -7
- package/src/core/geom/3d/aabb/aabb3_transform_oriented.d.ts +15 -0
- package/src/core/geom/3d/aabb/aabb3_transform_oriented.d.ts.map +1 -1
- package/src/core/geom/3d/aabb/aabb3_transform_oriented.js +41 -0
- package/src/core/geom/3d/aabb/aabb3_transform_oriented_inverse.d.ts +12 -0
- package/src/core/geom/3d/aabb/aabb3_transform_oriented_inverse.d.ts.map +1 -1
- package/src/core/geom/3d/aabb/aabb3_transform_oriented_inverse.js +27 -0
- package/src/core/geom/3d/gjk/gjk.js +3 -3
- package/src/core/geom/3d/gjk/gjk_distance.d.ts +94 -0
- package/src/core/geom/3d/gjk/gjk_distance.d.ts.map +1 -0
- package/src/core/geom/3d/gjk/gjk_distance.js +782 -0
- package/src/core/geom/3d/gjk/gjk_epa_penetration.d.ts +5 -4
- package/src/core/geom/3d/gjk/gjk_epa_penetration.d.ts.map +1 -1
- package/src/core/geom/3d/gjk/gjk_epa_penetration.js +14 -9
- package/src/core/geom/3d/gjk/minkowski_support.d.ts +11 -7
- package/src/core/geom/3d/gjk/minkowski_support.d.ts.map +1 -1
- package/src/core/geom/3d/gjk/minkowski_support.js +33 -9
- package/src/core/geom/3d/gjk/mpr.d.ts.map +1 -1
- package/src/core/geom/3d/gjk/mpr.js +26 -5
- package/src/core/geom/3d/line/line3_compute_segment_closest_point_to_aabb3_t.d.ts +15 -0
- package/src/core/geom/3d/line/line3_compute_segment_closest_point_to_aabb3_t.d.ts.map +1 -1
- package/src/core/geom/3d/line/line3_compute_segment_closest_point_to_aabb3_t.js +106 -33
- package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale.d.ts +2 -1
- package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale.d.ts.map +1 -1
- package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale.js +4 -8
- package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale_array.d.ts +32 -0
- package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale_array.d.ts.map +1 -0
- package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale_array.js +85 -0
- package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale_scalar.d.ts +3 -3
- package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale_scalar.d.ts.map +1 -1
- package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale_scalar.js +24 -34
- package/src/core/geom/3d/quaternion/quat3_integrate.d.ts +17 -0
- package/src/core/geom/3d/quaternion/quat3_integrate.d.ts.map +1 -1
- package/src/core/geom/3d/quaternion/quat3_integrate.js +45 -4
- package/src/core/geom/3d/quaternion/quat3_multiply.d.ts +16 -0
- package/src/core/geom/3d/quaternion/quat3_multiply.d.ts.map +1 -1
- package/src/core/geom/3d/quaternion/quat3_multiply.js +25 -0
- package/src/core/geom/3d/quaternion/quat3_nlerp.d.ts +18 -0
- package/src/core/geom/3d/quaternion/quat3_nlerp.d.ts.map +1 -1
- package/src/core/geom/3d/quaternion/quat3_nlerp.js +45 -0
- package/src/core/geom/3d/quaternion/quat3_shortest_arc.d.ts +17 -0
- package/src/core/geom/3d/quaternion/quat3_shortest_arc.d.ts.map +1 -1
- package/src/core/geom/3d/quaternion/quat3_shortest_arc.js +155 -94
- package/src/core/geom/3d/quaternion/quat3_to_matrix3.d.ts +12 -0
- package/src/core/geom/3d/quaternion/quat3_to_matrix3.d.ts.map +1 -1
- package/src/core/geom/3d/quaternion/quat3_to_matrix3.js +31 -0
- package/src/core/geom/3d/shape/AbstractShape3D.d.ts +20 -6
- package/src/core/geom/3d/shape/AbstractShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/AbstractShape3D.js +20 -6
- package/src/core/geom/3d/shape/BoxShape3D.d.ts +1 -1
- package/src/core/geom/3d/shape/BoxShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/BoxShape3D.js +5 -1
- package/src/core/geom/3d/shape/CapsuleShape3D.d.ts +1 -1
- package/src/core/geom/3d/shape/CapsuleShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/CapsuleShape3D.js +5 -1
- package/src/core/geom/3d/shape/ConvexHullShape3D.d.ts +25 -11
- package/src/core/geom/3d/shape/ConvexHullShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/ConvexHullShape3D.js +392 -22
- package/src/core/geom/3d/shape/CylinderShape3D.d.ts +8 -7
- package/src/core/geom/3d/shape/CylinderShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/CylinderShape3D.js +12 -7
- package/src/core/geom/3d/shape/HeightMapShape3D.d.ts +51 -8
- package/src/core/geom/3d/shape/HeightMapShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/HeightMapShape3D.js +260 -14
- package/src/core/geom/3d/shape/MeshShape3D.d.ts +61 -7
- package/src/core/geom/3d/shape/MeshShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/MeshShape3D.js +111 -20
- package/src/core/geom/3d/shape/PointShape3D.d.ts +1 -1
- package/src/core/geom/3d/shape/PointShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/PointShape3D.js +1 -1
- package/src/core/geom/3d/shape/PosedShape3D.d.ts +9 -0
- package/src/core/geom/3d/shape/PosedShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/PosedShape3D.js +36 -6
- package/src/core/geom/3d/shape/SphereShape3D.d.ts +1 -1
- package/src/core/geom/3d/shape/SphereShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/SphereShape3D.js +5 -1
- package/src/core/geom/3d/shape/TransformedShape3D.d.ts +12 -10
- package/src/core/geom/3d/shape/TransformedShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/TransformedShape3D.js +53 -19
- package/src/core/geom/3d/shape/Triangle3D.d.ts +1 -1
- package/src/core/geom/3d/shape/Triangle3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/Triangle3D.js +5 -1
- package/src/core/geom/3d/shape/UnionShape3D.d.ts +1 -1
- package/src/core/geom/3d/shape/UnionShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/UnionShape3D.js +19 -2
- package/src/core/geom/3d/shape/sdf/sdf3_box.d.ts +14 -0
- package/src/core/geom/3d/shape/sdf/sdf3_box.d.ts.map +1 -1
- package/src/core/geom/3d/shape/sdf/sdf3_box.js +67 -5
- package/src/core/geom/3d/shape/sdf/sdf3_capsule.d.ts +14 -0
- package/src/core/geom/3d/shape/sdf/sdf3_capsule.d.ts.map +1 -1
- package/src/core/geom/3d/shape/sdf/sdf3_capsule.js +61 -3
- package/src/core/geom/3d/shape/sdf/sdf3_cylinder.d.ts +14 -0
- package/src/core/geom/3d/shape/sdf/sdf3_cylinder.d.ts.map +1 -1
- package/src/core/geom/3d/shape/sdf/sdf3_cylinder.js +63 -4
- package/src/core/geom/3d/shape/sdf/sdf3_plane.d.ts +15 -0
- package/src/core/geom/3d/shape/sdf/sdf3_plane.d.ts.map +1 -1
- package/src/core/geom/3d/shape/sdf/sdf3_plane.js +64 -2
- package/src/core/geom/3d/shape/sdf/sdf3_sphere.d.ts +21 -0
- package/src/core/geom/3d/shape/sdf/sdf3_sphere.d.ts.map +1 -1
- package/src/core/geom/3d/shape/sdf/sdf3_sphere.js +66 -3
- package/src/core/geom/3d/shape/shape3_mesh_from_geometry.d.ts +2 -0
- package/src/core/geom/3d/shape/shape3_mesh_from_geometry.d.ts.map +1 -1
- package/src/core/geom/3d/shape/shape3_mesh_from_geometry.js +7 -0
- package/src/core/geom/3d/shape/util/mesh_compute_triangle_edge_flags.d.ts +41 -0
- package/src/core/geom/3d/shape/util/mesh_compute_triangle_edge_flags.d.ts.map +1 -0
- package/src/core/geom/3d/shape/util/mesh_compute_triangle_edge_flags.js +538 -0
- package/src/core/geom/3d/sphere/harmonics/sh_basis_at.d.ts +31 -0
- package/src/core/geom/3d/sphere/harmonics/sh_basis_at.d.ts.map +1 -0
- package/src/core/geom/3d/sphere/harmonics/sh_basis_at.js +85 -0
- package/src/core/geom/3d/sphere/harmonics/sh_vmf_window.d.ts +18 -0
- package/src/core/geom/3d/sphere/harmonics/sh_vmf_window.d.ts.map +1 -0
- package/src/core/geom/3d/sphere/harmonics/sh_vmf_window.js +19 -0
- package/src/core/geom/3d/triangle/TriangleEdgeFlags.d.ts +49 -0
- package/src/core/geom/3d/triangle/TriangleEdgeFlags.d.ts.map +1 -0
- package/src/core/geom/3d/triangle/TriangleEdgeFlags.js +55 -0
- package/src/core/geom/3d/triangle/tri3_classify_shared_edge.d.ts +42 -0
- package/src/core/geom/3d/triangle/tri3_classify_shared_edge.d.ts.map +1 -0
- package/src/core/geom/3d/triangle/tri3_classify_shared_edge.js +85 -0
- package/src/core/geom/3d/triangle/tri3_closest_point.d.ts +13 -0
- package/src/core/geom/3d/triangle/tri3_closest_point.d.ts.map +1 -1
- package/src/core/geom/3d/triangle/tri3_closest_point.js +36 -1
- package/src/core/geom/3d/triangle/tri3_closest_point_barycentric.d.ts +14 -0
- package/src/core/geom/3d/triangle/tri3_closest_point_barycentric.d.ts.map +1 -1
- package/src/core/geom/3d/triangle/tri3_closest_point_barycentric.js +40 -0
- package/src/core/geom/vec3/v3_quaternion_apply.d.ts +19 -0
- package/src/core/geom/vec3/v3_quaternion_apply.d.ts.map +1 -1
- package/src/core/geom/vec3/v3_quaternion_apply.js +32 -0
- package/src/core/geom/vec3/v3_quaternion_apply_inverse.d.ts +19 -0
- package/src/core/geom/vec3/v3_quaternion_apply_inverse.d.ts.map +1 -1
- package/src/core/geom/vec3/v3_quaternion_apply_inverse.js +32 -0
- package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts +135 -10
- package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts.map +1 -1
- package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.js +338 -105
- package/src/engine/control/first-person/abilities/Ability.d.ts +14 -5
- package/src/engine/control/first-person/abilities/Ability.d.ts.map +1 -1
- package/src/engine/control/first-person/abilities/Ability.js +14 -5
- package/src/engine/control/first-person/abilities/LedgeGrab.d.ts.map +1 -1
- package/src/engine/control/first-person/abilities/LedgeGrab.js +16 -12
- package/src/engine/control/first-person/abilities/Mantle.d.ts.map +1 -1
- package/src/engine/control/first-person/abilities/Mantle.js +5 -1
- package/src/engine/control/first-person/abilities/Slide.js +1 -1
- package/src/engine/control/first-person/collision/KinematicMover.d.ts +92 -14
- package/src/engine/control/first-person/collision/KinematicMover.d.ts.map +1 -1
- package/src/engine/control/first-person/collision/KinematicMover.js +218 -37
- package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.d.ts +5 -0
- package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.d.ts.map +1 -1
- package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.js +17 -10
- package/src/engine/ecs/EntityComponentDataset.d.ts.map +1 -1
- package/src/engine/ecs/EntityComponentDataset.js +27 -13
- package/src/engine/ecs/storage/populateEngineSerializationRegistry.d.ts.map +1 -1
- package/src/engine/ecs/storage/populateEngineSerializationRegistry.js +4 -0
- package/src/engine/ecs/transform/Transform64.d.ts +4 -2
- package/src/engine/ecs/transform/Transform64.d.ts.map +1 -1
- package/src/engine/ecs/transform/Transform64.js +10 -16
- package/src/engine/graphics/ecs/water/Water.d.ts +25 -63
- package/src/engine/graphics/ecs/water/Water.d.ts.map +1 -1
- package/src/engine/graphics/ecs/water/Water.js +110 -125
- package/src/engine/graphics/ecs/water/WaterSerializationAdapter.d.ts.map +1 -1
- package/src/engine/graphics/ecs/water/WaterSerializationAdapter.js +38 -74
- package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_1_2.d.ts +1 -1
- package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_1_2.d.ts.map +1 -1
- package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_1_2.js +27 -18
- package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_2_3.d.ts +12 -0
- package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_2_3.d.ts.map +1 -0
- package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_2_3.js +45 -0
- package/src/engine/graphics/ecs/water/WaterWaves.d.ts +33 -0
- package/src/engine/graphics/ecs/water/WaterWaves.d.ts.map +1 -0
- package/src/engine/graphics/ecs/water/WaterWaves.js +46 -0
- package/src/engine/graphics/ecs/water/WaterWavesSerializationAdapter.d.ts +17 -0
- package/src/engine/graphics/ecs/water/WaterWavesSerializationAdapter.d.ts.map +1 -0
- package/src/engine/graphics/ecs/water/WaterWavesSerializationAdapter.js +26 -0
- package/src/engine/graphics/texture/3d/scs3d_sample_linear.d.ts +22 -0
- package/src/engine/graphics/texture/3d/scs3d_sample_linear.d.ts.map +1 -1
- package/src/engine/graphics/texture/3d/scs3d_sample_linear.js +43 -1
- package/src/engine/graphics/texture/sampler/Sampler2D.d.ts +29 -3
- package/src/engine/graphics/texture/sampler/Sampler2D.d.ts.map +1 -1
- package/src/engine/graphics/texture/sampler/Sampler2D.js +102 -14
- package/src/engine/graphics3/WaterSystem.d.ts +39 -3
- package/src/engine/graphics3/WaterSystem.d.ts.map +1 -1
- package/src/engine/graphics3/WaterSystem.js +134 -25
- package/src/engine/interpolation/BinaryInterpolationAdapter.d.ts +10 -4
- package/src/engine/interpolation/BinaryInterpolationAdapter.d.ts.map +1 -1
- package/src/engine/interpolation/BinaryInterpolationAdapter.js +11 -5
- package/src/engine/interpolation/InterpolationLog.d.ts +11 -5
- package/src/engine/interpolation/InterpolationLog.d.ts.map +1 -1
- package/src/engine/interpolation/InterpolationLog.js +12 -6
- package/src/engine/interpolation/InterpolationSystem.d.ts.map +1 -1
- package/src/engine/interpolation/InterpolationSystem.js +39 -8
- package/src/engine/interpolation/PoseInterpolationAdapter.d.ts +1 -1
- package/src/engine/interpolation/PoseInterpolationAdapter.d.ts.map +1 -1
- package/src/engine/interpolation/PoseInterpolationAdapter.js +51 -22
- package/src/engine/interpolation/TransformPoseSerializationAdapter.d.ts.map +1 -1
- package/src/engine/interpolation/TransformPoseSerializationAdapter.js +18 -23
- package/src/engine/network/adapters/QuaternionInterpolationAdapter.d.ts +1 -1
- package/src/engine/network/adapters/QuaternionInterpolationAdapter.d.ts.map +1 -1
- package/src/engine/network/adapters/QuaternionInterpolationAdapter.js +3 -1
- package/src/engine/network/adapters/TransformInterpolationAdapter.d.ts +1 -1
- package/src/engine/network/adapters/TransformInterpolationAdapter.d.ts.map +1 -1
- package/src/engine/network/adapters/TransformInterpolationAdapter.js +3 -1
- package/src/engine/network/adapters/Vector3InterpolationAdapter.d.ts.map +1 -1
- package/src/engine/network/adapters/Vector3InterpolationAdapter.js +5 -2
- package/src/engine/physics/body/SolverBodyState.d.ts.map +1 -1
- package/src/engine/physics/body/SolverBodyState.js +4 -5
- package/src/engine/physics/broadphase/compute_fat_world_aabb.d.ts +12 -0
- package/src/engine/physics/broadphase/compute_fat_world_aabb.d.ts.map +1 -1
- package/src/engine/physics/broadphase/compute_fat_world_aabb.js +28 -3
- package/src/engine/physics/ccd/linear_sweep.d.ts +42 -12
- package/src/engine/physics/ccd/linear_sweep.d.ts.map +1 -1
- package/src/engine/physics/ccd/linear_sweep.js +1131 -97
- package/src/engine/physics/cloth/collider/ClothColliderIndex.d.ts +13 -0
- package/src/engine/physics/cloth/collider/ClothColliderIndex.d.ts.map +1 -1
- package/src/engine/physics/cloth/collider/ClothColliderIndex.js +90 -22
- package/src/engine/physics/cloth/collider/cloth_collider_bounds.js +84 -24
- package/src/engine/physics/cloth/collider/cloth_collider_sdf.d.ts +46 -3
- package/src/engine/physics/cloth/collider/cloth_collider_sdf.d.ts.map +1 -1
- package/src/engine/physics/cloth/collider/cloth_collider_sdf.js +116 -68
- package/src/engine/physics/cloth/ecs/ClothWorld.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothWorld.js +59 -47
- package/src/engine/physics/cloth/ecs/cloth_gather_colliders.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/cloth_gather_colliders.js +62 -55
- package/src/engine/physics/cloth/ecs/cloth_reconstruct_pose.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/cloth_reconstruct_pose.js +46 -39
- package/src/engine/physics/cloth/ecs/cloth_write_back.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/cloth_write_back.js +41 -36
- package/src/engine/physics/cloth/playground/garment_build.js +6 -6
- package/src/engine/physics/cloth/playground/garment_main.js +18 -14
- package/src/engine/physics/cloth/solver/cloth_contact_find.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/cloth_contact_find.js +8 -5
- package/src/engine/physics/cloth/solver/cloth_solve_vertex.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/cloth_solve_vertex.js +8 -5
- package/src/engine/physics/cloth/solver/constraint/cloth_contact_row.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/constraint/cloth_contact_row.js +15 -15
- package/src/engine/physics/cloth/solver/find_non_finite_cloth_state.d.ts +5 -0
- package/src/engine/physics/cloth/solver/find_non_finite_cloth_state.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/find_non_finite_cloth_state.js +32 -9
- package/src/engine/physics/constraint/solve_constraints.d.ts +50 -8
- package/src/engine/physics/constraint/solve_constraints.d.ts.map +1 -1
- package/src/engine/physics/constraint/solve_constraints.js +703 -429
- package/src/engine/physics/contact/ManifoldStore.d.ts +12 -0
- package/src/engine/physics/contact/ManifoldStore.d.ts.map +1 -1
- package/src/engine/physics/contact/ManifoldStore.js +32 -0
- package/src/engine/physics/ecs/BodyKind.d.ts +16 -8
- package/src/engine/physics/ecs/BodyKind.d.ts.map +1 -1
- package/src/engine/physics/ecs/BodyKind.js +16 -8
- package/src/engine/physics/ecs/Collider.d.ts +7 -2
- package/src/engine/physics/ecs/Collider.d.ts.map +1 -1
- package/src/engine/physics/ecs/Collider.js +7 -2
- package/src/engine/physics/ecs/PhysicsEvents.d.ts +13 -0
- package/src/engine/physics/ecs/PhysicsEvents.d.ts.map +1 -1
- package/src/engine/physics/ecs/PhysicsEvents.js +13 -0
- package/src/engine/physics/ecs/PhysicsSystem.d.ts +320 -36
- package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -1
- package/src/engine/physics/ecs/PhysicsSystem.js +779 -81
- package/src/engine/physics/fluid/FluidField.d.ts.map +1 -1
- package/src/engine/physics/fluid/FluidField.js +5 -1
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +11 -9
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts.map +1 -1
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.js +7 -5
- package/src/engine/physics/fluid/ecs/fluid_reanchor_field.d.ts.map +1 -1
- package/src/engine/physics/fluid/ecs/fluid_reanchor_field.js +9 -7
- package/src/engine/physics/fluid/effector/ImpulseFluidEffector.d.ts.map +1 -1
- package/src/engine/physics/fluid/effector/ImpulseFluidEffector.js +3 -4
- package/src/engine/physics/fluid/effector/WakeFluidEffector.d.ts.map +1 -1
- package/src/engine/physics/fluid/effector/WakeFluidEffector.js +9 -7
- package/src/engine/physics/fluid/solver/v3_mac_advect_maccormack_velocity.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_mac_advect_maccormack_velocity.js +65 -43
- package/src/engine/physics/inertia/MASS_PROPERTIES_SIZE.d.ts +23 -0
- package/src/engine/physics/inertia/MASS_PROPERTIES_SIZE.d.ts.map +1 -0
- package/src/engine/physics/inertia/MASS_PROPERTIES_SIZE.js +22 -0
- package/src/engine/physics/inertia/convex_hull_mass_properties.d.ts +29 -0
- package/src/engine/physics/inertia/convex_hull_mass_properties.d.ts.map +1 -0
- package/src/engine/physics/inertia/convex_hull_mass_properties.js +117 -0
- package/src/engine/physics/inertia/mass_properties_accumulate.d.ts +24 -0
- package/src/engine/physics/inertia/mass_properties_accumulate.d.ts.map +1 -0
- package/src/engine/physics/inertia/mass_properties_accumulate.js +93 -0
- package/src/engine/physics/inertia/primitive_mass_properties.d.ts +46 -0
- package/src/engine/physics/inertia/primitive_mass_properties.d.ts.map +1 -0
- package/src/engine/physics/inertia/primitive_mass_properties.js +118 -0
- package/src/engine/physics/inertia/rigid_body_set_mass_properties.d.ts +27 -0
- package/src/engine/physics/inertia/rigid_body_set_mass_properties.d.ts.map +1 -0
- package/src/engine/physics/inertia/rigid_body_set_mass_properties.js +62 -0
- package/src/engine/physics/inertia/world_inverse_inertia.d.ts +67 -25
- package/src/engine/physics/inertia/world_inverse_inertia.d.ts.map +1 -1
- package/src/engine/physics/inertia/world_inverse_inertia.js +149 -26
- package/src/engine/physics/integration/integrate_position.d.ts +18 -19
- package/src/engine/physics/integration/integrate_position.d.ts.map +1 -1
- package/src/engine/physics/integration/integrate_position.js +40 -37
- package/src/engine/physics/integration/integrate_velocity.d.ts.map +1 -1
- package/src/engine/physics/integration/integrate_velocity.js +13 -4
- package/src/engine/physics/island/IslandBuilder.d.ts +124 -6
- package/src/engine/physics/island/IslandBuilder.d.ts.map +1 -1
- package/src/engine/physics/island/IslandBuilder.js +322 -19
- package/src/engine/physics/narrowphase/box_box_manifold.d.ts +13 -0
- package/src/engine/physics/narrowphase/box_box_manifold.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/box_box_manifold.js +95 -39
- package/src/engine/physics/narrowphase/box_triangle_contact.d.ts +40 -0
- package/src/engine/physics/narrowphase/box_triangle_contact.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/box_triangle_contact.js +415 -120
- package/src/engine/physics/narrowphase/capsule_contacts.d.ts +63 -0
- package/src/engine/physics/narrowphase/capsule_contacts.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/capsule_contacts.js +234 -46
- package/src/engine/physics/narrowphase/capsule_triangle_contact.d.ts +13 -0
- package/src/engine/physics/narrowphase/capsule_triangle_contact.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/capsule_triangle_contact.js +141 -93
- package/src/engine/physics/narrowphase/compute_penetration.d.ts +29 -11
- package/src/engine/physics/narrowphase/compute_penetration.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/compute_penetration.js +157 -34
- package/src/engine/physics/narrowphase/convex_convex_manifold.d.ts +76 -0
- package/src/engine/physics/narrowphase/convex_convex_manifold.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/convex_convex_manifold.js +243 -48
- package/src/engine/physics/narrowphase/decomposition/decompose_to_triangles.d.ts +13 -0
- package/src/engine/physics/narrowphase/decomposition/decompose_to_triangles.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/decomposition/decompose_to_triangles.js +28 -12
- package/src/engine/physics/narrowphase/decomposition/heightmap_enumerate_triangles.d.ts +13 -0
- package/src/engine/physics/narrowphase/decomposition/heightmap_enumerate_triangles.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/decomposition/heightmap_enumerate_triangles.js +27 -0
- package/src/engine/physics/narrowphase/decomposition/heightmap_triangle_edge_flags.d.ts +42 -0
- package/src/engine/physics/narrowphase/decomposition/heightmap_triangle_edge_flags.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/decomposition/heightmap_triangle_edge_flags.js +250 -0
- package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.d.ts +27 -11
- package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.js +291 -12
- package/src/engine/physics/narrowphase/decomposition/triangle_buffer_layout.d.ts +7 -1
- package/src/engine/physics/narrowphase/decomposition/triangle_buffer_layout.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/decomposition/triangle_buffer_layout.js +7 -1
- package/src/engine/physics/narrowphase/decomposition/triangle_edge_flags.d.ts +35 -0
- package/src/engine/physics/narrowphase/decomposition/triangle_edge_flags.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/decomposition/triangle_edge_flags.js +61 -0
- package/src/engine/physics/narrowphase/hull_sphere_contact.d.ts +54 -0
- package/src/engine/physics/narrowphase/hull_sphere_contact.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/hull_sphere_contact.js +244 -0
- package/src/engine/physics/narrowphase/mesh_convex_hull.js +5 -1
- package/src/engine/physics/narrowphase/mesh_mesh_tet_manifold.d.ts +2 -0
- package/src/engine/physics/narrowphase/mesh_mesh_tet_manifold.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/mesh_mesh_tet_manifold.js +56 -31
- package/src/engine/physics/narrowphase/narrowphase_step.d.ts +6 -5
- package/src/engine/physics/narrowphase/narrowphase_step.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/narrowphase_step.js +2185 -483
- package/src/engine/physics/narrowphase/reduce_manifold_contacts.d.ts +56 -5
- package/src/engine/physics/narrowphase/reduce_manifold_contacts.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/reduce_manifold_contacts.js +546 -5
- package/src/engine/physics/narrowphase/refine_ray_concave.d.ts +29 -2
- package/src/engine/physics/narrowphase/refine_ray_concave.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/refine_ray_concave.js +628 -75
- package/src/engine/physics/narrowphase/refine_ray_hit.d.ts +3 -2
- package/src/engine/physics/narrowphase/refine_ray_hit.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/refine_ray_hit.js +3 -2
- package/src/engine/physics/narrowphase/rigid_subject_pose.d.ts +27 -0
- package/src/engine/physics/narrowphase/rigid_subject_pose.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/rigid_subject_pose.js +96 -0
- package/src/engine/physics/narrowphase/sphere_box_contact.d.ts +14 -0
- package/src/engine/physics/narrowphase/sphere_box_contact.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/sphere_box_contact.js +51 -5
- package/src/engine/physics/narrowphase/sphere_sphere_contact.d.ts +12 -0
- package/src/engine/physics/narrowphase/sphere_sphere_contact.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/sphere_sphere_contact.js +30 -0
- package/src/engine/physics/narrowphase/sphere_triangle_contact.d.ts +12 -0
- package/src/engine/physics/narrowphase/sphere_triangle_contact.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/sphere_triangle_contact.js +37 -8
- package/src/engine/physics/narrowphase/support_feature_manifold.d.ts +139 -0
- package/src/engine/physics/narrowphase/support_feature_manifold.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/support_feature_manifold.js +949 -0
- package/src/engine/physics/queries/PhysicsSurfacePoint.d.ts +32 -13
- package/src/engine/physics/queries/PhysicsSurfacePoint.d.ts.map +1 -1
- package/src/engine/physics/queries/PhysicsSurfacePoint.js +36 -13
- package/src/engine/physics/queries/convex_overlaps_shape.d.ts +27 -0
- package/src/engine/physics/queries/convex_overlaps_shape.d.ts.map +1 -0
- package/src/engine/physics/queries/convex_overlaps_shape.js +169 -0
- package/src/engine/physics/queries/overlap_shape.d.ts.map +1 -1
- package/src/engine/physics/queries/overlap_shape.js +57 -79
- package/src/engine/physics/queries/raycast.d.ts +10 -4
- package/src/engine/physics/queries/raycast.d.ts.map +1 -1
- package/src/engine/physics/queries/raycast.js +133 -9
- package/src/engine/physics/queries/shape_cast.d.ts +55 -24
- package/src/engine/physics/queries/shape_cast.d.ts.map +1 -1
- package/src/engine/physics/queries/shape_cast.js +2061 -245
- package/src/engine/physics/solver/apply_impulse_to_body.d.ts +32 -10
- package/src/engine/physics/solver/apply_impulse_to_body.d.ts.map +1 -1
- package/src/engine/physics/solver/apply_impulse_to_body.js +69 -28
- package/src/engine/physics/solver/solve_contacts.d.ts +65 -18
- package/src/engine/physics/solver/solve_contacts.d.ts.map +1 -1
- package/src/engine/physics/solver/solve_contacts.js +458 -234
- package/src/engine/physics/vehicle/RaycastVehicle.d.ts.map +1 -1
- package/src/engine/physics/vehicle/RaycastVehicle.js +5 -6
- package/src/shade/assets/textures/split_sum.bin +0 -0
- package/src/shade/device/mock/SoftwareGPUQueue.d.ts.map +1 -1
- package/src/shade/device/mock/SoftwareGPUQueue.js +2 -1
- package/src/shade/playground/path_traced_media/README.md +78 -0
- package/src/shade/playground/path_traced_media/capture_radiance.d.ts +33 -0
- package/src/shade/playground/path_traced_media/capture_radiance.d.ts.map +1 -0
- package/src/shade/playground/path_traced_media/capture_radiance.js +174 -0
- package/src/shade/playground/path_traced_media/checks.d.ts +160 -0
- package/src/shade/playground/path_traced_media/checks.d.ts.map +1 -0
- package/src/shade/playground/path_traced_media/checks.js +921 -0
- package/src/shade/playground/path_traced_media/index.html +71 -0
- package/src/shade/playground/path_traced_media/main.d.ts +2 -0
- package/src/shade/playground/path_traced_media/main.d.ts.map +1 -0
- package/src/shade/playground/path_traced_media/main.js +440 -0
- package/src/shade/playground/path_traced_media/make_wave_pool_geometry.d.ts +26 -0
- package/src/shade/playground/path_traced_media/make_wave_pool_geometry.d.ts.map +1 -0
- package/src/shade/playground/path_traced_media/make_wave_pool_geometry.js +117 -0
- package/src/shade/playground/path_traced_media/views.d.ts +21 -0
- package/src/shade/playground/path_traced_media/views.d.ts.map +1 -0
- package/src/shade/playground/path_traced_media/views.js +161 -0
- package/src/shade/playground/sh_exponential/README.md +43 -0
- package/src/shade/playground/sh_exponential/index.html +59 -0
- package/src/shade/playground/sh_exponential/main.d.ts +2 -0
- package/src/shade/playground/sh_exponential/main.d.ts.map +1 -0
- package/src/shade/playground/sh_exponential/main.js +571 -0
- package/src/shade/playground/sh_exponential/sh_exp_playground_shaders.d.ts +46 -0
- package/src/shade/playground/sh_exponential/sh_exp_playground_shaders.d.ts.map +1 -0
- package/src/shade/playground/sh_exponential/sh_exp_playground_shaders.js +270 -0
- package/src/shade/playground/water_refraction/README.md +24 -15
- package/src/shade/playground/water_refraction/index.html +6 -8
- package/src/shade/playground/water_refraction/main.js +12 -11
- package/src/shade/playground/water_refraction/world.d.ts +2 -0
- package/src/shade/playground/water_refraction/world.d.ts.map +1 -1
- package/src/shade/playground/water_refraction/world.js +8 -4
- package/src/shade/renderer/Renderer.d.ts +2 -0
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +23 -0
- package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_draw.d.ts.map +1 -1
- package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_draw.js +9 -1
- package/src/shade/renderer/geometry/sdf/chunk_scene_point_query_volume_sign.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/chunk_scene_point_query_volume_sign.js +6 -4
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/brick4_bake_basic.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/brick4_bake_basic.js +1 -0
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/sampling/chunk_direction_by_index_rand1.d.ts +7 -0
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/sampling/chunk_direction_by_index_rand1.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/sampling/chunk_direction_by_index_rand1.js +12 -12
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/sampling/chunk_direction_by_index_spherical.d.ts +4 -0
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/sampling/chunk_direction_by_index_spherical.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/sampling/chunk_direction_by_index_spherical.js +13 -9
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_probes.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_probes.js +2 -0
- package/src/shade/renderer/global_illumination/lpv/bake/GPULightProbeVolumeRenderer.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/lpv/bake/GPULightProbeVolumeRenderer.js +3 -0
- package/src/shade/renderer/global_illumination/lpv/deprecated/probe_trace_compute_shader_code.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/lpv/deprecated/probe_trace_compute_shader_code.js +4 -9
- package/src/shade/renderer/light/LIGHT_DATABASE_SPEC.d.ts.map +1 -1
- package/src/shade/renderer/light/LIGHT_DATABASE_SPEC.js +20 -10
- package/src/shade/renderer/light/environment/rgbe/load_environment_map.d.ts +2 -1
- package/src/shade/renderer/light/environment/rgbe/load_environment_map.d.ts.map +1 -1
- package/src/shade/renderer/light/environment/rgbe/load_environment_map.js +2 -1
- package/src/shade/renderer/light/environment/sh_exponential/README.md +171 -0
- package/src/shade/renderer/light/environment/sh_exponential/SHExpEncoder.d.ts +170 -0
- package/src/shade/renderer/light/environment/sh_exponential/SHExpEncoder.d.ts.map +1 -0
- package/src/shade/renderer/light/environment/sh_exponential/SHExpEncoder.js +377 -0
- package/src/shade/renderer/light/environment/sh_exponential/SH_EXP_ENCODE_PARAMETERS_STRUCT.d.ts +16 -0
- package/src/shade/renderer/light/environment/sh_exponential/SH_EXP_ENCODE_PARAMETERS_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/light/environment/sh_exponential/SH_EXP_ENCODE_PARAMETERS_STRUCT.js +27 -0
- package/src/shade/renderer/light/environment/sh_exponential/chunk_sh_exp_workgroup_sum.d.ts +21 -0
- package/src/shade/renderer/light/environment/sh_exponential/chunk_sh_exp_workgroup_sum.d.ts.map +1 -0
- package/src/shade/renderer/light/environment/sh_exponential/chunk_sh_exp_workgroup_sum.js +53 -0
- package/src/shade/renderer/light/environment/sh_exponential/sh_exp_design_row.d.ts +33 -0
- package/src/shade/renderer/light/environment/sh_exponential/sh_exp_design_row.d.ts.map +1 -0
- package/src/shade/renderer/light/environment/sh_exponential/sh_exp_design_row.js +90 -0
- package/src/shade/renderer/light/environment/sh_exponential/sh_exp_fit_samples.d.ts +28 -0
- package/src/shade/renderer/light/environment/sh_exponential/sh_exp_fit_samples.d.ts.map +1 -0
- package/src/shade/renderer/light/environment/sh_exponential/sh_exp_fit_samples.js +92 -0
- package/src/shade/renderer/light/environment/sh_exponential/sh_exp_layout.d.ts +39 -0
- package/src/shade/renderer/light/environment/sh_exponential/sh_exp_layout.d.ts.map +1 -0
- package/src/shade/renderer/light/environment/sh_exponential/sh_exp_layout.js +44 -0
- package/src/shade/renderer/light/environment/sh_exponential/sh_exp_solve_matrix.d.ts +42 -0
- package/src/shade/renderer/light/environment/sh_exponential/sh_exp_solve_matrix.d.ts.map +1 -0
- package/src/shade/renderer/light/environment/sh_exponential/sh_exp_solve_matrix.js +123 -0
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_environment_cells.d.ts +30 -0
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_environment_cells.d.ts.map +1 -0
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_environment_cells.js +147 -0
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_log_floor.d.ts +24 -0
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_log_floor.d.ts.map +1 -0
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_log_floor.js +79 -0
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_project.d.ts +17 -0
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_project.d.ts.map +1 -0
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_project.js +99 -0
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_reference_reflectance.d.ts +24 -0
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_reference_reflectance.d.ts.map +1 -0
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_reference_reflectance.js +104 -0
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_solve.d.ts +12 -0
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_solve.d.ts.map +1 -0
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_solve.js +93 -0
- package/src/shade/renderer/lightmap/GPULightMap.d.ts.map +1 -1
- package/src/shade/renderer/lightmap/GPULightMap.js +1 -0
- package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_irradiance_flat.d.ts.map +1 -1
- package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_irradiance_flat.js +4 -0
- package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_sh.d.ts.map +1 -1
- package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_sh.js +4 -0
- package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
- package/src/shade/renderer/material/PIXEL_TEXTURE_ORM.d.ts +1 -1
- package/src/shade/renderer/material/PIXEL_TEXTURE_ORM.d.ts.map +1 -1
- package/src/shade/renderer/material/StandardShadeMaterial.d.ts +15 -0
- package/src/shade/renderer/material/StandardShadeMaterial.d.ts.map +1 -1
- package/src/shade/renderer/material/StandardShadeMaterial.js +17 -0
- package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts +36 -2
- package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts.map +1 -1
- package/src/shade/renderer/material/resident/GPUResidentMaterialContext.js +218 -18
- package/src/shade/renderer/material/resident/INDIRECT_MATERIAL_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/material/resident/INDIRECT_MATERIAL_STRUCT.js +10 -0
- package/src/shade/renderer/medium/MEDIA_TABLE_STRUCT.d.ts +17 -0
- package/src/shade/renderer/medium/MEDIA_TABLE_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/medium/MEDIA_TABLE_STRUCT.js +24 -0
- package/src/shade/renderer/medium/MEDIUM_PHASE_LOBE_KIND.d.ts +24 -0
- package/src/shade/renderer/medium/MEDIUM_PHASE_LOBE_KIND.d.ts.map +1 -0
- package/src/shade/renderer/medium/MEDIUM_PHASE_LOBE_KIND.js +18 -0
- package/src/shade/renderer/medium/MEDIUM_STRUCT.d.ts +20 -0
- package/src/shade/renderer/medium/MEDIUM_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/medium/MEDIUM_STRUCT.js +43 -0
- package/src/shade/renderer/medium/ParticipatingMedium.d.ts +108 -0
- package/src/shade/renderer/medium/ParticipatingMedium.d.ts.map +1 -0
- package/src/shade/renderer/medium/ParticipatingMedium.js +204 -0
- package/src/shade/renderer/medium/chunk_medium_lobe_phase.d.ts +13 -0
- package/src/shade/renderer/medium/chunk_medium_lobe_phase.d.ts.map +1 -0
- package/src/shade/renderer/medium/chunk_medium_lobe_phase.js +33 -0
- package/src/shade/renderer/medium/participating_medium_serialization.d.ts +32 -0
- package/src/shade/renderer/medium/participating_medium_serialization.d.ts.map +1 -0
- package/src/shade/renderer/medium/participating_medium_serialization.js +181 -0
- package/src/shade/renderer/medium/phase/MediumPhaseFunction.d.ts +48 -0
- package/src/shade/renderer/medium/phase/MediumPhaseFunction.d.ts.map +1 -0
- package/src/shade/renderer/medium/phase/MediumPhaseFunction.js +42 -0
- package/src/shade/renderer/medium/phase/PhaseCornetteShanks.d.ts +23 -0
- package/src/shade/renderer/medium/phase/PhaseCornetteShanks.d.ts.map +1 -0
- package/src/shade/renderer/medium/phase/PhaseCornetteShanks.js +45 -0
- package/src/shade/renderer/medium/phase/PhaseDraine.d.ts +30 -0
- package/src/shade/renderer/medium/phase/PhaseDraine.d.ts.map +1 -0
- package/src/shade/renderer/medium/phase/PhaseDraine.js +58 -0
- package/src/shade/renderer/medium/phase/PhaseFournierForand.d.ts +24 -0
- package/src/shade/renderer/medium/phase/PhaseFournierForand.d.ts.map +1 -0
- package/src/shade/renderer/medium/phase/PhaseFournierForand.js +53 -0
- package/src/shade/renderer/medium/phase/PhaseHenyeyGreenstein.d.ts +21 -0
- package/src/shade/renderer/medium/phase/PhaseHenyeyGreenstein.d.ts.map +1 -0
- package/src/shade/renderer/medium/phase/PhaseHenyeyGreenstein.js +43 -0
- package/src/shade/renderer/medium/phase/PhaseJendersieDeon.d.ts +25 -0
- package/src/shade/renderer/medium/phase/PhaseJendersieDeon.d.ts.map +1 -0
- package/src/shade/renderer/medium/phase/PhaseJendersieDeon.js +66 -0
- package/src/shade/renderer/medium/phase/PhaseRayleigh.d.ts +9 -0
- package/src/shade/renderer/medium/phase/PhaseRayleigh.d.ts.map +1 -0
- package/src/shade/renderer/medium/phase/PhaseRayleigh.js +21 -0
- package/src/shade/renderer/medium/phase/PhaseWaterMolecular.d.ts +28 -0
- package/src/shade/renderer/medium/phase/PhaseWaterMolecular.d.ts.map +1 -0
- package/src/shade/renderer/medium/phase/PhaseWaterMolecular.js +49 -0
- package/src/shade/renderer/medium/water/WATER_DEFAULT_PATH_LENGTHS.d.ts +10 -0
- package/src/shade/renderer/medium/water/WATER_DEFAULT_PATH_LENGTHS.d.ts.map +1 -0
- package/src/shade/renderer/medium/water/WATER_DEFAULT_PATH_LENGTHS.js +25 -0
- package/src/shade/renderer/medium/water/water_iop_from_appearance.d.ts +47 -0
- package/src/shade/renderer/medium/water/water_iop_from_appearance.d.ts.map +1 -0
- package/src/shade/renderer/medium/water/water_iop_from_appearance.js +174 -0
- package/src/shade/renderer/medium/water/water_iop_from_constituents.d.ts +57 -0
- package/src/shade/renderer/medium/water/water_iop_from_constituents.d.ts.map +1 -0
- package/src/shade/renderer/medium/water/water_iop_from_constituents.js +242 -0
- package/src/shade/renderer/medium/water/water_iop_jerlov.d.ts +41 -0
- package/src/shade/renderer/medium/water/water_iop_jerlov.d.ts.map +1 -0
- package/src/shade/renderer/medium/water/water_iop_jerlov.js +231 -0
- package/src/shade/renderer/medium/water/water_iop_spectral_reference.d.ts +66 -0
- package/src/shade/renderer/medium/water/water_iop_spectral_reference.d.ts.map +1 -0
- package/src/shade/renderer/medium/water/water_iop_spectral_reference.js +223 -0
- package/src/shade/renderer/medium/water/water_medium_from_iop.d.ts +96 -0
- package/src/shade/renderer/medium/water/water_medium_from_iop.d.ts.map +1 -0
- package/src/shade/renderer/medium/water/water_medium_from_iop.js +145 -0
- package/src/shade/renderer/medium/water/water_presets.d.ts +69 -0
- package/src/shade/renderer/medium/water/water_presets.d.ts.map +1 -0
- package/src/shade/renderer/medium/water/water_presets.js +119 -0
- package/src/shade/renderer/medium/water/water_rgb_from_spectral.d.ts +69 -0
- package/src/shade/renderer/medium/water/water_rgb_from_spectral.d.ts.map +1 -0
- package/src/shade/renderer/medium/water/water_rgb_from_spectral.js +341 -0
- package/src/shade/renderer/particles/DESIGN.md +4 -2
- package/src/shade/renderer/particles/shaders/chunk_particle_avboit_voxel_fade.d.ts +26 -0
- package/src/shade/renderer/particles/shaders/chunk_particle_avboit_voxel_fade.d.ts.map +1 -0
- package/src/shade/renderer/particles/shaders/chunk_particle_avboit_voxel_fade.js +71 -0
- package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.js +16 -1
- package/src/shade/renderer/particles/shaders/shader_particle_avboit_splat.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_avboit_splat.js +6 -13
- package/src/shade/renderer/path_tracer/PATH_TRACED_MEDIA_PLAN_2026_10_02.md +520 -0
- package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.d.ts.map +1 -1
- package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.js +1 -0
- package/src/shade/renderer/path_tracer/accumulating/shader_accumulating_path_tracer.d.ts.map +1 -1
- package/src/shade/renderer/path_tracer/accumulating/shader_accumulating_path_tracer.js +2 -0
- package/src/shade/renderer/path_tracer/graph_path_trace_scene.d.ts.map +1 -1
- package/src/shade/renderer/path_tracer/graph_path_trace_scene.js +188 -185
- package/src/shade/renderer/path_tracer/shader/STANDARD_MATERIAL_DATA_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/path_tracer/shader/STANDARD_MATERIAL_DATA_STRUCT.js +4 -1
- package/src/shade/renderer/path_tracer/shader/chunk_indirect_sample_tangent_normal.d.ts +13 -0
- package/src/shade/renderer/path_tracer/shader/chunk_indirect_sample_tangent_normal.d.ts.map +1 -0
- package/src/shade/renderer/path_tracer/shader/chunk_indirect_sample_tangent_normal.js +29 -0
- package/src/shade/renderer/path_tracer/shader/chunk_render_trace_path.d.ts +79 -0
- package/src/shade/renderer/path_tracer/shader/chunk_render_trace_path.d.ts.map +1 -1
- package/src/shade/renderer/path_tracer/shader/chunk_render_trace_path.js +360 -70
- package/src/shade/renderer/path_tracer/shader/chunk_sample_material_data.d.ts.map +1 -1
- package/src/shade/renderer/path_tracer/shader/chunk_sample_material_data.js +4 -3
- package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_beam.d.ts +24 -0
- package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_beam.d.ts.map +1 -0
- package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_beam.js +99 -0
- package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_connect.d.ts +68 -0
- package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_connect.d.ts.map +1 -0
- package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_connect.js +263 -0
- package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_constraint.d.ts +55 -0
- package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_constraint.d.ts.map +1 -0
- package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_constraint.js +148 -0
- package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_light.d.ts +17 -0
- package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_light.d.ts.map +1 -0
- package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_light.js +41 -0
- package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_light_sample.d.ts +20 -0
- package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_light_sample.d.ts.map +1 -0
- package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_light_sample.js +105 -0
- package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_triangle.d.ts +28 -0
- package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_triangle.d.ts.map +1 -0
- package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_triangle.js +97 -0
- package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_triangle_of_hit.d.ts +12 -0
- package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_triangle_of_hit.d.ts.map +1 -0
- package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_triangle_of_hit.js +46 -0
- package/src/shade/renderer/path_tracer/shader/media/chunk_medium_interface.d.ts +25 -0
- package/src/shade/renderer/path_tracer/shader/media/chunk_medium_interface.d.ts.map +1 -0
- package/src/shade/renderer/path_tracer/shader/media/chunk_medium_interface.js +75 -0
- package/src/shade/renderer/path_tracer/shader/media/chunk_medium_path.d.ts +54 -0
- package/src/shade/renderer/path_tracer/shader/media/chunk_medium_path.d.ts.map +1 -0
- package/src/shade/renderer/path_tracer/shader/media/chunk_medium_path.js +245 -0
- package/src/shade/renderer/path_tracer/shader/media/chunk_medium_phase.d.ts +42 -0
- package/src/shade/renderer/path_tracer/shader/media/chunk_medium_phase.d.ts.map +1 -0
- package/src/shade/renderer/path_tracer/shader/media/chunk_medium_phase.js +236 -0
- package/src/shade/renderer/path_tracer/shader/media/chunk_medium_scatter_nee.d.ts +24 -0
- package/src/shade/renderer/path_tracer/shader/media/chunk_medium_scatter_nee.d.ts.map +1 -0
- package/src/shade/renderer/path_tracer/shader/media/chunk_medium_scatter_nee.js +97 -0
- package/src/shade/renderer/path_tracer/shader/media/chunk_medium_stack.d.ts +57 -0
- package/src/shade/renderer/path_tracer/shader/media/chunk_medium_stack.d.ts.map +1 -0
- package/src/shade/renderer/path_tracer/shader/media/chunk_medium_stack.js +222 -0
- package/src/shade/renderer/path_tracer/shader/media/chunk_medium_transport.d.ts +88 -0
- package/src/shade/renderer/path_tracer/shader/media/chunk_medium_transport.d.ts.map +1 -0
- package/src/shade/renderer/path_tracer/shader/media/chunk_medium_transport.js +304 -0
- package/src/shade/renderer/path_tracer/shader/media/chunk_medium_volumes.d.ts +35 -0
- package/src/shade/renderer/path_tracer/shader/media/chunk_medium_volumes.d.ts.map +1 -0
- package/src/shade/renderer/path_tracer/shader/media/chunk_medium_volumes.js +137 -0
- package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
- package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_sample_history.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_sample_history.js +85 -84
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSettings.d.ts +8 -0
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSettings.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSettings.js +9 -0
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts +12 -2
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.js +12 -3
- package/src/shade/renderer/rasterize/native/avboit/AVBOIT_CONSTANTS.d.ts +13 -7
- package/src/shade/renderer/rasterize/native/avboit/AVBOIT_CONSTANTS.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/AVBOIT_CONSTANTS.js +13 -7
- package/src/shade/renderer/rasterize/native/avboit/AVBOIT_LEDGER.md +309 -0
- package/src/shade/renderer/rasterize/native/avboit/AVBOIT_PLAN_2026_09_03.md +54 -9
- package/src/shade/renderer/rasterize/native/avboit/avboit_draw_fragment_body.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/avboit_draw_fragment_body.js +9 -1
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_footprint_bias.d.ts +33 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_footprint_bias.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_footprint_bias.js +45 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_integral_depth_coordinate.d.ts +4 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_integral_depth_coordinate.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_integral_depth_coordinate.js +6 -2
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_sample_transmittance.d.ts +2 -1
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_sample_transmittance.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_sample_transmittance.js +4 -2
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_level_word.d.ts +14 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_level_word.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_level_word.js +28 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_lut_entry.d.ts +10 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_lut_entry.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_lut_entry.js +18 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_marks.d.ts +19 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_marks.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_marks.js +44 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_step_count.d.ts +10 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_step_count.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_step_count.js +17 -0
- package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.js +3 -1
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_build_warp.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_build_warp.js +163 -64
- package/src/shade/renderer/scene/GPUSceneContext.d.ts.map +1 -1
- package/src/shade/renderer/scene/GPUSceneContext.js +4 -1
- package/src/shade/renderer/scene/SCENE_DATABASE_SPEC.d.ts.map +1 -1
- package/src/shade/renderer/scene/SCENE_DATABASE_SPEC.js +5 -0
- package/src/shade/renderer/shader/chunk/atmosphere/C_MIE_SCATTERING_DECLARATION.d.ts +12 -1
- package/src/shade/renderer/shader/chunk/atmosphere/C_MIE_SCATTERING_DECLARATION.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/atmosphere/C_MIE_SCATTERING_DECLARATION.js +22 -3
- package/src/shade/renderer/shader/chunk/atmosphere/phase/chunk_sample_henyey_greenstein_cos.d.ts +18 -0
- package/src/shade/renderer/shader/chunk/atmosphere/phase/chunk_sample_henyey_greenstein_cos.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/atmosphere/phase/chunk_sample_henyey_greenstein_cos.js +31 -0
- package/src/shade/renderer/shader/chunk/atmosphere/phase/ff/chunk_phase_fournier_forand.d.ts +43 -0
- package/src/shade/renderer/shader/chunk/atmosphere/phase/ff/chunk_phase_fournier_forand.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/atmosphere/phase/ff/chunk_phase_fournier_forand.js +153 -0
- package/src/shade/renderer/shader/chunk/atmosphere/phase/ff/chunk_sample_fournier_forand.d.ts +13 -0
- package/src/shade/renderer/shader/chunk/atmosphere/phase/ff/chunk_sample_fournier_forand.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/atmosphere/phase/ff/chunk_sample_fournier_forand.js +57 -0
- package/src/shade/renderer/shader/chunk/atmosphere/phase/ff/fournier_forand_parameters_from_backscatter.d.ts +45 -0
- package/src/shade/renderer/shader/chunk/atmosphere/phase/ff/fournier_forand_parameters_from_backscatter.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/atmosphere/phase/ff/fournier_forand_parameters_from_backscatter.js +109 -0
- package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/chunk_phase_draine.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/chunk_phase_draine.js +6 -3
- package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/chunk_sample_draine.d.ts +24 -0
- package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/chunk_sample_draine.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/chunk_sample_draine.js +49 -0
- package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/chunk_sample_draine_cos.d.ts +18 -0
- package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/chunk_sample_draine_cos.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/chunk_sample_draine_cos.js +18 -0
- package/src/shade/renderer/shader/chunk/brdf/dfg/chunk_integrate_brdf.d.ts +3 -0
- package/src/shade/renderer/shader/chunk/brdf/dfg/chunk_integrate_brdf.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/brdf/dfg/chunk_integrate_brdf.js +3 -0
- package/src/shade/renderer/shader/chunk/brdf/dfg/shader_split_sum_dgf_lut.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/brdf/dfg/shader_split_sum_dgf_lut.js +3 -1
- package/src/shade/renderer/shader/chunk/brdf/fresnel/chunk_F_dielectric.d.ts +24 -0
- package/src/shade/renderer/shader/chunk/brdf/fresnel/chunk_F_dielectric.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/brdf/fresnel/chunk_F_dielectric.js +53 -0
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_scene_point_query_is_inside_geometry.d.ts +7 -1
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_scene_point_query_is_inside_geometry.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_scene_point_query_is_inside_geometry.js +12 -60
- package/src/shade/renderer/shader/chunk/geometry/sphere/chunk_compute_spherical_excess.d.ts +26 -6
- package/src/shade/renderer/shader/chunk/geometry/sphere/chunk_compute_spherical_excess.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/geometry/sphere/chunk_compute_spherical_excess.js +30 -20
- package/src/shade/renderer/shader/chunk/light/sample/chunk_light_importance_directional.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/light/sample/chunk_light_importance_directional.js +3 -1
- package/src/shade/renderer/shader/chunk/light/sample/chunk_light_importance_point.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/light/sample/chunk_light_importance_point.js +3 -1
- package/src/shade/renderer/shader/chunk/light/sample/chunk_light_importance_spot.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/light/sample/chunk_light_importance_spot.js +3 -1
- package/src/shade/renderer/shader/chunk/light/sample/chunk_light_receiver_cosine.d.ts +14 -0
- package/src/shade/renderer/shader/chunk/light/sample/chunk_light_receiver_cosine.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/light/sample/chunk_light_receiver_cosine.js +25 -0
- package/src/shade/renderer/shader/chunk/light/sample/chunk_select_light_importance.d.ts +9 -2
- package/src/shade/renderer/shader/chunk/light/sample/chunk_select_light_importance.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/light/sample/chunk_select_light_importance.js +33 -10
- package/src/shade/renderer/shader/chunk/screen_space/chunk_screen_space_newton_ray.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/screen_space/chunk_screen_space_newton_ray.js +71 -37
- package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh_band_of_index.d.ts +14 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh_band_of_index.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh_band_of_index.js +30 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh_basis_function.d.ts +19 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh_basis_function.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh_basis_function.js +73 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh_vmf_window.d.ts +19 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh_vmf_window.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh_vmf_window.js +25 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/SH_EXP_P4Q2_PROBE_STRUCT.d.ts +17 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/SH_EXP_P4Q2_PROBE_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/SH_EXP_P4Q2_PROBE_STRUCT.js +23 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/chunk_sh_exp_p4q2_base_reflectance.d.ts +26 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/chunk_sh_exp_p4q2_base_reflectance.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/chunk_sh_exp_p4q2_base_reflectance.js +55 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/chunk_sh_exp_split_sum.d.ts +52 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/chunk_sh_exp_split_sum.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/chunk_sh_exp_split_sum.js +65 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh10_basis_at.d.ts +13 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh10_basis_at.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh10_basis_at.js +229 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh10_color_evaluate_vmf.d.ts +23 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh10_color_evaluate_vmf.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh10_color_evaluate_vmf.js +278 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh2_color_evaluate_vmf.d.ts +23 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh2_color_evaluate_vmf.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh2_color_evaluate_vmf.js +58 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh3_color_evaluate_vmf.d.ts +23 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh3_color_evaluate_vmf.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh3_color_evaluate_vmf.js +75 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh4_basis_at.d.ts +13 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh4_basis_at.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh4_basis_at.js +70 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh4_color_evaluate_vmf.d.ts +23 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh4_color_evaluate_vmf.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh4_color_evaluate_vmf.js +95 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh5_basis_at.d.ts +13 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh5_basis_at.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh5_basis_at.js +89 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh5_color_evaluate_vmf.d.ts +23 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh5_color_evaluate_vmf.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh5_color_evaluate_vmf.js +118 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh6_basis_at.d.ts +13 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh6_basis_at.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh6_basis_at.js +111 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh6_color_evaluate_vmf.d.ts +23 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh6_color_evaluate_vmf.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh6_color_evaluate_vmf.js +144 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh7_basis_at.d.ts +13 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh7_basis_at.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh7_basis_at.js +136 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh7_color_evaluate_vmf.d.ts +23 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh7_color_evaluate_vmf.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh7_color_evaluate_vmf.js +173 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh8_basis_at.d.ts +13 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh8_basis_at.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh8_basis_at.js +164 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh8_color_evaluate_vmf.d.ts +23 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh8_color_evaluate_vmf.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh8_color_evaluate_vmf.js +205 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh9_basis_at.d.ts +13 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh9_basis_at.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh9_basis_at.js +195 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh9_color_evaluate_vmf.d.ts +23 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh9_color_evaluate_vmf.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh9_color_evaluate_vmf.js +240 -0
- package/src/shade/renderer/shader/resource/ShaderResourceGroupDescriptor.d.ts +0 -6
- package/src/shade/renderer/shader/resource/ShaderResourceGroupDescriptor.d.ts.map +1 -1
- package/src/shade/renderer/shader/resource/ShaderResourceGroupDescriptor.js +46 -1
- package/src/shade/renderer/shadow/map/DEFAULT_SHADOWMAP_UPDATE_BUDGET.d.ts +7 -7
- package/src/shade/renderer/shadow/map/DEFAULT_SHADOWMAP_UPDATE_BUDGET.js +7 -7
- package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.d.ts +42 -10
- package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.js +104 -48
- package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts +20 -4
- package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.js +186 -74
- package/src/shade/renderer/shadow/map/Shadowmap.d.ts +2 -1
- package/src/shade/renderer/shadow/map/Shadowmap.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/Shadowmap.js +2 -1
- package/src/shade/renderer/shadow/map/csm/CSM_CASCADE_STRUCT.d.ts +30 -0
- package/src/shade/renderer/shadow/map/csm/CSM_CASCADE_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/shadow/map/csm/CSM_CASCADE_STRUCT.js +52 -0
- package/src/shade/renderer/shadow/map/csm/CSM_SHADOWMAP_STRUCT.d.ts +14 -0
- package/src/shade/renderer/shadow/map/csm/CSM_SHADOWMAP_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/shadow/map/csm/CSM_SHADOWMAP_STRUCT.js +20 -0
- package/src/shade/renderer/shadow/map/csm/SHADOWMAP_CSM_DEFAULT_CASCADE_COUNT.d.ts +8 -0
- package/src/shade/renderer/shadow/map/csm/SHADOWMAP_CSM_DEFAULT_CASCADE_COUNT.d.ts.map +1 -0
- package/src/shade/renderer/shadow/map/csm/SHADOWMAP_CSM_DEFAULT_CASCADE_COUNT.js +7 -0
- package/src/shade/renderer/shadow/map/csm/shader/shader_csm_caster_range.d.ts +8 -6
- package/src/shade/renderer/shadow/map/csm/shader/shader_csm_caster_range.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/csm/shader/shader_csm_caster_range.js +28 -34
- package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_csm_compute_cascade_blended.d.ts +3 -2
- package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_csm_compute_cascade_blended.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_csm_compute_cascade_blended.js +19 -14
- package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_directional.d.ts +4 -3
- package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_directional.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_directional.js +12 -7
- package/src/shade/renderer/shadow/map/shadowmap_budget_carry_over.d.ts +4 -4
- package/src/shade/renderer/shadow/map/shadowmap_budget_carry_over.js +4 -4
- package/src/shade/renderer/shadow/vsm/GPUViewShadowMaps.d.ts.map +1 -1
- package/src/shade/renderer/shadow/vsm/GPUViewShadowMaps.js +39 -17
- package/src/shade/renderer/shadow/vsm/GPUVirtualShadowTextureResidence.d.ts.map +1 -1
- package/src/shade/renderer/shadow/vsm/GPUVirtualShadowTextureResidence.js +5 -36
- package/src/shade/renderer/shadow/vsm/VSM_UNIFORMS_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/shadow/vsm/VSM_UNIFORMS_STRUCT.js +3 -2
- package/src/shade/renderer/shadow/vsm/VirtualShadowMap.d.ts +1 -1
- package/src/shade/renderer/shadow/vsm/VirtualShadowMap.d.ts.map +1 -1
- package/src/shade/renderer/shadow/vsm/VirtualShadowMap.js +49 -35
- package/src/shade/renderer/shadow/vsm/VirtualShadowmapRenderer.d.ts +4 -1
- package/src/shade/renderer/shadow/vsm/VirtualShadowmapRenderer.d.ts.map +1 -1
- package/src/shade/renderer/shadow/vsm/VirtualShadowmapRenderer.js +8 -9
- package/src/shade/renderer/shadow/vsm/debug_inspect_residence_buffer.js +2 -2
- package/src/shade/renderer/shadow/vsm/decode_tile_address.d.ts.map +1 -1
- package/src/shade/renderer/shadow/vsm/decode_tile_address.js +15 -23
- package/src/shade/renderer/shadow/vsm/vms_pipeline_compute_coarse_bounds.d.ts.map +1 -1
- package/src/shade/renderer/shadow/vsm/vms_pipeline_compute_coarse_bounds.js +6 -9
- package/src/shade/renderer/shadow/vsm/vsm_residence_pipeline.d.ts.map +1 -1
- package/src/shade/renderer/shadow/vsm/vsm_residence_pipeline.js +19 -9
- package/src/shade/renderer/shadow/vsm/vsm_tile_allocation_pipeline.d.ts.map +1 -1
- package/src/shade/renderer/shadow/vsm/vsm_tile_allocation_pipeline.js +18 -6
- package/src/shade/renderer/texture/util/BLACK_PIXEL_TEXTURE.d.ts +1 -1
- package/src/shade/renderer/texture/util/BLACK_PIXEL_TEXTURE.d.ts.map +1 -1
- package/src/shade/renderer/texture/util/PIXEL_TEXTURE_NORMAL.d.ts +18 -1
- package/src/shade/renderer/texture/util/PIXEL_TEXTURE_NORMAL.d.ts.map +1 -1
- package/src/shade/renderer/texture/util/PIXEL_TEXTURE_NORMAL.js +24 -3
- package/src/shade/renderer/texture/util/WHITE_PIXEL_TEXTURE.d.ts +1 -1
- package/src/shade/renderer/texture/util/WHITE_PIXEL_TEXTURE.d.ts.map +1 -1
- package/src/shade/renderer/texture/util/get_single_pixel_texture.d.ts +0 -1
- package/src/shade/renderer/texture/util/get_single_pixel_texture.d.ts.map +1 -1
- package/src/shade/renderer/texture/util/get_single_pixel_texture.js +2 -23
- package/src/shade/renderer/texture/util/single_pixel_texture_from_sampler.d.ts +11 -0
- package/src/shade/renderer/texture/util/single_pixel_texture_from_sampler.d.ts.map +1 -0
- package/src/shade/renderer/texture/util/single_pixel_texture_from_sampler.js +34 -0
- package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.d.ts +17 -8
- package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.js +35 -64
- package/src/shade/renderer/volumetrics/chunk_participating_media_volume_sample.d.ts +21 -0
- package/src/shade/renderer/volumetrics/chunk_participating_media_volume_sample.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/chunk_participating_media_volume_sample.js +70 -0
- package/src/shade/renderer/volumetrics/chunk_participating_media_volumes_iterate.d.ts +31 -0
- package/src/shade/renderer/volumetrics/chunk_participating_media_volumes_iterate.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/chunk_participating_media_volumes_iterate.js +86 -0
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +2 -4
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.js +6 -7
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_scattering_lut.js +7 -7
- package/src/shade/renderer/water/GPUWaterRenderer.d.ts +13 -1
- package/src/shade/renderer/water/GPUWaterRenderer.d.ts.map +1 -1
- package/src/shade/renderer/water/GPUWaterRenderer.js +74 -25
- package/src/shade/renderer/water/chunk_water_gi.d.ts +14 -0
- package/src/shade/renderer/water/chunk_water_gi.d.ts.map +1 -0
- package/src/shade/renderer/water/chunk_water_gi.js +56 -0
- package/src/shade/renderer/water/chunk_water_transport.d.ts +2 -0
- package/src/shade/renderer/water/chunk_water_transport.d.ts.map +1 -1
- package/src/shade/renderer/water/chunk_water_transport.js +51 -40
- package/src/shade/renderer/water/medium/GPUWaterBodies.d.ts +29 -0
- package/src/shade/renderer/water/medium/GPUWaterBodies.d.ts.map +1 -0
- package/src/shade/renderer/water/medium/GPUWaterBodies.js +116 -0
- package/src/shade/renderer/water/medium/WATER_BODIES_STRUCT.d.ts +23 -0
- package/src/shade/renderer/water/medium/WATER_BODIES_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/water/medium/WATER_BODIES_STRUCT.js +42 -0
- package/src/shade/renderer/water/medium/chunk_water_medium_derived.d.ts +9 -0
- package/src/shade/renderer/water/medium/chunk_water_medium_derived.d.ts.map +1 -0
- package/src/shade/renderer/water/medium/chunk_water_medium_derived.js +55 -0
- package/src/shade/renderer/water/medium/chunk_water_medium_scattering.d.ts +8 -0
- package/src/shade/renderer/water/medium/chunk_water_medium_scattering.d.ts.map +1 -0
- package/src/shade/renderer/water/medium/chunk_water_medium_scattering.js +17 -0
- package/src/shade/renderer/water/medium/shader_water_bodies_derive.d.ts +8 -0
- package/src/shade/renderer/water/medium/shader_water_bodies_derive.d.ts.map +1 -0
- package/src/shade/renderer/water/medium/shader_water_bodies_derive.js +30 -0
- package/src/shade/renderer/water/optics/chunk_water_inscatter.d.ts +28 -0
- package/src/shade/renderer/water/optics/chunk_water_inscatter.d.ts.map +1 -0
- package/src/shade/renderer/water/optics/chunk_water_inscatter.js +123 -0
- package/src/shade/renderer/water/optics/chunk_water_light_transmittance.d.ts +23 -0
- package/src/shade/renderer/water/optics/chunk_water_light_transmittance.d.ts.map +1 -0
- package/src/shade/renderer/water/optics/chunk_water_light_transmittance_dry.d.ts +18 -0
- package/src/shade/renderer/water/optics/chunk_water_light_transmittance_dry.d.ts.map +1 -0
- package/src/shade/renderer/water/optics/chunk_water_optics.d.ts +12 -0
- package/src/shade/renderer/water/optics/chunk_water_optics.d.ts.map +1 -0
- package/src/shade/renderer/water/optics/chunk_water_optics.js +75 -0
- package/src/shade/renderer/water/optics/chunk_water_receiver_downwelling.d.ts +27 -0
- package/src/shade/renderer/water/optics/chunk_water_receiver_downwelling.d.ts.map +1 -0
- package/src/shade/renderer/water/optics/chunk_water_receiver_downwelling.js +74 -0
- package/src/shade/renderer/water/shader_water.d.ts +10 -4
- package/src/shade/renderer/water/shader_water.d.ts.map +1 -1
- package/src/shade/renderer/water/shader_water.js +406 -384
- package/src/shade/renderer/water/shader_water_avboit.d.ts.map +1 -1
- package/src/shade/renderer/water/shader_water_avboit.js +19 -9
- package/src/shade/renderer/water/surface/GPUWaterWaveSimulation.d.ts +98 -0
- package/src/shade/renderer/water/surface/GPUWaterWaveSimulation.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/GPUWaterWaveSimulation.js +408 -0
- package/src/shade/renderer/water/surface/WATER_SURFACE_VERTEX_STRUCT.d.ts +12 -0
- package/src/shade/renderer/water/surface/WATER_SURFACE_VERTEX_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/WATER_SURFACE_VERTEX_STRUCT.js +27 -0
- package/src/shade/renderer/water/surface/WATER_WAVE_PARAMETERS_STRUCT.d.ts +14 -0
- package/src/shade/renderer/water/surface/WATER_WAVE_PARAMETERS_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/WATER_WAVE_PARAMETERS_STRUCT.js +49 -0
- package/src/shade/renderer/water/surface/chunk_water_wave.d.ts +15 -0
- package/src/shade/renderer/water/surface/chunk_water_wave.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/chunk_water_wave.js +48 -0
- package/src/shade/renderer/water/surface/chunk_water_wave_grid.d.ts +9 -0
- package/src/shade/renderer/water/surface/chunk_water_wave_grid.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/chunk_water_wave_grid.js +47 -0
- package/src/shade/renderer/water/surface/shader_water_surface_write.d.ts +10 -0
- package/src/shade/renderer/water/surface/shader_water_surface_write.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/shader_water_surface_write.js +51 -0
- package/src/shade/renderer/water/surface/shader_water_wave_step.d.ts +12 -0
- package/src/shade/renderer/water/surface/shader_water_wave_step.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/shader_water_wave_step.js +54 -0
- package/src/shade/renderer/water/surface/water_surface_grid_indices.d.ts +13 -0
- package/src/shade/renderer/water/surface/water_surface_grid_indices.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/water_surface_grid_indices.js +39 -0
- package/src/shade/renderer/water/water_missing_receiver_path.d.ts +17 -0
- package/src/shade/renderer/water/water_missing_receiver_path.d.ts.map +1 -0
- package/src/shade/renderer/water/water_missing_receiver_path.js +40 -0
- package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.d.ts.map +1 -1
- package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +247 -23
- package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts +18 -14
- package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
- package/src/shade/wgsl/emulator/WGSLLanguageCore.js +48 -6
- package/src/shade/renderer/shadow/map/csm/CSM_CASTER_RANGE_STRUCT.d.ts +0 -29
- package/src/shade/renderer/shadow/map/csm/CSM_CASTER_RANGE_STRUCT.d.ts.map +0 -1
- package/src/shade/renderer/shadow/map/csm/CSM_CASTER_RANGE_STRUCT.js +0 -43
- package/src/shade/renderer/shadow/map/csm/SHADOWMAP_CSM_CASCADE_COUNT.d.ts +0 -7
- package/src/shade/renderer/shadow/map/csm/SHADOWMAP_CSM_CASCADE_COUNT.d.ts.map +0 -1
- package/src/shade/renderer/shadow/map/csm/SHADOWMAP_CSM_CASCADE_COUNT.js +0 -6
|
@@ -16,6 +16,7 @@ import { Transform64 } from "../../ecs/transform/Transform64.js";
|
|
|
16
16
|
import { Camera } from "../../graphics/ecs/camera/Camera.js";
|
|
17
17
|
import { BodyKind } from "../../physics/ecs/BodyKind.js";
|
|
18
18
|
import { Collider } from "../../physics/ecs/Collider.js";
|
|
19
|
+
import { is_sensor } from "../../physics/ecs/is_sensor.js";
|
|
19
20
|
import { PhysicsSystem } from "../../physics/ecs/PhysicsSystem.js";
|
|
20
21
|
import { RigidBody } from "../../physics/ecs/RigidBody.js";
|
|
21
22
|
import { PhysicsSurfacePoint } from "../../physics/queries/PhysicsSurfacePoint.js";
|
|
@@ -46,6 +47,9 @@ const SCRATCH_Q_C = new Quaternion();
|
|
|
46
47
|
/** the transform holds its rotation as four numbers, so euler and axis-angle work goes through here */
|
|
47
48
|
const SCRATCH_Q_EULER = new Quaternion();
|
|
48
49
|
|
|
50
|
+
/** what a released body's velocities are set to; never written */
|
|
51
|
+
const ZERO_VELOCITY = new Float64Array(3);
|
|
52
|
+
|
|
49
53
|
const TWO_PI = Math.PI * 2;
|
|
50
54
|
const LN2 = Math.log(2);
|
|
51
55
|
|
|
@@ -103,9 +107,12 @@ function makePostureCapsule(radius, totalHeight) {
|
|
|
103
107
|
class PerEntityRuntime {
|
|
104
108
|
/**
|
|
105
109
|
* Co-attached kinematic body. Set by {@link FirstPersonPlayerControllerSystem.link}
|
|
106
|
-
* after asserting it's present.
|
|
107
|
-
*
|
|
108
|
-
*
|
|
110
|
+
* after asserting it's present. Each tick ends by handing the pose the tick resolved
|
|
111
|
+
* ({@link bodyPosition}, {@link bodyRotation}) to {@link PhysicsSystem#setTargetPose}: the
|
|
112
|
+
* physics step that follows moves the body there with the velocity that covers the distance
|
|
113
|
+
* in the step, so what the player meets or carries sees a body moving at the player's speed,
|
|
114
|
+
* and the step ends with the body exactly on the pose. A warp ({@link bodyTeleport}) goes
|
|
115
|
+
* through {@link PhysicsSystem#setPose} instead. Other physics systems (raycasts, contact
|
|
109
116
|
* events) see the player through this body.
|
|
110
117
|
* @type {RigidBody|null}
|
|
111
118
|
*/
|
|
@@ -119,6 +126,25 @@ class PerEntityRuntime {
|
|
|
119
126
|
*/
|
|
120
127
|
collider = null;
|
|
121
128
|
|
|
129
|
+
/**
|
|
130
|
+
* Query filter that leaves out every collider of the player's own body. A query asks its filter
|
|
131
|
+
* with the entity of the body a collider belongs to, so comparing that entity catches the
|
|
132
|
+
* capsule and anything else the body carries — a child trigger, a held item's collider — where
|
|
133
|
+
* comparing the capsule's Collider caught only the capsule, and a second collider on the body
|
|
134
|
+
* pushed the player out of itself. Made at link, so a tick allocates no closure.
|
|
135
|
+
* @type {((entity:number, collider:Collider)=>boolean)|null}
|
|
136
|
+
*/
|
|
137
|
+
notSelf = null;
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Shape-cast filter for the posture headroom probe: {@link notSelf}, and solid — a sensor (a
|
|
141
|
+
* collider or body flagged IsSensor) is no ceiling, as it is no wall to the mover. The shape cast
|
|
142
|
+
* reports sensors, so the probe drops them itself; it asks the physics system for the body behind
|
|
143
|
+
* the id the cast passes. Made at link.
|
|
144
|
+
* @type {((entity:number, collider:Collider, body_id:number)=>boolean)|null}
|
|
145
|
+
*/
|
|
146
|
+
solidNotSelf = null;
|
|
147
|
+
|
|
122
148
|
/**
|
|
123
149
|
* This character's own mover.
|
|
124
150
|
*
|
|
@@ -135,6 +161,43 @@ class PerEntityRuntime {
|
|
|
135
161
|
*/
|
|
136
162
|
mover = null;
|
|
137
163
|
|
|
164
|
+
/**
|
|
165
|
+
* Where this tick puts the body. Read from the body's Transform64 at the top of the tick —
|
|
166
|
+
* the pose the body actually has — then moved by the mover, the flat-ground fallback or an
|
|
167
|
+
* ability, and handed to the body at the end of the tick (see {@link rigidBody}). Everything
|
|
168
|
+
* in the tick that asks where the player is reads it here, not from the transform, which
|
|
169
|
+
* does not move until the physics step: the land / apex bookkeeping, the posture probe, the
|
|
170
|
+
* published pose and the camera's interpolation endpoint.
|
|
171
|
+
* @type {Float64Array}
|
|
172
|
+
*/
|
|
173
|
+
bodyPosition = new Float64Array(3);
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* The body's orientation this tick as `[x, y, z, w]`: the pure yaw of {@link bodyYaw}, made at
|
|
177
|
+
* the top of the tick and handed to the body with {@link bodyPosition}. The mover's and the
|
|
178
|
+
* posture probe's casts use it.
|
|
179
|
+
* @type {Float64Array}
|
|
180
|
+
*/
|
|
181
|
+
bodyRotation = new Float64Array([0, 0, 0, 1]);
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* Where the body was at the top of this tick, as read into {@link bodyPosition}. Compared with
|
|
185
|
+
* the transform before the pose is handed over: a body moved under the tick by someone else —
|
|
186
|
+
* a respawn's `setPose` from a signal handler — is left where they put it, rather than pulled
|
|
187
|
+
* back to a pose resolved from where it used to be.
|
|
188
|
+
* @type {Float64Array}
|
|
189
|
+
*/
|
|
190
|
+
bodyStartPosition = new Float64Array(3);
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* Set by whoever moved {@link bodyPosition} by a warp this tick rather than a motion — the
|
|
194
|
+
* ledge grab's snap onto the hang pose. The tick then ends with {@link PhysicsSystem#setPose}
|
|
195
|
+
* to the pose, so the body gets no velocity from the jump. Cleared when the pose is handed
|
|
196
|
+
* over.
|
|
197
|
+
* @type {boolean}
|
|
198
|
+
*/
|
|
199
|
+
bodyTeleport = false;
|
|
200
|
+
|
|
138
201
|
/**
|
|
139
202
|
* Pre-built capsule colliders, one per posture. Cached at link
|
|
140
203
|
* from `config.body.{height, crouchHeight, proneHeight, radius}`
|
|
@@ -400,6 +463,14 @@ class PerEntityRuntime {
|
|
|
400
463
|
* - update runs L3 (camera composition) at render rate so the eye is never
|
|
401
464
|
* smoother than the screen.
|
|
402
465
|
*
|
|
466
|
+
* The body is moved by the physics step, onto the pose each fixedUpdate
|
|
467
|
+
* resolves ({@link PhysicsSystem#setTargetPose}). The order the EntityManager
|
|
468
|
+
* derives runs this system's fixedUpdate before {@link PhysicsSystem}'s in the
|
|
469
|
+
* same step, so the body is on the tick's pose when the step ends. Run after
|
|
470
|
+
* it instead, nothing lags but the transform: the tick's own state, the
|
|
471
|
+
* published `pose.rootPosition` and the camera all use the pose it resolved,
|
|
472
|
+
* and the next step puts the body there.
|
|
473
|
+
*
|
|
403
474
|
* The system itself integrates a simple flat-floor at y = `config.gravity.magnitude > 0
|
|
404
475
|
* ? state.groundY : -Infinity` for the prototype. A real physics layer should
|
|
405
476
|
* write `state.grounded`/`state.groundNormal` from outside instead; the
|
|
@@ -518,18 +589,23 @@ export class FirstPersonPlayerControllerSystem extends System {
|
|
|
518
589
|
// attached on this entity. The body is the spatial proxy used
|
|
519
590
|
// for sensor raycasts and physics-side observers (other entities
|
|
520
591
|
// raycasting against the player, dynamic bodies colliding with
|
|
521
|
-
// the capsule, etc.). The controller
|
|
522
|
-
//
|
|
523
|
-
//
|
|
524
|
-
//
|
|
525
|
-
//
|
|
592
|
+
// the capsule, etc.). The controller moves it with
|
|
593
|
+
// PhysicsSystem.setTargetPose: each tick resolves a pose, and the
|
|
594
|
+
// physics step moves the body onto it at the velocity that covers
|
|
595
|
+
// the distance, so a dynamic body meets a wall moving at the
|
|
596
|
+
// player's speed. Only a warp (the ledge grab's snap) is a setPose.
|
|
597
|
+
// Without physics there is no step to move it, and the tick writes
|
|
598
|
+
// the Transform itself. If a body is missing the controller could
|
|
599
|
+
// still drive the camera, but the physics integration silently
|
|
600
|
+
// breaks — assert here so the misconfiguration is caught at link time.
|
|
526
601
|
const rigidBody = ecd.getComponent(entity, RigidBody);
|
|
527
602
|
assert.ok(rigidBody !== undefined,
|
|
528
603
|
"FirstPersonPlayerController entity must have a co-attached RigidBody "
|
|
529
604
|
+ "(kinematic capsule). See prototype_first_person_controller.js for setup.");
|
|
530
605
|
assert.equal(rigidBody.kind, BodyKind.KinematicPosition,
|
|
531
606
|
"FirstPersonPlayerController RigidBody must be BodyKind.KinematicPosition; "
|
|
532
|
-
+ "the controller
|
|
607
|
+
+ "the controller moves the body to each tick's pose with PhysicsSystem.setTargetPose, "
|
|
608
|
+
+ "which takes only that kind.");
|
|
533
609
|
// Collider is also required — the KinematicMover casts this shape
|
|
534
610
|
// against the world (recover / sweep / ground probe). Asserted
|
|
535
611
|
// here so a missing collider surfaces at link rather than
|
|
@@ -542,6 +618,12 @@ export class FirstPersonPlayerControllerSystem extends System {
|
|
|
542
618
|
const runtime = new PerEntityRuntime();
|
|
543
619
|
runtime.rigidBody = rigidBody;
|
|
544
620
|
runtime.collider = collider;
|
|
621
|
+
runtime.notSelf = (other_entity) => other_entity !== entity;
|
|
622
|
+
runtime.solidNotSelf = (other_entity, other_collider, body_id) => {
|
|
623
|
+
if (other_entity === entity) return false;
|
|
624
|
+
const body = this.physicsSystem.bodyOf(body_id);
|
|
625
|
+
return body !== undefined && !is_sensor(body, other_collider);
|
|
626
|
+
};
|
|
545
627
|
|
|
546
628
|
// Pre-build one capsule per posture from cfg.body. Eye-height
|
|
547
629
|
// doubles as collider-top by convention here — the prototype's
|
|
@@ -612,6 +694,15 @@ export class FirstPersonPlayerControllerSystem extends System {
|
|
|
612
694
|
runtime.bodyYaw = SCRATCH_V3_A.y;
|
|
613
695
|
runtime.eyePitch = 0;
|
|
614
696
|
|
|
697
|
+
// The body's pose as the controller holds it, until the first tick reads it again.
|
|
698
|
+
runtime.bodyPosition[0] = runtime.bodyStartPosition[0] = bodyTransform.translation_x;
|
|
699
|
+
runtime.bodyPosition[1] = runtime.bodyStartPosition[1] = bodyTransform.translation_y;
|
|
700
|
+
runtime.bodyPosition[2] = runtime.bodyStartPosition[2] = bodyTransform.translation_z;
|
|
701
|
+
runtime.bodyRotation[0] = bodyTransform.rotation_x;
|
|
702
|
+
runtime.bodyRotation[1] = bodyTransform.rotation_y;
|
|
703
|
+
runtime.bodyRotation[2] = bodyTransform.rotation_z;
|
|
704
|
+
runtime.bodyRotation[3] = bodyTransform.rotation_w;
|
|
705
|
+
|
|
615
706
|
// Seed render-rate-look + position-interpolation state to the spawn pose.
|
|
616
707
|
runtime.prevFixedYaw = runtime.bodyYaw;
|
|
617
708
|
runtime.renderPrevPos.set(bodyTransform.translation_x, bodyTransform.translation_y, bodyTransform.translation_z);
|
|
@@ -663,9 +754,41 @@ export class FirstPersonPlayerControllerSystem extends System {
|
|
|
663
754
|
controller.eyeEntity = -1;
|
|
664
755
|
}
|
|
665
756
|
|
|
757
|
+
const runtime = this.runtime.get(entity);
|
|
758
|
+
if (runtime !== undefined) {
|
|
759
|
+
this._releaseBody(runtime, bodyTransform);
|
|
760
|
+
}
|
|
761
|
+
|
|
666
762
|
this.runtime.delete(entity);
|
|
667
763
|
}
|
|
668
764
|
|
|
765
|
+
/**
|
|
766
|
+
* Leave the body standing where the controller last put it. The velocities a target pose
|
|
767
|
+
* derives stay on the body after its step, so a body the controller stops driving would walk
|
|
768
|
+
* on at its last speed. When the last pose is still in flight - handed over, its step not run
|
|
769
|
+
* yet, as when the controller is removed from inside its own tick - the body is put there now,
|
|
770
|
+
* so the pending target derives no velocity either.
|
|
771
|
+
*
|
|
772
|
+
* @private
|
|
773
|
+
* @param {PerEntityRuntime} runtime
|
|
774
|
+
* @param {Transform64} bodyTransform
|
|
775
|
+
*/
|
|
776
|
+
_releaseBody(runtime, bodyTransform) {
|
|
777
|
+
const physics = this.physicsSystem;
|
|
778
|
+
const body = runtime.rigidBody;
|
|
779
|
+
if (physics === null || body === null || body === undefined) return;
|
|
780
|
+
|
|
781
|
+
const p = runtime.bodyPosition;
|
|
782
|
+
if (p[0] !== bodyTransform.translation_x
|
|
783
|
+
|| p[1] !== bodyTransform.translation_y
|
|
784
|
+
|| p[2] !== bodyTransform.translation_z) {
|
|
785
|
+
physics.setPose(body, p, runtime.bodyRotation);
|
|
786
|
+
}
|
|
787
|
+
|
|
788
|
+
physics.setLinearVelocity(body, ZERO_VELOCITY);
|
|
789
|
+
physics.setAngularVelocity(body, ZERO_VELOCITY);
|
|
790
|
+
}
|
|
791
|
+
|
|
669
792
|
/**
|
|
670
793
|
* Look up the per-entity runtime for an entity that has this
|
|
671
794
|
* controller. Used by cross-system code (sensors system, future
|
|
@@ -743,14 +866,23 @@ export class FirstPersonPlayerControllerSystem extends System {
|
|
|
743
866
|
runtime.yawRateRadPerSec = yawStep / Math.max(dt, 1e-4);
|
|
744
867
|
runtime.prevFixedYaw = runtime.bodyYaw;
|
|
745
868
|
|
|
746
|
-
//
|
|
747
|
-
//
|
|
748
|
-
//
|
|
869
|
+
// The tick starts from the pose the body has: the last tick's pose, landed by the physics
|
|
870
|
+
// step since (or where a teleport put it). Everything below moves runtime.bodyPosition, and
|
|
871
|
+
// the body gets it at the end of the tick (_commitBodyPose).
|
|
872
|
+
const bodyPosition = runtime.bodyPosition;
|
|
873
|
+
bodyPosition[0] = runtime.bodyStartPosition[0] = bodyTransform.translation_x;
|
|
874
|
+
bodyPosition[1] = runtime.bodyStartPosition[1] = bodyTransform.translation_y;
|
|
875
|
+
bodyPosition[2] = runtime.bodyStartPosition[2] = bodyTransform.translation_z;
|
|
876
|
+
|
|
877
|
+
// Body yaw (pure yaw, no pitch on body) — the collision sweep uses it, and the body turns to
|
|
878
|
+
// it with the move. The camera uses runtime.bodyYaw directly, which _consumeLook keeps
|
|
879
|
+
// current at render rate.
|
|
749
880
|
SCRATCH_Q_EULER.fromAxisAngle(Vector3.up, runtime.bodyYaw);
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
881
|
+
const bodyRotation = runtime.bodyRotation;
|
|
882
|
+
bodyRotation[0] = SCRATCH_Q_EULER.x;
|
|
883
|
+
bodyRotation[1] = SCRATCH_Q_EULER.y;
|
|
884
|
+
bodyRotation[2] = SCRATCH_Q_EULER.z;
|
|
885
|
+
bodyRotation[3] = SCRATCH_Q_EULER.w;
|
|
754
886
|
|
|
755
887
|
// -- Shared flags. Computed BEFORE the ability tick so abilities
|
|
756
888
|
// can read them. `isCrouchActive` is deliberately computed
|
|
@@ -790,7 +922,7 @@ export class FirstPersonPlayerControllerSystem extends System {
|
|
|
790
922
|
|
|
791
923
|
// Now resolve crouch (updates prevCrouchHeld) — used by base and L2.
|
|
792
924
|
// Headroom-aware: force-keeps the player crouched under an overhang.
|
|
793
|
-
const isCrouchActive = this._resolveCrouchHeld(controller, runtime
|
|
925
|
+
const isCrouchActive = this._resolveCrouchHeld(controller, runtime);
|
|
794
926
|
|
|
795
927
|
if (runBaseLocomotion) {
|
|
796
928
|
this._runBaseLocomotion(
|
|
@@ -907,31 +1039,11 @@ export class FirstPersonPlayerControllerSystem extends System {
|
|
|
907
1039
|
// Footstep on phase wraparound past 0 (R) or past 0.5 (L). Same
|
|
908
1040
|
// posture gate as stride advance — feet must be striking.
|
|
909
1041
|
if (feetStriking && state.grounded && horizSpeed > cfg.bob.minStepSpeed) {
|
|
910
|
-
const fireFootstep = () => {
|
|
911
|
-
state.stepCount++;
|
|
912
|
-
const side = runtime.nextFootSide;
|
|
913
|
-
runtime.nextFootSide = side === "R" ? "L" : "R";
|
|
914
|
-
// The foot that just fired is now the one bearing weight
|
|
915
|
-
// through the upcoming half-stride. Drives lateral-bob sign.
|
|
916
|
-
runtime.standingFoot = side;
|
|
917
|
-
sig.onFootStep.send1({ side, speed: horizSpeed, surfaceTag: state.surfaceTag });
|
|
918
|
-
// Kick the vertical impact spring DOWNWARD. The kick magnitude
|
|
919
|
-
// is the per-step desired peak dip × impactKickMultiplier; the
|
|
920
|
-
// multiplier is empirical (depends on impact spring params) so
|
|
921
|
-
// that "verticalAmpAtWalk" still corresponds approximately to
|
|
922
|
-
// the visible peak dip depth. Scaled by bobIntensity so a
|
|
923
|
-
// mid-deceleration footstep doesn't deliver a full-strength
|
|
924
|
-
// impulse.
|
|
925
|
-
const massBoost = (cfg.body.mass - 80) * cfg.bob.ampMassScale;
|
|
926
|
-
const ampVMult = 1 + (cfg.bob.backwardVerticalAmpFactor - 1) * runtime.backwardness;
|
|
927
|
-
const peakDip = (cfg.bob.verticalAmpAtWalk + massBoost) * runtime.bobIntensitySpring.value * ampVMult;
|
|
928
|
-
runtime.verticalImpactSpring.kick(-peakDip * cfg.bob.impactKickMultiplier);
|
|
929
|
-
};
|
|
930
1042
|
if (phaseCrossed(runtime.prevStridePhase, state.stridePhase, 0)) {
|
|
931
|
-
|
|
1043
|
+
this._fireFootstep(controller, runtime, horizSpeed);
|
|
932
1044
|
}
|
|
933
1045
|
if (phaseCrossed(runtime.prevStridePhase, state.stridePhase, 0.5)) {
|
|
934
|
-
|
|
1046
|
+
this._fireFootstep(controller, runtime, horizSpeed);
|
|
935
1047
|
}
|
|
936
1048
|
}
|
|
937
1049
|
|
|
@@ -1027,15 +1139,17 @@ export class FirstPersonPlayerControllerSystem extends System {
|
|
|
1027
1139
|
// Target is 0; under-damped (cfg zeta < 1) so it rings.
|
|
1028
1140
|
runtime.landSpring.stepTo(0, cfg.landing.recovery.spring.halfLife, cfg.landing.recovery.spring.zeta, dt);
|
|
1029
1141
|
|
|
1142
|
+
// -- L2.h.0: Keep a teleport made under the tick ----------------
|
|
1143
|
+
// Every signal of the tick has been sent. A listener that moved the body - a respawn's
|
|
1144
|
+
// setPose on a hard landing - left the transform somewhere other than where the tick
|
|
1145
|
+
// started; the body stays there, and the camera jumps with it.
|
|
1146
|
+
this._adoptExternalMove(runtime, bodyTransform);
|
|
1147
|
+
|
|
1030
1148
|
// -- L2.h: Publish pose channels --------------------------------
|
|
1031
|
-
this._publishPose(controller, runtime
|
|
1149
|
+
this._publishPose(controller, runtime);
|
|
1032
1150
|
|
|
1033
|
-
// -- L2.h.1:
|
|
1034
|
-
|
|
1035
|
-
// component, and a Transform64 announces nothing on its own. One event here, at the point
|
|
1036
|
-
// where the pose is final, covers every writer in the tick and covers them once - which is
|
|
1037
|
-
// what wakes the mesh placement, the audio emitter and anything else that follows a player.
|
|
1038
|
-
t64_announce_change(ecd, entity);
|
|
1151
|
+
// -- L2.h.1: Hand the pose to the body --------------------------
|
|
1152
|
+
this._commitBodyPose(ecd, entity, runtime, bodyTransform);
|
|
1039
1153
|
|
|
1040
1154
|
// -- L2.i: Sync collider shape to posture -----------------------
|
|
1041
1155
|
// All posture-writers (base locomotion + any active ability)
|
|
@@ -1048,11 +1162,123 @@ export class FirstPersonPlayerControllerSystem extends System {
|
|
|
1048
1162
|
}
|
|
1049
1163
|
|
|
1050
1164
|
/**
|
|
1165
|
+
* One footfall: count it, alternate the foot, send `onFootStep` and kick the vertical impact
|
|
1166
|
+
* spring. A method rather than a closure made in the tick, which cost an allocation a tick
|
|
1167
|
+
* while walking.
|
|
1168
|
+
*
|
|
1051
1169
|
* @private
|
|
1052
1170
|
* @param {FirstPersonPlayerController} controller
|
|
1053
1171
|
* @param {PerEntityRuntime} runtime
|
|
1054
|
-
* @
|
|
1172
|
+
* @param {number} horizSpeed this tick's horizontal speed, m/s
|
|
1173
|
+
*/
|
|
1174
|
+
_fireFootstep(controller, runtime, horizSpeed) {
|
|
1175
|
+
const cfg = controller.config;
|
|
1176
|
+
const state = controller.state;
|
|
1177
|
+
|
|
1178
|
+
state.stepCount++;
|
|
1179
|
+
const side = runtime.nextFootSide;
|
|
1180
|
+
runtime.nextFootSide = side === "R" ? "L" : "R";
|
|
1181
|
+
// The foot that just fired is now the one bearing weight
|
|
1182
|
+
// through the upcoming half-stride. Drives lateral-bob sign.
|
|
1183
|
+
runtime.standingFoot = side;
|
|
1184
|
+
controller.signals.onFootStep.send1({ side, speed: horizSpeed, surfaceTag: state.surfaceTag });
|
|
1185
|
+
// Kick the vertical impact spring DOWNWARD. The kick magnitude
|
|
1186
|
+
// is the per-step desired peak dip × impactKickMultiplier; the
|
|
1187
|
+
// multiplier is empirical (depends on impact spring params) so
|
|
1188
|
+
// that "verticalAmpAtWalk" still corresponds approximately to
|
|
1189
|
+
// the visible peak dip depth. Scaled by bobIntensity so a
|
|
1190
|
+
// mid-deceleration footstep doesn't deliver a full-strength
|
|
1191
|
+
// impulse.
|
|
1192
|
+
const massBoost = (cfg.body.mass - 80) * cfg.bob.ampMassScale;
|
|
1193
|
+
const ampVMult = 1 + (cfg.bob.backwardVerticalAmpFactor - 1) * runtime.backwardness;
|
|
1194
|
+
const peakDip = (cfg.bob.verticalAmpAtWalk + massBoost) * runtime.bobIntensitySpring.value * ampVMult;
|
|
1195
|
+
runtime.verticalImpactSpring.kick(-peakDip * cfg.bob.impactKickMultiplier);
|
|
1196
|
+
}
|
|
1197
|
+
|
|
1198
|
+
/**
|
|
1199
|
+
* Keep a move someone else made to the body during this tick. The tick resolved its pose from
|
|
1200
|
+
* where the body was when it started ({@link PerEntityRuntime#bodyStartPosition}); a transform
|
|
1201
|
+
* that is no longer there was moved under the tick - a signal listener's `setPose`, a respawn
|
|
1202
|
+
* on a hard landing - and handing the resolved pose over would pull the body back from where
|
|
1203
|
+
* it was put, at whatever velocity covers that distance in one step. The tick's pose becomes
|
|
1204
|
+
* the transform's instead, and the camera jumps to it.
|
|
1205
|
+
*
|
|
1206
|
+
* @private
|
|
1207
|
+
* @param {PerEntityRuntime} runtime
|
|
1208
|
+
* @param {Transform64} bodyTransform
|
|
1055
1209
|
*/
|
|
1210
|
+
_adoptExternalMove(runtime, bodyTransform) {
|
|
1211
|
+
const start = runtime.bodyStartPosition;
|
|
1212
|
+
const x = bodyTransform.translation_x;
|
|
1213
|
+
const y = bodyTransform.translation_y;
|
|
1214
|
+
const z = bodyTransform.translation_z;
|
|
1215
|
+
|
|
1216
|
+
if (x === start[0] && y === start[1] && z === start[2]) {
|
|
1217
|
+
return;
|
|
1218
|
+
}
|
|
1219
|
+
|
|
1220
|
+
const p = runtime.bodyPosition;
|
|
1221
|
+
p[0] = x;
|
|
1222
|
+
p[1] = y;
|
|
1223
|
+
p[2] = z;
|
|
1224
|
+
|
|
1225
|
+
// the body is where it was put, so there is nothing left for a warp of the tick's own to do
|
|
1226
|
+
runtime.bodyTeleport = false;
|
|
1227
|
+
runtime.renderSnap = true;
|
|
1228
|
+
}
|
|
1229
|
+
|
|
1230
|
+
/**
|
|
1231
|
+
* Hand the pose this tick resolved ({@link PerEntityRuntime#bodyPosition},
|
|
1232
|
+
* {@link PerEntityRuntime#bodyRotation}) to the body.
|
|
1233
|
+
*
|
|
1234
|
+
* With physics, it is a target ({@link PhysicsSystem#setTargetPose}): the next step sets the
|
|
1235
|
+
* body's velocities to cover the distance in the step and ends with the body exactly on the
|
|
1236
|
+
* pose, so what the player meets or carries sees a body moving at the player's speed, and the
|
|
1237
|
+
* step announces the move. Every tick sets one, standing still included - the velocities a
|
|
1238
|
+
* target derives stay on the body, and without a new target the last move's would carry the
|
|
1239
|
+
* player on. A warp ({@link PerEntityRuntime#bodyTeleport}) puts the body on the pose first with
|
|
1240
|
+
* {@link PhysicsSystem#setPose}, so the target derives no velocity from the jump.
|
|
1241
|
+
*
|
|
1242
|
+
* Without physics no step will move the body, so the tick writes the transform and announces
|
|
1243
|
+
* it itself: a Transform64 announces nothing on its own, and the announcement is what wakes the
|
|
1244
|
+
* mesh placement, the audio emitter and anything else that follows a player.
|
|
1245
|
+
*
|
|
1246
|
+
* @private
|
|
1247
|
+
* @param {import("../../ecs/EntityComponentDataset.js").EntityComponentDataset} ecd
|
|
1248
|
+
* @param {number} entity
|
|
1249
|
+
* @param {PerEntityRuntime} runtime
|
|
1250
|
+
* @param {Transform64} bodyTransform
|
|
1251
|
+
*/
|
|
1252
|
+
_commitBodyPose(ecd, entity, runtime, bodyTransform) {
|
|
1253
|
+
const p = runtime.bodyPosition;
|
|
1254
|
+
const q = runtime.bodyRotation;
|
|
1255
|
+
const teleport = runtime.bodyTeleport;
|
|
1256
|
+
runtime.bodyTeleport = false;
|
|
1257
|
+
|
|
1258
|
+
const physics = this.physicsSystem;
|
|
1259
|
+
|
|
1260
|
+
if (physics === null) {
|
|
1261
|
+
bodyTransform.setTranslation(p[0], p[1], p[2]);
|
|
1262
|
+
bodyTransform.setRotation(q[0], q[1], q[2], q[3]);
|
|
1263
|
+
bodyTransform.updateMatrix();
|
|
1264
|
+
t64_announce_change(ecd, entity);
|
|
1265
|
+
return;
|
|
1266
|
+
}
|
|
1267
|
+
|
|
1268
|
+
const body = runtime.rigidBody;
|
|
1269
|
+
|
|
1270
|
+
// a hold on the pose the body already has is no warp, and needs none of setPose's work
|
|
1271
|
+
if (teleport && (
|
|
1272
|
+
p[0] !== bodyTransform.translation_x
|
|
1273
|
+
|| p[1] !== bodyTransform.translation_y
|
|
1274
|
+
|| p[2] !== bodyTransform.translation_z
|
|
1275
|
+
)) {
|
|
1276
|
+
physics.setPose(body, p, q);
|
|
1277
|
+
}
|
|
1278
|
+
|
|
1279
|
+
physics.setTargetPose(body, p, q);
|
|
1280
|
+
}
|
|
1281
|
+
|
|
1056
1282
|
/**
|
|
1057
1283
|
* Swap {@link Collider.shape} to the pre-built capsule that matches
|
|
1058
1284
|
* the player's current posture. Cheap — just a reference swap when
|
|
@@ -1083,7 +1309,7 @@ export class FirstPersonPlayerControllerSystem extends System {
|
|
|
1083
1309
|
runtime.lastPosture = posture;
|
|
1084
1310
|
}
|
|
1085
1311
|
|
|
1086
|
-
_resolveCrouchHeld(controller, runtime
|
|
1312
|
+
_resolveCrouchHeld(controller, runtime) {
|
|
1087
1313
|
const cfg = controller.config;
|
|
1088
1314
|
const intent = controller.intent;
|
|
1089
1315
|
const state = controller.state;
|
|
@@ -1118,7 +1344,7 @@ export class FirstPersonPlayerControllerSystem extends System {
|
|
|
1118
1344
|
|| runtime.lastPosture === FirstPersonPosture.Prone;
|
|
1119
1345
|
if (!wantsCrouch && alreadyLow) {
|
|
1120
1346
|
const growDelta = runtime.standTop - runtime.crouchTop;
|
|
1121
|
-
if (!this._hasHeadroomToGrow(runtime,
|
|
1347
|
+
if (!this._hasHeadroomToGrow(runtime, runtime.colliderShapeCrouch, growDelta)) {
|
|
1122
1348
|
state.crouchBlocked = true;
|
|
1123
1349
|
return true;
|
|
1124
1350
|
}
|
|
@@ -1139,22 +1365,22 @@ export class FirstPersonPlayerControllerSystem extends System {
|
|
|
1139
1365
|
* overlap would false-positive on a wall *beside* the player. The
|
|
1140
1366
|
* up-cast sweeps parallel to (and, per the mover's skin clearance,
|
|
1141
1367
|
* clear of) lateral walls so they aren't hit; the floor is below
|
|
1142
|
-
* the rising probe; the player's own body
|
|
1143
|
-
*
|
|
1368
|
+
* the rising probe; the player's own body, and sensors, are filtered
|
|
1369
|
+
* out ({@link PerEntityRuntime#solidNotSelf}). Only genuine overhead
|
|
1370
|
+
* geometry blocks the grow. Relies on the player
|
|
1144
1371
|
* resting at `floor+skin` (the mover's stick-to-ground), so the
|
|
1145
1372
|
* probe's bottom starts clear of the floor.
|
|
1146
1373
|
*
|
|
1147
1374
|
* @private
|
|
1148
1375
|
*/
|
|
1149
|
-
_hasHeadroomToGrow(runtime,
|
|
1376
|
+
_hasHeadroomToGrow(runtime, fromShape, growDelta) {
|
|
1150
1377
|
if (this.physicsSystem === null || growDelta <= 1e-4) return true;
|
|
1151
|
-
const ownCollider = runtime.collider;
|
|
1152
|
-
const filter = (_e, c) => c !== ownCollider;
|
|
1153
1378
|
const ray = this._postureRay;
|
|
1154
|
-
|
|
1379
|
+
const p = runtime.bodyPosition;
|
|
1380
|
+
ray.setOrigin(p[0], p[1], p[2]);
|
|
1155
1381
|
ray.setDirection(0, 1, 0);
|
|
1156
1382
|
ray.tMax = growDelta;
|
|
1157
|
-
return !this.physicsSystem.shapeCast(ray, fromShape,
|
|
1383
|
+
return !this.physicsSystem.shapeCast(ray, fromShape, runtime.bodyRotation, this._postureHit, runtime.solidNotSelf);
|
|
1158
1384
|
}
|
|
1159
1385
|
|
|
1160
1386
|
/**
|
|
@@ -1166,10 +1392,9 @@ export class FirstPersonPlayerControllerSystem extends System {
|
|
|
1166
1392
|
* @private
|
|
1167
1393
|
* @param {FirstPersonPlayerController} controller
|
|
1168
1394
|
* @param {PerEntityRuntime} runtime
|
|
1169
|
-
* @param {Transform64} bodyTransform
|
|
1170
1395
|
* @param {number} dt
|
|
1171
1396
|
*/
|
|
1172
|
-
_advanceJumpFsm(controller, runtime,
|
|
1397
|
+
_advanceJumpFsm(controller, runtime, dt) {
|
|
1173
1398
|
const cfg = controller.config;
|
|
1174
1399
|
const intent = controller.intent;
|
|
1175
1400
|
const state = controller.state;
|
|
@@ -1230,7 +1455,7 @@ export class FirstPersonPlayerControllerSystem extends System {
|
|
|
1230
1455
|
runtime.velocityY = runtime.jumpInitialVy * masteryMul;
|
|
1231
1456
|
runtime.midJump = true;
|
|
1232
1457
|
runtime.apexFired = false;
|
|
1233
|
-
runtime.peakAltitude =
|
|
1458
|
+
runtime.peakAltitude = runtime.bodyPosition[1];
|
|
1234
1459
|
state.inJumpAnticipation = false;
|
|
1235
1460
|
state.isVariableJumpCut = false;
|
|
1236
1461
|
state.isAscending = true;
|
|
@@ -1257,17 +1482,19 @@ export class FirstPersonPlayerControllerSystem extends System {
|
|
|
1257
1482
|
* a physics layer is present; otherwise a lightweight flat-ground
|
|
1258
1483
|
* integrator for headless / unit-test scenes with no collidable
|
|
1259
1484
|
* geometry. Land / leave-ground events flow identically from either.
|
|
1485
|
+
* The move is resolved into {@link PerEntityRuntime#bodyPosition}.
|
|
1260
1486
|
*
|
|
1261
1487
|
* @private
|
|
1262
1488
|
* @param {FirstPersonPlayerController} controller
|
|
1263
1489
|
* @param {PerEntityRuntime} runtime
|
|
1264
|
-
* @param {Transform64} bodyTransform
|
|
1490
|
+
* @param {Transform64} bodyTransform the body's transform, holding the pose the tick started
|
|
1491
|
+
* from; not written
|
|
1265
1492
|
* @param {number} dt
|
|
1266
1493
|
*/
|
|
1267
1494
|
_integrateVerticalAndResolveGround(controller, runtime, bodyTransform, dt) {
|
|
1268
1495
|
this._applyGravity(controller, runtime, dt);
|
|
1269
1496
|
this._resolveMotion(controller, runtime, bodyTransform, dt);
|
|
1270
|
-
this._detectJumpApex(controller, runtime
|
|
1497
|
+
this._detectJumpApex(controller, runtime);
|
|
1271
1498
|
}
|
|
1272
1499
|
|
|
1273
1500
|
/**
|
|
@@ -1280,13 +1507,17 @@ export class FirstPersonPlayerControllerSystem extends System {
|
|
|
1280
1507
|
* and then call this directly — so motion routes through one motor for
|
|
1281
1508
|
* everyone (sweep-and-slide, anti-tunnel, land/leave events) rather than
|
|
1282
1509
|
* a bespoke `position._add` + hand-rolled ground-catch.
|
|
1510
|
+
*
|
|
1511
|
+
* The move starts from {@link PerEntityRuntime#bodyPosition} and is resolved into it; the
|
|
1512
|
+
* body reaches it at the end of the tick. `bodyTransform` holds the pose the tick started from
|
|
1513
|
+
* and is not written.
|
|
1283
1514
|
* @private
|
|
1284
1515
|
*/
|
|
1285
1516
|
_resolveMotion(controller, runtime, bodyTransform, dt) {
|
|
1286
1517
|
if (this.physicsSystem !== null) {
|
|
1287
|
-
this._moveViaMover(controller, runtime,
|
|
1518
|
+
this._moveViaMover(controller, runtime, dt);
|
|
1288
1519
|
} else {
|
|
1289
|
-
this._moveFlatGround(controller, runtime,
|
|
1520
|
+
this._moveFlatGround(controller, runtime, dt);
|
|
1290
1521
|
}
|
|
1291
1522
|
}
|
|
1292
1523
|
|
|
@@ -1315,12 +1546,12 @@ export class FirstPersonPlayerControllerSystem extends System {
|
|
|
1315
1546
|
* the result back to controller state and land / leave events.
|
|
1316
1547
|
* @private
|
|
1317
1548
|
*/
|
|
1318
|
-
_moveViaMover(controller, runtime,
|
|
1549
|
+
_moveViaMover(controller, runtime, dt) {
|
|
1319
1550
|
const state = controller.state;
|
|
1320
1551
|
|
|
1321
1552
|
// per character, not per system - see the note on PerEntityRuntime#mover
|
|
1322
1553
|
if (runtime.mover === null) {
|
|
1323
|
-
runtime.mover = new KinematicMover(this.physicsSystem
|
|
1554
|
+
runtime.mover = new KinematicMover(this.physicsSystem);
|
|
1324
1555
|
}
|
|
1325
1556
|
|
|
1326
1557
|
// Fall speed captured BEFORE the move — the mover clips velocityY
|
|
@@ -1330,14 +1561,13 @@ export class FirstPersonPlayerControllerSystem extends System {
|
|
|
1330
1561
|
const v = this._moverVelocity;
|
|
1331
1562
|
v.set(runtime.velocityX, runtime.velocityY, runtime.velocityZ);
|
|
1332
1563
|
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1564
|
+
// From where the body is this tick (the pose it started from, or where an earlier move in
|
|
1565
|
+
// the same tick left it) to where the move ends; the body gets there in the physics step.
|
|
1336
1566
|
const result = runtime.mover.move(
|
|
1337
|
-
|
|
1338
|
-
|
|
1567
|
+
runtime.bodyPosition,
|
|
1568
|
+
runtime.bodyRotation,
|
|
1339
1569
|
runtime.collider.shape,
|
|
1340
|
-
v, dt,
|
|
1570
|
+
v, dt, runtime.notSelf,
|
|
1341
1571
|
);
|
|
1342
1572
|
|
|
1343
1573
|
// Read back corrected horizontal velocity. Vertical follows the
|
|
@@ -1357,7 +1587,7 @@ export class FirstPersonPlayerControllerSystem extends System {
|
|
|
1357
1587
|
state.airborneTime = 0;
|
|
1358
1588
|
state.timeSinceGrounded = 0;
|
|
1359
1589
|
} else {
|
|
1360
|
-
if (wasGrounded) this._onLeaveGround(controller, runtime
|
|
1590
|
+
if (wasGrounded) this._onLeaveGround(controller, runtime);
|
|
1361
1591
|
state.grounded = false;
|
|
1362
1592
|
state.verticalSpeed = runtime.velocityY;
|
|
1363
1593
|
state.airborneTime += dt;
|
|
@@ -1375,28 +1605,24 @@ export class FirstPersonPlayerControllerSystem extends System {
|
|
|
1375
1605
|
* `state.grounded`; we only advance timers.
|
|
1376
1606
|
* @private
|
|
1377
1607
|
*/
|
|
1378
|
-
_moveFlatGround(controller, runtime,
|
|
1608
|
+
_moveFlatGround(controller, runtime, dt) {
|
|
1379
1609
|
const state = controller.state;
|
|
1380
1610
|
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
bodyTransform.translation_z + runtime.velocityZ * dt
|
|
1386
|
-
);
|
|
1611
|
+
const p = runtime.bodyPosition;
|
|
1612
|
+
p[0] += runtime.velocityX * dt;
|
|
1613
|
+
p[1] += runtime.velocityY * dt;
|
|
1614
|
+
p[2] += runtime.velocityZ * dt;
|
|
1387
1615
|
|
|
1388
1616
|
if (this.useBuiltInFlatGround || this.groundResolver !== null) {
|
|
1389
1617
|
// Effective ground = max(built-in flat ground, resolver).
|
|
1390
1618
|
let testY = this.useBuiltInFlatGround ? this.groundY : Number.NEGATIVE_INFINITY;
|
|
1391
1619
|
if (this.groundResolver !== null) {
|
|
1392
|
-
const resolved = this.groundResolver(
|
|
1393
|
-
bodyTransform.translation_x, bodyTransform.translation_y, bodyTransform.translation_z,
|
|
1394
|
-
);
|
|
1620
|
+
const resolved = this.groundResolver(p[0], p[1], p[2]);
|
|
1395
1621
|
if (resolved !== null && resolved > testY) testY = resolved;
|
|
1396
1622
|
}
|
|
1397
1623
|
const haveGround = testY !== Number.NEGATIVE_INFINITY;
|
|
1398
|
-
if (haveGround &&
|
|
1399
|
-
|
|
1624
|
+
if (haveGround && p[1] <= testY) {
|
|
1625
|
+
p[1] = testY;
|
|
1400
1626
|
if (!state.grounded) this._onLand(controller, runtime, -runtime.velocityY);
|
|
1401
1627
|
state.grounded = true;
|
|
1402
1628
|
state.groundNormal.set(0, 1, 0);
|
|
@@ -1405,7 +1631,7 @@ export class FirstPersonPlayerControllerSystem extends System {
|
|
|
1405
1631
|
state.airborneTime = 0;
|
|
1406
1632
|
state.timeSinceGrounded = 0;
|
|
1407
1633
|
} else {
|
|
1408
|
-
if (state.grounded) this._onLeaveGround(controller, runtime
|
|
1634
|
+
if (state.grounded) this._onLeaveGround(controller, runtime);
|
|
1409
1635
|
state.grounded = false;
|
|
1410
1636
|
state.verticalSpeed = runtime.velocityY;
|
|
1411
1637
|
state.airborneTime += dt;
|
|
@@ -1460,20 +1686,21 @@ export class FirstPersonPlayerControllerSystem extends System {
|
|
|
1460
1686
|
* Shared by both move paths.
|
|
1461
1687
|
* @private
|
|
1462
1688
|
*/
|
|
1463
|
-
_onLeaveGround(controller, runtime
|
|
1689
|
+
_onLeaveGround(controller, runtime) {
|
|
1464
1690
|
controller.signals.onLeaveGround.send1({ reason: runtime.midJump ? "jump" : "fall" });
|
|
1465
1691
|
runtime.takeoffVy = runtime.velocityY;
|
|
1466
|
-
runtime.peakAltitude =
|
|
1692
|
+
runtime.peakAltitude = runtime.bodyPosition[1];
|
|
1467
1693
|
}
|
|
1468
1694
|
|
|
1469
1695
|
/**
|
|
1470
1696
|
* Fire `onJumpApex` once, when an in-progress jump stops rising.
|
|
1471
1697
|
* @private
|
|
1472
1698
|
*/
|
|
1473
|
-
_detectJumpApex(controller, runtime
|
|
1699
|
+
_detectJumpApex(controller, runtime) {
|
|
1474
1700
|
if (runtime.midJump && !runtime.apexFired) {
|
|
1475
|
-
|
|
1476
|
-
|
|
1701
|
+
const y = runtime.bodyPosition[1];
|
|
1702
|
+
if (y > runtime.peakAltitude) {
|
|
1703
|
+
runtime.peakAltitude = y;
|
|
1477
1704
|
} else if (runtime.velocityY <= 0) {
|
|
1478
1705
|
controller.signals.onJumpApex.send0();
|
|
1479
1706
|
runtime.apexFired = true;
|
|
@@ -1605,7 +1832,7 @@ export class FirstPersonPlayerControllerSystem extends System {
|
|
|
1605
1832
|
}
|
|
1606
1833
|
|
|
1607
1834
|
// -- L1.e/f/g/h: jump FSM + vertical integration --------------
|
|
1608
|
-
this._advanceJumpFsm(controller, runtime,
|
|
1835
|
+
this._advanceJumpFsm(controller, runtime, dt);
|
|
1609
1836
|
this._integrateVerticalAndResolveGround(controller, runtime, bodyTransform, dt);
|
|
1610
1837
|
|
|
1611
1838
|
// -- Publish posture for L2 consumers (eye height, gait gating).
|
|
@@ -1626,7 +1853,7 @@ export class FirstPersonPlayerControllerSystem extends System {
|
|
|
1626
1853
|
if (posture === FirstPersonPosture.Crouch
|
|
1627
1854
|
&& runtime.lastPosture === FirstPersonPosture.Prone) {
|
|
1628
1855
|
const proneGrow = runtime.crouchTop - runtime.proneTop;
|
|
1629
|
-
if (!this._hasHeadroomToGrow(runtime,
|
|
1856
|
+
if (!this._hasHeadroomToGrow(runtime, runtime.colliderShapeProne, proneGrow)) {
|
|
1630
1857
|
posture = FirstPersonPosture.Prone;
|
|
1631
1858
|
}
|
|
1632
1859
|
}
|
|
@@ -1716,17 +1943,21 @@ export class FirstPersonPlayerControllerSystem extends System {
|
|
|
1716
1943
|
* Read-only with respect to controller state — this is purely a publish
|
|
1717
1944
|
* step.
|
|
1718
1945
|
*
|
|
1946
|
+
* The root position is the pose this tick resolved ({@link PerEntityRuntime#bodyPosition}),
|
|
1947
|
+
* which the body reaches in the physics step: published now, it is where the body is once
|
|
1948
|
+
* the step has run, whichever of the two systems runs first.
|
|
1949
|
+
*
|
|
1719
1950
|
* @private
|
|
1720
1951
|
* @param {FirstPersonPlayerController} controller
|
|
1721
1952
|
* @param {PerEntityRuntime} runtime
|
|
1722
|
-
* @param {Transform64} bodyTransform
|
|
1723
1953
|
*/
|
|
1724
|
-
_publishPose(controller, runtime
|
|
1954
|
+
_publishPose(controller, runtime) {
|
|
1725
1955
|
const cfg = controller.config;
|
|
1726
1956
|
const state = controller.state;
|
|
1727
1957
|
const pose = controller.pose;
|
|
1728
1958
|
|
|
1729
|
-
|
|
1959
|
+
const p = runtime.bodyPosition;
|
|
1960
|
+
pose.rootPosition.set(p[0], p[1], p[2]);
|
|
1730
1961
|
pose.rootYawRad = runtime.bodyYaw;
|
|
1731
1962
|
pose.headYawRad = runtime.bodyYaw;
|
|
1732
1963
|
pose.headPitchRad = runtime.eyePitch;
|
|
@@ -1768,8 +1999,8 @@ export class FirstPersonPlayerControllerSystem extends System {
|
|
|
1768
1999
|
|
|
1769
2000
|
pose.aimPitch = runtime.eyePitch;
|
|
1770
2001
|
|
|
1771
|
-
this._assertTickInvariants(controller, runtime
|
|
1772
|
-
this._snapshotRenderPose(runtime
|
|
2002
|
+
this._assertTickInvariants(controller, runtime);
|
|
2003
|
+
this._snapshotRenderPose(runtime);
|
|
1773
2004
|
}
|
|
1774
2005
|
|
|
1775
2006
|
/**
|
|
@@ -1779,18 +2010,20 @@ export class FirstPersonPlayerControllerSystem extends System {
|
|
|
1779
2010
|
* position is smooth at any refresh rate. (Yaw/pitch aren't snapshotted —
|
|
1780
2011
|
* they're render-rate.) On a teleport (`renderSnap`), prev and cur collapse
|
|
1781
2012
|
* to the new position so the camera jumps rather than gliding across it.
|
|
2013
|
+
* The position is the pose this tick resolved, not the transform, which
|
|
2014
|
+
* reaches it only in the physics step.
|
|
1782
2015
|
* @private
|
|
1783
2016
|
*/
|
|
1784
|
-
_snapshotRenderPose(runtime
|
|
1785
|
-
const p =
|
|
2017
|
+
_snapshotRenderPose(runtime) {
|
|
2018
|
+
const p = runtime.bodyPosition;
|
|
1786
2019
|
if (runtime.renderSnap) {
|
|
1787
2020
|
runtime.renderSnap = false;
|
|
1788
|
-
runtime.renderPrevPos.set(p
|
|
1789
|
-
runtime.renderCurPos.set(p
|
|
2021
|
+
runtime.renderPrevPos.set(p[0], p[1], p[2]);
|
|
2022
|
+
runtime.renderCurPos.set(p[0], p[1], p[2]);
|
|
1790
2023
|
return;
|
|
1791
2024
|
}
|
|
1792
2025
|
runtime.renderPrevPos.copy(runtime.renderCurPos);
|
|
1793
|
-
runtime.renderCurPos.set(p
|
|
2026
|
+
runtime.renderCurPos.set(p[0], p[1], p[2]);
|
|
1794
2027
|
}
|
|
1795
2028
|
|
|
1796
2029
|
/**
|
|
@@ -1803,8 +2036,8 @@ export class FirstPersonPlayerControllerSystem extends System {
|
|
|
1803
2036
|
* jump frames (or seconds) later when something finally reads it.
|
|
1804
2037
|
* @private
|
|
1805
2038
|
*/
|
|
1806
|
-
_assertTickInvariants(controller, runtime
|
|
1807
|
-
const p =
|
|
2039
|
+
_assertTickInvariants(controller, runtime) {
|
|
2040
|
+
const p = runtime.bodyPosition;
|
|
1808
2041
|
assert.ok(Number.isFinite(runtime.bodyYaw),
|
|
1809
2042
|
"FP invariant: runtime.bodyYaw is non-finite (camera yaw corrupted)");
|
|
1810
2043
|
assert.ok(Number.isFinite(runtime.eyePitch),
|
|
@@ -1818,7 +2051,7 @@ export class FirstPersonPlayerControllerSystem extends System {
|
|
|
1818
2051
|
"FP invariant: runtime.velocity is non-finite",
|
|
1819
2052
|
);
|
|
1820
2053
|
assert.ok(
|
|
1821
|
-
Number.isFinite(p
|
|
2054
|
+
Number.isFinite(p[0]) && Number.isFinite(p[1]) && Number.isFinite(p[2]),
|
|
1822
2055
|
"FP invariant: body position is non-finite",
|
|
1823
2056
|
);
|
|
1824
2057
|
}
|