@woosh/meep-engine 3.40.0 → 3.42.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/editor/selection/editor_pick.d.ts.map +1 -1
- package/editor/selection/editor_pick.js +2 -1
- package/editor/tools/TransformToolV2.d.ts.map +1 -1
- package/editor/tools/TransformToolV2.js +7 -1
- package/editor/tools/engine/ToolEngine.d.ts.map +1 -1
- package/editor/tools/engine/ToolEngine.js +10 -0
- package/editor/tools/v2/TransformControls.d.ts.map +1 -1
- package/editor/tools/v2/TransformControls.js +7 -20
- package/editor/tools/v2/handle/gizmo_drag_plane.d.ts.map +1 -1
- package/editor/tools/v2/handle/gizmo_drag_plane.js +4 -0
- package/editor/view/ecs/EntityEditor.d.ts.map +1 -1
- package/editor/view/ecs/EntityEditor.js +3 -1
- package/editor/view/node-graph/NodeGraphView.d.ts.map +1 -1
- package/editor/view/node-graph/NodeGraphView.js +28 -12
- package/package.json +1 -1
- package/samples/engine/first-scene/index.html +4 -1
- package/samples/engine/first-scene/main.js +14 -9
- package/src/core/binary/utf8/utf8_decode.js +3 -3
- package/src/core/bvh2/binary/2/bvh32_query_user_data_ray.d.ts.map +1 -1
- package/src/core/bvh2/binary/2/bvh32_query_user_data_ray.js +112 -113
- package/src/core/bvh2/bvh3/ebvh_nodes_sort_sah_local4.js +2 -2
- package/src/core/cache/wtinylfu/benchmark/CacheWTinylfu.bench.md +14 -14
- package/src/core/collection/RingBuffer.d.ts.map +1 -1
- package/src/core/collection/RingBuffer.js +4 -0
- package/src/core/collection/array/array_contains_duplicates.d.ts.map +1 -1
- package/src/core/collection/array/array_contains_duplicates.js +2 -1
- package/src/core/collection/array/array_copy.d.ts.map +1 -1
- package/src/core/collection/array/array_copy.js +23 -0
- package/src/core/collection/array/typed/sparse_typed_array_hash.d.ts +2 -2
- package/src/core/collection/array/typed/sparse_typed_array_hash.d.ts.map +1 -1
- package/src/core/collection/array/typed/sparse_typed_array_hash.js +9 -8
- package/src/core/collection/array/typed/uint16_array_hash.d.ts +2 -2
- package/src/core/collection/array/typed/uint16_array_hash.js +4 -4
- package/src/core/collection/array/typed/uint8_array_hash.d.ts +2 -2
- package/src/core/collection/array/typed/uint8_array_hash.js +4 -4
- package/src/core/collection/array/weightedRandomFromArray.d.ts +1 -0
- package/src/core/collection/array/weightedRandomFromArray.d.ts.map +1 -1
- package/src/core/collection/array/weightedRandomFromArray.js +9 -1
- package/src/core/collection/heap/BinaryHeap.d.ts.map +1 -1
- package/src/core/collection/heap/BinaryHeap.js +4 -0
- package/src/core/collection/list/List.d.ts.map +1 -1
- package/src/core/collection/list/List.js +4 -2
- package/src/core/collection/set/ArraySet.js +1 -1
- package/src/core/collection/set/HashSet.d.ts +1 -1
- package/src/core/collection/set/HashSet.d.ts.map +1 -1
- package/src/core/collection/set/HashSet.js +4 -2
- package/src/core/debug/matchers/IsEqual.js +1 -1
- package/src/core/debug/matchers/IsIterableContaining.d.ts.map +1 -1
- package/src/core/debug/matchers/IsIterableContaining.js +61 -74
- package/src/core/events/signal/SignalBinding.js +101 -101
- package/src/core/function/extractFunctionBody.js +13 -13
- package/src/core/function/objectsEqual.d.ts.map +1 -1
- package/src/core/function/objectsEqual.js +15 -14
- package/src/core/geom/3d/frustum/frustum3_compute_closest_point.d.ts.map +1 -1
- package/src/core/geom/3d/frustum/frustum3_compute_closest_point.js +207 -172
- package/src/core/geom/3d/gjk/gjk_epa_penetration.d.ts.map +1 -1
- package/src/core/geom/3d/gjk/gjk_epa_penetration.js +5 -4
- package/src/core/geom/3d/line/line3_compute_segment_point_distance_eikonal.d.ts.map +1 -1
- package/src/core/geom/3d/line/line3_compute_segment_point_distance_eikonal.js +8 -2
- package/src/core/geom/3d/quaternion/swing_twist_clamp.d.ts +24 -0
- package/src/core/geom/3d/quaternion/swing_twist_clamp.d.ts.map +1 -0
- package/src/core/geom/3d/quaternion/swing_twist_clamp.js +62 -0
- package/src/core/geom/3d/quaternion/swing_twist_compose.d.ts +15 -0
- package/src/core/geom/3d/quaternion/swing_twist_compose.d.ts.map +1 -0
- package/src/core/geom/3d/quaternion/swing_twist_compose.js +36 -0
- package/src/core/geom/3d/quaternion/swing_twist_error.d.ts +39 -0
- package/src/core/geom/3d/quaternion/swing_twist_error.d.ts.map +1 -0
- package/src/core/geom/3d/quaternion/swing_twist_error.js +85 -0
- package/src/core/geom/3d/triangle/tri3_ray_intersection.d.ts +20 -0
- package/src/core/geom/3d/triangle/tri3_ray_intersection.d.ts.map +1 -1
- package/src/core/geom/3d/triangle/tri3_ray_intersection.js +182 -0
- package/src/core/geom/vec3/v3_rigid_align_paired_unit_vectors.d.ts +11 -6
- package/src/core/geom/vec3/v3_rigid_align_paired_unit_vectors.d.ts.map +1 -1
- package/src/core/geom/vec3/v3_rigid_align_paired_unit_vectors.js +27 -13
- package/src/core/math/linalg/eigen/matrix_symmetric_4x4_eigen.d.ts +25 -0
- package/src/core/math/linalg/eigen/matrix_symmetric_4x4_eigen.d.ts.map +1 -0
- package/src/core/math/linalg/eigen/matrix_symmetric_4x4_eigen.js +166 -0
- package/src/core/math/linalg/eigen/matrix_top_eigenvector_power_iteration.d.ts +5 -3
- package/src/core/math/linalg/eigen/matrix_top_eigenvector_power_iteration.d.ts.map +1 -1
- package/src/core/math/linalg/eigen/matrix_top_eigenvector_power_iteration.js +5 -3
- package/src/core/math/noise/curl_noise_3dt.d.ts.map +1 -1
- package/src/core/math/noise/curl_noise_3dt.js +20 -10
- package/src/core/math/noise/sdnoise.d.ts +16 -5
- package/src/core/math/noise/sdnoise.d.ts.map +1 -1
- package/src/core/math/noise/sdnoise.js +43 -9
- package/src/core/math/spline/spline3_hermite_nearest_point.d.ts +16 -1
- package/src/core/math/spline/spline3_hermite_nearest_point.d.ts.map +1 -1
- package/src/core/math/spline/spline3_hermite_nearest_point.js +44 -3
- package/src/engine/Engine.d.ts.map +1 -1
- package/src/engine/Engine.js +6 -2
- package/src/engine/animation/curve/AnimationCurve.d.ts +3 -0
- package/src/engine/animation/curve/AnimationCurve.d.ts.map +1 -1
- package/src/engine/animation/curve/AnimationCurve.js +6 -1
- package/src/engine/control/first-person/FirstPersonPlayerController.d.ts +9 -0
- package/src/engine/control/first-person/FirstPersonPlayerController.d.ts.map +1 -1
- package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.d.ts +26 -0
- package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.d.ts.map +1 -1
- package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.js +2 -0
- package/src/engine/control/first-person/abilities/AbilitySet.d.ts.map +1 -1
- package/src/engine/control/first-person/abilities/AbilitySet.js +9 -0
- package/src/engine/control/first-person/abilities/LedgeGrab.d.ts.map +1 -1
- package/src/engine/control/first-person/abilities/LedgeGrab.js +6 -0
- package/src/engine/control/first-person/abilities/Slide.d.ts.map +1 -1
- package/src/engine/control/first-person/abilities/Slide.js +1 -0
- package/src/engine/control/first-person/abilities/WallRun.d.ts +4 -1
- package/src/engine/control/first-person/abilities/WallRun.d.ts.map +1 -1
- package/src/engine/control/first-person/abilities/WallRun.js +13 -1
- package/src/engine/control/first-person/mastery/SlideInitiationTimingEvaluator.d.ts +1 -1
- package/src/engine/control/first-person/mastery/SlideInitiationTimingEvaluator.d.ts.map +1 -1
- package/src/engine/control/first-person/mastery/SlideInitiationTimingEvaluator.js +6 -5
- package/src/engine/control/first-person/mastery/StrideTimingJumpEvaluator.d.ts +3 -3
- package/src/engine/control/first-person/mastery/StrideTimingJumpEvaluator.d.ts.map +1 -1
- package/src/engine/control/first-person/mastery/StrideTimingJumpEvaluator.js +9 -8
- package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.d.ts.map +1 -1
- package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.js +13 -4
- package/src/engine/ecs/EntityManager.d.ts +9 -1
- package/src/engine/ecs/EntityManager.d.ts.map +1 -1
- package/src/engine/ecs/EntityManager.js +44 -42
- package/src/engine/ecs/dynamic_actions/rules/DynamicRuleDescription.d.ts.map +1 -1
- package/src/engine/ecs/dynamic_actions/rules/DynamicRuleDescription.js +2 -1
- package/src/engine/ecs/dynamic_actions/rules/DynamicRuleDescriptionTable.d.ts.map +1 -1
- package/src/engine/ecs/dynamic_actions/rules/DynamicRuleDescriptionTable.js +1 -0
- package/src/engine/ecs/fow/FogOfWarRevealerSystem.d.ts.map +1 -1
- package/src/engine/ecs/fow/FogOfWarRevealerSystem.js +3 -0
- package/src/engine/ecs/gpu/GPUStateAuthority.d.ts +20 -0
- package/src/engine/ecs/gpu/GPUStateAuthority.d.ts.map +1 -1
- package/src/engine/ecs/gpu/GPUStateAuthority.js +21 -0
- package/src/engine/ecs/gpu/GPU_AUTHORITY_EVENT_HOLD_CHANGE.d.ts +13 -0
- package/src/engine/ecs/gpu/GPU_AUTHORITY_EVENT_HOLD_CHANGE.d.ts.map +1 -0
- package/src/engine/ecs/gpu/GPU_AUTHORITY_EVENT_HOLD_CHANGE.js +12 -0
- package/src/engine/ecs/gpu/gpu_authority_grant.d.ts +6 -0
- package/src/engine/ecs/gpu/gpu_authority_grant.d.ts.map +1 -1
- package/src/engine/ecs/gpu/gpu_authority_grant.js +7 -1
- package/src/engine/ecs/gpu/gpu_authority_held.d.ts +14 -0
- package/src/engine/ecs/gpu/gpu_authority_held.d.ts.map +1 -0
- package/src/engine/ecs/gpu/gpu_authority_held.js +23 -0
- package/src/engine/ecs/gpu/gpu_authority_hold.d.ts +23 -0
- package/src/engine/ecs/gpu/gpu_authority_hold.d.ts.map +1 -0
- package/src/engine/ecs/gpu/gpu_authority_hold.js +41 -0
- package/src/engine/ecs/gpu/gpu_authority_unhold.d.ts +14 -0
- package/src/engine/ecs/gpu/gpu_authority_unhold.d.ts.map +1 -0
- package/src/engine/ecs/gpu/gpu_authority_unhold.js +32 -0
- package/src/engine/ecs/ik/IKGoal.d.ts +59 -0
- package/src/engine/ecs/ik/IKGoal.d.ts.map +1 -0
- package/src/engine/ecs/ik/IKGoal.js +83 -0
- package/src/engine/ecs/ik/IKGoalSystem.d.ts +75 -0
- package/src/engine/ecs/ik/IKGoalSystem.d.ts.map +1 -0
- package/src/engine/ecs/ik/IKGoalSystem.js +1456 -0
- package/src/engine/ecs/ik/PLAN.md +179 -0
- package/src/engine/ecs/parent/EntityNode.js +3 -3
- package/src/engine/ecs/speaker/VoiceSystem.d.ts +2 -2
- package/src/engine/ecs/speaker/VoiceSystem.d.ts.map +1 -1
- package/src/engine/ecs/speaker/VoiceSystem.js +4 -0
- package/src/engine/ecs/storage/BinaryBufferDeSerializer.js +5 -5
- package/src/engine/ecs/storage/BinaryBufferSerializer.d.ts.map +1 -1
- package/src/engine/ecs/storage/BinaryBufferSerializer.js +4 -5
- package/src/engine/ecs/storage/binary/BinarySerializationRegistry.d.ts.map +1 -1
- package/src/engine/ecs/storage/binary/BinarySerializationRegistry.js +3 -2
- package/src/engine/ecs/storage/binary/SERIALIZATION_COVERAGE.md +7 -3
- package/src/engine/ecs/storage/binary/object/BinaryObjectSerializationAdapter2.js +1 -1
- package/src/engine/ecs/storage/binary/object-v2/BinaryObjectDeSerializer.d.ts.map +1 -1
- package/src/engine/ecs/storage/binary/object-v2/BinaryObjectDeSerializer.js +8 -1
- package/src/engine/ecs/storage/populateEngineSerializationRegistry.d.ts.map +1 -1
- package/src/engine/ecs/storage/populateEngineSerializationRegistry.js +9 -2
- package/src/engine/ecs/system/orderSystemsByDeclaredAccess.d.ts +33 -0
- package/src/engine/ecs/system/orderSystemsByDeclaredAccess.d.ts.map +1 -0
- package/src/engine/ecs/system/orderSystemsByDeclaredAccess.js +282 -0
- package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSystem.d.ts.map +1 -1
- package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSystem.js +5 -2
- package/src/engine/ecs/terrain/ecs/layers/TerrainLayers.d.ts.map +1 -1
- package/src/engine/ecs/terrain/ecs/layers/TerrainLayers.js +3 -0
- package/src/engine/ecs/terrain/ecs/splat/SplatMapping.d.ts.map +1 -1
- package/src/engine/ecs/terrain/ecs/splat/SplatMapping.js +1 -0
- package/src/engine/ecs/terrain/overlay/TerrainOverlay.js +1 -1
- package/src/engine/ecs/terrain/tiles/TerrainTile.d.ts.map +1 -1
- package/src/engine/ecs/terrain/tiles/TerrainTile.js +13 -1
- package/src/engine/ecs/terrain/tiles/TerrainTileManager.d.ts.map +1 -1
- package/src/engine/ecs/terrain/tiles/TerrainTileManager.js +1 -0
- package/src/engine/ecs/transform/T64WorldCache.js +139 -139
- package/src/engine/ecs/transform/t64_evaluate_local.d.ts +25 -0
- package/src/engine/ecs/transform/t64_evaluate_local.d.ts.map +1 -0
- package/src/engine/ecs/transform/t64_evaluate_local.js +35 -0
- package/src/engine/ecs/transform/t64_evaluate_world.d.ts +5 -3
- package/src/engine/ecs/transform/t64_evaluate_world.d.ts.map +1 -1
- package/src/engine/ecs/transform/t64_evaluate_world.js +128 -126
- package/src/engine/graphics/ecs/light/LightSerializationAdapter.d.ts.map +1 -1
- package/src/engine/graphics/ecs/light/LightSerializationAdapter.js +13 -1
- package/src/engine/graphics/ecs/light/LightSerializationUpgrader_0_1.d.ts +5 -0
- package/src/engine/graphics/ecs/light/LightSerializationUpgrader_0_1.d.ts.map +1 -0
- package/src/engine/graphics/ecs/light/LightSerializationUpgrader_0_1.js +27 -0
- package/src/engine/graphics/ecs/water/Water.d.ts +11 -0
- package/src/engine/graphics/ecs/water/Water.d.ts.map +1 -1
- package/src/engine/graphics/ecs/water/Water.js +17 -0
- package/src/engine/graphics/ecs/water/WaterSerializationAdapter.d.ts.map +1 -1
- package/src/engine/graphics/ecs/water/WaterSerializationAdapter.js +3 -1
- package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_4_5.d.ts +9 -0
- package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_4_5.d.ts.map +1 -0
- package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_4_5.js +24 -0
- package/src/engine/graphics/ecs/water/WaterWaves.d.ts +30 -9
- package/src/engine/graphics/ecs/water/WaterWaves.d.ts.map +1 -1
- package/src/engine/graphics/ecs/water/WaterWaves.js +41 -9
- package/src/engine/graphics/ecs/water/WaterWavesSerializationAdapter.d.ts.map +1 -1
- package/src/engine/graphics/ecs/water/WaterWavesSerializationAdapter.js +30 -26
- package/src/engine/graphics/ecs/water/WaterWavesSerializationUpgrader_0_1.d.ts +6 -0
- package/src/engine/graphics/ecs/water/WaterWavesSerializationUpgrader_0_1.d.ts.map +1 -0
- package/src/engine/graphics/ecs/water/WaterWavesSerializationUpgrader_0_1.js +22 -0
- package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_raycast.d.ts.map +1 -1
- package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_raycast.js +3 -5
- package/src/engine/graphics/texture/3d/scs3d_sample_linear3.d.ts +20 -0
- package/src/engine/graphics/texture/3d/scs3d_sample_linear3.d.ts.map +1 -1
- package/src/engine/graphics/texture/3d/scs3d_sample_linear3.js +36 -0
- package/src/engine/graphics3/AnimationGraphSystem.d.ts +2 -0
- package/src/engine/graphics3/AnimationGraphSystem.d.ts.map +1 -1
- package/src/engine/graphics3/AnimationGraphSystem.js +337 -329
- package/src/engine/graphics3/AnimationSystem.d.ts +2 -0
- package/src/engine/graphics3/AnimationSystem.d.ts.map +1 -1
- package/src/engine/graphics3/AnimationSystem.js +360 -352
- package/src/engine/graphics3/WaterSystem.d.ts +12 -3
- package/src/engine/graphics3/WaterSystem.d.ts.map +1 -1
- package/src/engine/graphics3/WaterSystem.js +78 -46
- package/src/engine/input/devices/PointerDevice.d.ts.map +1 -1
- package/src/engine/input/devices/PointerDevice.js +29 -4
- package/src/engine/intelligence/behavior/selector/WeightedRandomBehavior.d.ts +1 -0
- package/src/engine/intelligence/behavior/selector/WeightedRandomBehavior.d.ts.map +1 -1
- package/src/engine/intelligence/behavior/selector/WeightedRandomBehavior.js +14 -3
- package/src/engine/physics/cloth/MEASUREMENTS.md +130 -0
- package/src/engine/physics/cloth/PLAN.md +16 -1
- package/src/engine/physics/cloth/ecs/ClothColliderSystem.d.ts +5 -6
- package/src/engine/physics/cloth/ecs/ClothColliderSystem.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothColliderSystem.js +5 -6
- package/src/engine/physics/cloth/ecs/ClothInstance.d.ts +4 -7
- package/src/engine/physics/cloth/ecs/ClothInstance.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothInstance.js +4 -7
- package/src/engine/physics/cloth/ecs/ClothSystem.d.ts +4 -3
- package/src/engine/physics/cloth/ecs/ClothSystem.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothSystem.js +4 -3
- package/src/engine/physics/cloth/ecs/ClothWorld.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothWorld.js +10 -0
- package/src/engine/physics/cloth/ecs/cloth_seed_rig.d.ts +24 -24
- package/src/engine/physics/cloth/ecs/cloth_seed_rig.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/cloth_seed_rig.js +46 -43
- package/src/engine/physics/cloth/ecs/cloth_write_back.d.ts +1 -1
- package/src/engine/physics/cloth/ecs/cloth_write_back.js +1 -1
- package/src/engine/physics/constraint/solve_constraints.d.ts +0 -35
- package/src/engine/physics/constraint/solve_constraints.d.ts.map +1 -1
- package/src/engine/physics/constraint/solve_constraints.js +1 -83
- package/src/engine/physics/ecs/ContactProbe.d.ts +73 -0
- package/src/engine/physics/ecs/ContactProbe.d.ts.map +1 -0
- package/src/engine/physics/ecs/ContactProbe.js +103 -0
- package/src/engine/physics/ecs/ContactProbeSystem.d.ts +44 -0
- package/src/engine/physics/ecs/ContactProbeSystem.d.ts.map +1 -0
- package/src/engine/physics/ecs/ContactProbeSystem.js +397 -0
- package/src/engine/physics/fluid/ecs/FluidComponent.d.ts +1 -1
- package/src/engine/physics/fluid/ecs/FluidComponent.js +1 -1
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_velocity.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_velocity.js +12 -3
- package/src/engine/physics/fluid/solver/v3_grid_advect_sl_velocity.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_grid_advect_sl_velocity.js +8 -2
- package/src/engine/physics/fluid/solver/v3_grid_sample_scalar_masked.d.ts +19 -0
- package/src/engine/physics/fluid/solver/v3_grid_sample_scalar_masked.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_grid_sample_scalar_masked.js +41 -2
- package/src/engine/physics/fluid/solver/v3_mac_advect_scalar.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_mac_advect_scalar.js +9 -3
- package/src/engine/physics/fluid/solver/v3_mac_advect_sl_velocity.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_mac_advect_sl_velocity.js +26 -10
- package/src/engine/physics/inverse_kinematics/frame_fabrik/FrameFabrikProblem.d.ts +205 -0
- package/src/engine/physics/inverse_kinematics/frame_fabrik/FrameFabrikProblem.d.ts.map +1 -0
- package/src/engine/physics/inverse_kinematics/frame_fabrik/FrameFabrikProblem.js +245 -0
- package/src/engine/physics/inverse_kinematics/frame_fabrik/frame_fabrik_limit_from_joint.d.ts +21 -0
- package/src/engine/physics/inverse_kinematics/frame_fabrik/frame_fabrik_limit_from_joint.d.ts.map +1 -0
- package/src/engine/physics/inverse_kinematics/frame_fabrik/frame_fabrik_limit_from_joint.js +63 -0
- package/src/engine/physics/inverse_kinematics/frame_fabrik/frame_fabrik_solve.d.ts +33 -0
- package/src/engine/physics/inverse_kinematics/frame_fabrik/frame_fabrik_solve.d.ts.map +1 -0
- package/src/engine/physics/inverse_kinematics/frame_fabrik/frame_fabrik_solve.js +874 -0
- package/src/engine/physics/inverse_kinematics/joint_hinge_mid_axis.d.ts +27 -0
- package/src/engine/physics/inverse_kinematics/joint_hinge_mid_axis.d.ts.map +1 -0
- package/src/engine/physics/inverse_kinematics/joint_hinge_mid_axis.js +77 -0
- package/src/engine/physics/inverse_kinematics/two_bone_path_solve.d.ts +36 -0
- package/src/engine/physics/inverse_kinematics/two_bone_path_solve.d.ts.map +1 -0
- package/src/engine/physics/inverse_kinematics/two_bone_path_solve.js +97 -0
- package/src/engine/physics/inverse_kinematics/two_joint_ik.d.ts +33 -11
- package/src/engine/physics/inverse_kinematics/two_joint_ik.d.ts.map +1 -1
- package/src/engine/physics/inverse_kinematics/two_joint_ik.js +158 -67
- package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.d.ts +3 -6
- package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.js +22 -9
- package/src/engine/ui/DraggableAspect.d.ts +5 -1
- package/src/engine/ui/DraggableAspect.d.ts.map +1 -1
- package/src/engine/ui/DraggableAspect.js +61 -4
- package/src/format/image/avif/heif/ItemProperty.d.ts +1 -1
- package/src/format/image/avif/heif/ItemProperty.js +1 -1
- package/src/format/image/png/chunk/png_chunk_decode_iTXt.d.ts.map +1 -1
- package/src/format/image/png/chunk/png_chunk_decode_iTXt.js +17 -6
- package/src/shade/device/mock/SoftwareGPUDevice.d.ts +2 -4
- package/src/shade/device/mock/SoftwareGPUDevice.d.ts.map +1 -1
- package/src/shade/device/mock/SoftwareGPUDevice.js +20 -13
- package/src/shade/playground/skinned_blas_refit/sweep_views.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/sweep_views.js +2 -1
- package/src/shade/playground/water_refraction/README.md +10 -11
- package/src/shade/playground/water_refraction/main.js +9 -8
- package/src/shade/playground/water_refraction/world.js +1 -1
- package/src/shade/playground/water_surface/README.md +43 -0
- package/src/shade/playground/water_surface/index.html +30 -0
- package/src/shade/playground/water_surface/main.d.ts +2 -0
- package/src/shade/playground/water_surface/main.d.ts.map +1 -0
- package/src/shade/playground/water_surface/main.js +154 -0
- package/src/shade/playground/water_surface/world.d.ts +44 -0
- package/src/shade/playground/water_surface/world.d.ts.map +1 -0
- package/src/shade/playground/water_surface/world.js +160 -0
- package/src/shade/renderer/animation/ANIMATION_TRACK_BINDING_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/animation/ANIMATION_TRACK_BINDING_STRUCT.js +10 -1
- package/src/shade/renderer/animation/GPUAnimationManager.d.ts +10 -4
- package/src/shade/renderer/animation/GPUAnimationManager.d.ts.map +1 -1
- package/src/shade/renderer/animation/GPUAnimationManager.js +251 -23
- package/src/shade/renderer/animation/POSE_ACCUMULATOR_LAYOUT.d.ts +12 -4
- package/src/shade/renderer/animation/POSE_ACCUMULATOR_LAYOUT.d.ts.map +1 -1
- package/src/shade/renderer/animation/POSE_ACCUMULATOR_LAYOUT.js +12 -4
- package/src/shade/renderer/animation/chunk_pose_accumulator.d.ts.map +1 -1
- package/src/shade/renderer/animation/chunk_pose_accumulator.js +14 -1
- package/src/shade/renderer/animation/pose/PoseChannelIndex.d.ts +78 -0
- package/src/shade/renderer/animation/pose/PoseChannelIndex.d.ts.map +1 -0
- package/src/shade/renderer/animation/pose/PoseChannelIndex.js +274 -0
- package/src/shade/renderer/animation/pose/PosePlayback.d.ts +40 -3
- package/src/shade/renderer/animation/pose/PosePlayback.d.ts.map +1 -1
- package/src/shade/renderer/animation/pose/PosePlayback.js +77 -3
- package/src/shade/renderer/animation/pose/pose_evaluate_local.d.ts +21 -3
- package/src/shade/renderer/animation/pose/pose_evaluate_local.d.ts.map +1 -1
- package/src/shade/renderer/animation/pose/pose_evaluate_local.js +79 -11
- package/src/shade/renderer/animation/shader_animation_apply.js +1 -1
- package/src/shade/renderer/animation/shader_animation_pose_resolve.d.ts +3 -2
- package/src/shade/renderer/animation/shader_animation_pose_resolve.d.ts.map +1 -1
- package/src/shade/renderer/animation/shader_animation_pose_resolve.js +187 -176
- package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.js +5 -0
- package/src/shade/renderer/binding/BufferBinding.js +2 -2
- package/src/shade/renderer/buffer/table/GPUTypedTable.d.ts.map +1 -1
- package/src/shade/renderer/buffer/table/GPUTypedTable.js +5 -3
- package/src/shade/renderer/buffer/table/GPUTypedTableDescriptor.d.ts +10 -3
- package/src/shade/renderer/buffer/table/GPUTypedTableDescriptor.d.ts.map +1 -1
- package/src/shade/renderer/buffer/table/GPUTypedTableDescriptor.js +17 -9
- package/src/shade/renderer/camera/orbital/OrbitalCameraInput.d.ts +3 -0
- package/src/shade/renderer/camera/orbital/OrbitalCameraInput.d.ts.map +1 -1
- package/src/shade/renderer/camera/orbital/OrbitalCameraInput.js +16 -0
- package/src/shade/renderer/camera/orbital/OrbitalCameraRig.d.ts +2 -0
- package/src/shade/renderer/camera/orbital/OrbitalCameraRig.d.ts.map +1 -1
- package/src/shade/renderer/camera/orbital/OrbitalCameraRig.js +11 -0
- package/src/shade/renderer/geometry/meshlet/build/meshoptimizer/geometry_to_meshlets_meshoptimizer.d.ts +1 -1
- package/src/shade/renderer/geometry/meshlet/build/meshoptimizer/geometry_to_meshlets_meshoptimizer.d.ts.map +1 -1
- package/src/shade/renderer/geometry/meshlet/build/meshoptimizer/geometry_to_meshlets_meshoptimizer.js +9 -3
- package/src/shade/renderer/geometry/util/geometry_simplify_redundant_topology.d.ts.map +1 -1
- package/src/shade/renderer/geometry/util/geometry_simplify_redundant_topology.js +2 -2
- package/src/shade/renderer/geometry/virtual/format/vgeo_validate_container.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/vgeo_validate_container.js +85 -0
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.js +12 -6
- package/src/shade/renderer/geometry/virtual/runtime/VGeoPageFetcher.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/VGeoPageFetcher.js +7 -0
- package/src/shade/renderer/geometry/virtual/runtime/VGeoRuntimeTables.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/VGeoRuntimeTables.js +3 -1
- package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
- package/src/shade/renderer/object_property/chunk_write_object_property.d.ts +3 -1
- package/src/shade/renderer/object_property/chunk_write_object_property.d.ts.map +1 -1
- package/src/shade/renderer/object_property/chunk_write_object_property.js +5 -2
- package/src/shade/renderer/object_property/chunk_write_object_property_node3d.d.ts +4 -0
- package/src/shade/renderer/object_property/chunk_write_object_property_node3d.d.ts.map +1 -1
- package/src/shade/renderer/object_property/chunk_write_object_property_node3d.js +6 -1
- package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
- package/src/shade/renderer/scene/SCENE_DATABASE_SPEC.js +2 -1
- package/src/shade/renderer/scene/optimization/geometry/geometry_deduplicate.d.ts +1 -1
- package/src/shade/renderer/scene/optimization/geometry/geometry_deduplicate.d.ts.map +1 -1
- package/src/shade/renderer/scene/optimization/geometry/geometry_deduplicate.js +135 -73
- package/src/shade/renderer/scene/optimization/geometry/internal/cover_greedy.d.ts +7 -0
- package/src/shade/renderer/scene/optimization/geometry/internal/cover_greedy.d.ts.map +1 -1
- package/src/shade/renderer/scene/optimization/geometry/internal/cover_greedy.js +29 -1
- package/src/shade/renderer/scene/optimization/geometry/internal/face_neighbourhood_hash.d.ts +19 -0
- package/src/shade/renderer/scene/optimization/geometry/internal/face_neighbourhood_hash.d.ts.map +1 -0
- package/src/shade/renderer/scene/optimization/geometry/internal/face_neighbourhood_hash.js +167 -0
- package/src/shade/renderer/scene/optimization/geometry/internal/neighbourhood_anchor_index.d.ts +25 -0
- package/src/shade/renderer/scene/optimization/geometry/internal/neighbourhood_anchor_index.d.ts.map +1 -0
- package/src/shade/renderer/scene/optimization/geometry/internal/neighbourhood_anchor_index.js +124 -0
- package/src/shade/renderer/scene/optimization/geometry/internal/seed_correspondence_from_face_pair.d.ts +19 -0
- package/src/shade/renderer/scene/optimization/geometry/internal/seed_correspondence_from_face_pair.d.ts.map +1 -0
- package/src/shade/renderer/scene/optimization/geometry/internal/seed_correspondence_from_face_pair.js +48 -0
- package/src/shade/renderer/scene/rows/GPUSceneRows.d.ts +17 -1
- package/src/shade/renderer/scene/rows/GPUSceneRows.d.ts.map +1 -1
- package/src/shade/renderer/scene/rows/GPUSceneRows.js +29 -3
- package/src/shade/renderer/shader/chunk/math/fft/chunk_fft128_inverse.d.ts +13 -0
- package/src/shade/renderer/shader/chunk/math/fft/chunk_fft128_inverse.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/math/fft/chunk_fft128_inverse.js +42 -0
- package/src/shade/renderer/shader/chunk/math/fft/chunk_fft128x4_inverse_workgroup.d.ts +15 -0
- package/src/shade/renderer/shader/chunk/math/fft/chunk_fft128x4_inverse_workgroup.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/math/fft/chunk_fft128x4_inverse_workgroup.js +39 -0
- package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.d.ts.map +1 -1
- package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.js +2 -0
- package/src/shade/renderer/water/GPUWaterRenderer.d.ts +15 -0
- package/src/shade/renderer/water/GPUWaterRenderer.d.ts.map +1 -1
- package/src/shade/renderer/water/GPUWaterRenderer.js +110 -30
- package/src/shade/renderer/water/medium/GPUWaterBodies.d.ts +16 -8
- package/src/shade/renderer/water/medium/GPUWaterBodies.d.ts.map +1 -1
- package/src/shade/renderer/water/medium/GPUWaterBodies.js +31 -26
- package/src/shade/renderer/water/medium/shader_water_meshlets.d.ts +0 -1
- package/src/shade/renderer/water/medium/shader_water_meshlets.d.ts.map +1 -1
- package/src/shade/renderer/water/medium/shader_water_meshlets.js +1 -39
- package/src/shade/renderer/water/shader_water.d.ts +0 -1
- package/src/shade/renderer/water/shader_water.d.ts.map +1 -1
- package/src/shade/renderer/water/shader_water.js +201 -72
- package/src/shade/renderer/water/surface/GPUWaterSurface.d.ts +70 -0
- package/src/shade/renderer/water/surface/GPUWaterSurface.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/GPUWaterSurface.js +199 -0
- package/src/shade/renderer/water/surface/WATER_WAVE_RECORD_STRUCT.d.ts +5 -2
- package/src/shade/renderer/water/surface/WATER_WAVE_RECORD_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/water/surface/WATER_WAVE_RECORD_STRUCT.js +32 -12
- package/src/shade/renderer/water/surface/chunk_water_surface_sample.d.ts +22 -0
- package/src/shade/renderer/water/surface/chunk_water_surface_sample.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/chunk_water_surface_sample.js +217 -0
- package/src/shade/renderer/water/surface/graph_water_tessellation.d.ts +65 -11
- package/src/shade/renderer/water/surface/graph_water_tessellation.d.ts.map +1 -1
- package/src/shade/renderer/water/surface/graph_water_tessellation.js +163 -28
- package/src/shade/renderer/water/surface/lod/WATER_LOD.d.ts +51 -0
- package/src/shade/renderer/water/surface/lod/WATER_LOD.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/lod/WATER_LOD.js +95 -0
- package/src/shade/renderer/water/surface/lod/chunk_water_lod.d.ts +10 -0
- package/src/shade/renderer/water/surface/lod/chunk_water_lod.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/lod/chunk_water_lod.js +127 -0
- package/src/shade/renderer/water/surface/lod/chunk_water_lod_cell.d.ts +17 -0
- package/src/shade/renderer/water/surface/lod/chunk_water_lod_cell.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/lod/chunk_water_lod_cell.js +246 -0
- package/src/shade/renderer/water/surface/lod/shader_water_lod.d.ts +118 -0
- package/src/shade/renderer/water/surface/lod/shader_water_lod.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/lod/shader_water_lod.js +727 -0
- package/src/shade/renderer/water/surface/particles/GPUWaterParticles.d.ts +60 -0
- package/src/shade/renderer/water/surface/particles/GPUWaterParticles.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/particles/GPUWaterParticles.js +228 -0
- package/src/shade/renderer/water/surface/particles/WATER_PARTICLE_STRUCT.d.ts +17 -0
- package/src/shade/renderer/water/surface/particles/WATER_PARTICLE_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/particles/WATER_PARTICLE_STRUCT.js +49 -0
- package/src/shade/renderer/water/surface/particles/chunk_water_particle.d.ts +22 -0
- package/src/shade/renderer/water/surface/particles/chunk_water_particle.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/particles/chunk_water_particle.js +143 -0
- package/src/shade/renderer/water/surface/particles/chunk_water_particle_step.d.ts +15 -0
- package/src/shade/renderer/water/surface/particles/chunk_water_particle_step.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/particles/chunk_water_particle_step.js +121 -0
- package/src/shade/renderer/water/surface/particles/shader_water_particles.d.ts +83 -0
- package/src/shade/renderer/water/surface/particles/shader_water_particles.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/particles/shader_water_particles.js +502 -0
- package/src/shade/renderer/water/surface/shader_water_cull.d.ts +42 -0
- package/src/shade/renderer/water/surface/shader_water_cull.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/shader_water_cull.js +269 -0
- package/src/shade/renderer/water/surface/shader_water_waves_combine.d.ts +15 -0
- package/src/shade/renderer/water/surface/shader_water_waves_combine.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/shader_water_waves_combine.js +73 -0
- package/src/shade/renderer/water/surface/shader_water_waves_derive.d.ts +11 -0
- package/src/shade/renderer/water/surface/shader_water_waves_derive.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/shader_water_waves_derive.js +78 -0
- package/src/shade/renderer/water/surface/spectrum/GPUWaterSpectrum.d.ts +35 -0
- package/src/shade/renderer/water/surface/spectrum/GPUWaterSpectrum.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/spectrum/GPUWaterSpectrum.js +103 -0
- package/src/shade/renderer/water/surface/spectrum/WATER_BAND_STATE.d.ts +22 -0
- package/src/shade/renderer/water/surface/spectrum/WATER_BAND_STATE.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/spectrum/WATER_BAND_STATE.js +57 -0
- package/src/shade/renderer/water/surface/spectrum/WATER_SPECTRUM.d.ts +22 -0
- package/src/shade/renderer/water/surface/spectrum/WATER_SPECTRUM.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/spectrum/WATER_SPECTRUM.js +25 -0
- package/src/shade/renderer/water/surface/spectrum/chunk_water_jonswap.d.ts +14 -0
- package/src/shade/renderer/water/surface/spectrum/chunk_water_jonswap.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/spectrum/chunk_water_jonswap.js +48 -0
- package/src/shade/renderer/water/surface/spectrum/chunk_water_spectrum.d.ts +23 -0
- package/src/shade/renderer/water/surface/spectrum/chunk_water_spectrum.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/spectrum/chunk_water_spectrum.js +169 -0
- package/src/shade/renderer/water/surface/spectrum/shader_water_spectrum.d.ts +26 -0
- package/src/shade/renderer/water/surface/spectrum/shader_water_spectrum.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/spectrum/shader_water_spectrum.js +161 -0
- package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.d.ts.map +1 -1
- package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +18 -6
- package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
- package/src/shade/wgsl/emulator/WGSLLanguageCore.js +11 -3
- package/src/core/geom/2d/polygon/polygon2_triangulate.corpus.d.ts +0 -28
- package/src/core/geom/2d/polygon/polygon2_triangulate.corpus.d.ts.map +0 -1
- package/src/core/geom/2d/polygon/polygon2_triangulate.corpus.js +0 -86
- package/src/engine/ecs/ik/IKConstraint.d.ts +0 -52
- package/src/engine/ecs/ik/IKConstraint.d.ts.map +0 -1
- package/src/engine/ecs/ik/IKConstraint.js +0 -95
- package/src/engine/ecs/ik/IKProblem.d.ts +0 -45
- package/src/engine/ecs/ik/IKProblem.d.ts.map +0 -1
- package/src/engine/ecs/ik/IKProblem.js +0 -58
- package/src/engine/ecs/ik/IKSolver.d.ts +0 -8
- package/src/engine/ecs/ik/IKSolver.d.ts.map +0 -1
- package/src/engine/ecs/ik/IKSolver.js +0 -9
- package/src/engine/ecs/ik/InverseKinematics.d.ts +0 -48
- package/src/engine/ecs/ik/InverseKinematics.d.ts.map +0 -1
- package/src/engine/ecs/ik/InverseKinematics.js +0 -119
- package/src/engine/ecs/ik/InverseKinematicsSerializationAdapter.d.ts +0 -19
- package/src/engine/ecs/ik/InverseKinematicsSerializationAdapter.d.ts.map +0 -1
- package/src/engine/ecs/ik/InverseKinematicsSerializationAdapter.js +0 -72
- package/src/engine/ecs/ik/InverseKinematicsSystem.d.ts +0 -54
- package/src/engine/ecs/ik/InverseKinematicsSystem.d.ts.map +0 -1
- package/src/engine/ecs/ik/InverseKinematicsSystem.js +0 -212
- package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.d.ts +0 -8
- package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.d.ts.map +0 -1
- package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.js +0 -153
- package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.d.ts +0 -5
- package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.d.ts.map +0 -1
- package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.js +0 -120
- package/src/engine/ecs/ik/ik_bone_chain.d.ts +0 -64
- package/src/engine/ecs/ik/ik_bone_chain.d.ts.map +0 -1
- package/src/engine/ecs/ik/ik_bone_chain.js +0 -142
- package/src/engine/ecs/ik/ik_probe_terrain_contact.d.ts +0 -42
- package/src/engine/ecs/ik/ik_probe_terrain_contact.d.ts.map +0 -1
- package/src/engine/ecs/ik/ik_probe_terrain_contact.js +0 -123
- package/src/engine/ecs/ik/ik_write_local_rotation.d.ts +0 -18
- package/src/engine/ecs/ik/ik_write_local_rotation.d.ts.map +0 -1
- package/src/engine/ecs/ik/ik_write_local_rotation.js +0 -32
- package/src/engine/ecs/storage/binary/object-v2/serializerTestHarness.d.ts +0 -29
- package/src/engine/ecs/storage/binary/object-v2/serializerTestHarness.d.ts.map +0 -1
- package/src/engine/ecs/storage/binary/object-v2/serializerTestHarness.js +0 -44
- package/src/shade/renderer/water/medium/shader_water_bodies_derive.d.ts +0 -4
- package/src/shade/renderer/water/medium/shader_water_bodies_derive.d.ts.map +0 -1
- package/src/shade/renderer/water/medium/shader_water_bodies_derive.js +0 -32
- package/src/shade/renderer/water/surface/GPUWaterWaveSimulation.d.ts +0 -25
- package/src/shade/renderer/water/surface/GPUWaterWaveSimulation.d.ts.map +0 -1
- package/src/shade/renderer/water/surface/GPUWaterWaveSimulation.js +0 -128
- package/src/shade/renderer/water/surface/chunk_water_tessellation.d.ts +0 -9
- package/src/shade/renderer/water/surface/chunk_water_tessellation.d.ts.map +0 -1
- package/src/shade/renderer/water/surface/chunk_water_tessellation.js +0 -144
- package/src/shade/renderer/water/surface/chunk_water_wave.d.ts +0 -13
- package/src/shade/renderer/water/surface/chunk_water_wave.d.ts.map +0 -1
- package/src/shade/renderer/water/surface/chunk_water_wave.js +0 -40
- package/src/shade/renderer/water/surface/shader_water_tiles.d.ts +0 -4
- package/src/shade/renderer/water/surface/shader_water_tiles.d.ts.map +0 -1
- package/src/shade/renderer/water/surface/shader_water_tiles.js +0 -123
- package/src/shade/renderer/water/surface/shader_water_wave_batch.d.ts +0 -6
- package/src/shade/renderer/water/surface/shader_water_wave_batch.d.ts.map +0 -1
- package/src/shade/renderer/water/surface/shader_water_wave_batch.js +0 -85
- package/src/shade/renderer/water/surface/shader_water_wave_domain.d.ts +0 -6
- package/src/shade/renderer/water/surface/shader_water_wave_domain.d.ts.map +0 -1
- package/src/shade/renderer/water/surface/shader_water_wave_domain.js +0 -83
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Eigendecomposition of a symmetric 4x4 matrix via cyclic Jacobi rotations.
|
|
3
|
+
*
|
|
4
|
+
* Only the upper triangle of `m` is read (the matrix is assumed symmetric, so
|
|
5
|
+
* row- and column-major are the same); the input is not modified. Eigenpairs
|
|
6
|
+
* are emitted sorted by **ascending eigenvalue** (signed, not by magnitude),
|
|
7
|
+
* so index 3 is the largest. Equal eigenvalues keep their column order, so a
|
|
8
|
+
* multiple of the identity comes back as the identity basis, in order.
|
|
9
|
+
*
|
|
10
|
+
* Unlike power iteration, this converges whatever the gaps between eigenvalues:
|
|
11
|
+
* a ±λ pair or a near-tie at the top costs nothing extra, and only the
|
|
12
|
+
* eigenvectors of a genuinely repeated eigenvalue are arbitrary (any orthonormal
|
|
13
|
+
* basis of that eigenspace is returned).
|
|
14
|
+
*
|
|
15
|
+
* Eigenvector sign is arbitrary (an eigenvector and its negation are both
|
|
16
|
+
* valid); callers that need a consistent orientation must fix the sign
|
|
17
|
+
* themselves.
|
|
18
|
+
*
|
|
19
|
+
* @param {Float64Array|Float32Array|number[]} out_values length >= 4, eigenvalues ascending
|
|
20
|
+
* @param {Float64Array|Float32Array|number[]} out_vectors length >= 16, eigenvector k
|
|
21
|
+
* in out_vectors[k*4 .. k*4 + 3] (contiguous per eigenvector)
|
|
22
|
+
* @param {Float64Array|Float32Array|number[]} m symmetric 4x4 (index = row*4 + col)
|
|
23
|
+
*/
|
|
24
|
+
export function matrix_symmetric_4x4_eigen(out_values: Float64Array | Float32Array | number[], out_vectors: Float64Array | Float32Array | number[], m: Float64Array | Float32Array | number[]): void;
|
|
25
|
+
//# sourceMappingURL=matrix_symmetric_4x4_eigen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"matrix_symmetric_4x4_eigen.d.ts","sourceRoot":"","sources":["../../../../../../src/core/math/linalg/eigen/matrix_symmetric_4x4_eigen.js"],"names":[],"mappings":"AAsFA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,uDALW,YAAY,GAAC,YAAY,GAAC,MAAM,EAAE,eAClC,YAAY,GAAC,YAAY,GAAC,MAAM,EAAE,KAElC,YAAY,GAAC,YAAY,GAAC,MAAM,EAAE,QA0D5C"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Maximum number of cyclic Jacobi sweeps. A symmetric 4x4 reaches full double
|
|
3
|
+
* precision in 3-6 sweeps (Jacobi converges quadratically, whatever the gaps
|
|
4
|
+
* between eigenvalues): never more than 6 over 200,000 measured matrices,
|
|
5
|
+
* among them ±λ pairs, near and exact ties, rank 1, Horn's N, and scales from
|
|
6
|
+
* 1e-310 to 1e300. 50 only bounds the loop.
|
|
7
|
+
* @type {number}
|
|
8
|
+
*/
|
|
9
|
+
const MAX_SWEEPS = 50;
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Working copy of the input, row-major (index = row*4 + col).
|
|
13
|
+
* @type {Float64Array}
|
|
14
|
+
*/
|
|
15
|
+
const scratch_a = new Float64Array(16);
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Rotation accumulator, row-major; its columns become the eigenvectors.
|
|
19
|
+
* @type {Float64Array}
|
|
20
|
+
*/
|
|
21
|
+
const scratch_v = new Float64Array(16);
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Column index of each eigenpair, sorted by ascending eigenvalue.
|
|
25
|
+
* @type {Uint8Array}
|
|
26
|
+
*/
|
|
27
|
+
const scratch_order = new Uint8Array(4);
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* One Jacobi rotation in the (p, q) plane that zeroes the off-diagonal entry
|
|
31
|
+
* a[p][q]. `a` and `v` are 4x4 matrices stored row-major (index = row*4 + col).
|
|
32
|
+
* `a` is the symmetric working matrix; `v` accumulates the rotations so its
|
|
33
|
+
* columns become the eigenvectors.
|
|
34
|
+
*
|
|
35
|
+
* @param {Float64Array} a symmetric 4x4, mutated in place
|
|
36
|
+
* @param {Float64Array} v 4x4 rotation accumulator, mutated in place
|
|
37
|
+
* @param {number} p
|
|
38
|
+
* @param {number} q
|
|
39
|
+
*/
|
|
40
|
+
function jacobi_rotate(a, v, p, q) {
|
|
41
|
+
const apq = a[p * 4 + q];
|
|
42
|
+
|
|
43
|
+
if (apq === 0) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const app = a[p * 4 + p];
|
|
48
|
+
const aqq = a[q * 4 + q];
|
|
49
|
+
|
|
50
|
+
// tan of the rotation angle (Numerical Recipes form, |angle| <= pi/4).
|
|
51
|
+
const theta = (aqq - app) / (2 * apq);
|
|
52
|
+
const t = (theta >= 0)
|
|
53
|
+
? 1 / (theta + Math.sqrt(theta * theta + 1))
|
|
54
|
+
: -1 / (-theta + Math.sqrt(theta * theta + 1));
|
|
55
|
+
const c = 1 / Math.sqrt(t * t + 1);
|
|
56
|
+
const s = t * c;
|
|
57
|
+
|
|
58
|
+
a[p * 4 + p] = app - t * apq;
|
|
59
|
+
a[q * 4 + q] = aqq + t * apq;
|
|
60
|
+
a[p * 4 + q] = 0;
|
|
61
|
+
a[q * 4 + p] = 0;
|
|
62
|
+
|
|
63
|
+
for (let r = 0; r < 4; r++) {
|
|
64
|
+
if (r === p || r === q) {
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
const arp = a[r * 4 + p];
|
|
69
|
+
const arq = a[r * 4 + q];
|
|
70
|
+
|
|
71
|
+
const new_rp = c * arp - s * arq;
|
|
72
|
+
const new_rq = s * arp + c * arq;
|
|
73
|
+
a[r * 4 + p] = new_rp;
|
|
74
|
+
a[p * 4 + r] = new_rp;
|
|
75
|
+
a[r * 4 + q] = new_rq;
|
|
76
|
+
a[q * 4 + r] = new_rq;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
for (let row = 0; row < 4; row++) {
|
|
80
|
+
const vrp = v[row * 4 + p];
|
|
81
|
+
const vrq = v[row * 4 + q];
|
|
82
|
+
v[row * 4 + p] = c * vrp - s * vrq;
|
|
83
|
+
v[row * 4 + q] = s * vrp + c * vrq;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Eigendecomposition of a symmetric 4x4 matrix via cyclic Jacobi rotations.
|
|
89
|
+
*
|
|
90
|
+
* Only the upper triangle of `m` is read (the matrix is assumed symmetric, so
|
|
91
|
+
* row- and column-major are the same); the input is not modified. Eigenpairs
|
|
92
|
+
* are emitted sorted by **ascending eigenvalue** (signed, not by magnitude),
|
|
93
|
+
* so index 3 is the largest. Equal eigenvalues keep their column order, so a
|
|
94
|
+
* multiple of the identity comes back as the identity basis, in order.
|
|
95
|
+
*
|
|
96
|
+
* Unlike power iteration, this converges whatever the gaps between eigenvalues:
|
|
97
|
+
* a ±λ pair or a near-tie at the top costs nothing extra, and only the
|
|
98
|
+
* eigenvectors of a genuinely repeated eigenvalue are arbitrary (any orthonormal
|
|
99
|
+
* basis of that eigenspace is returned).
|
|
100
|
+
*
|
|
101
|
+
* Eigenvector sign is arbitrary (an eigenvector and its negation are both
|
|
102
|
+
* valid); callers that need a consistent orientation must fix the sign
|
|
103
|
+
* themselves.
|
|
104
|
+
*
|
|
105
|
+
* @param {Float64Array|Float32Array|number[]} out_values length >= 4, eigenvalues ascending
|
|
106
|
+
* @param {Float64Array|Float32Array|number[]} out_vectors length >= 16, eigenvector k
|
|
107
|
+
* in out_vectors[k*4 .. k*4 + 3] (contiguous per eigenvector)
|
|
108
|
+
* @param {Float64Array|Float32Array|number[]} m symmetric 4x4 (index = row*4 + col)
|
|
109
|
+
*/
|
|
110
|
+
export function matrix_symmetric_4x4_eigen(out_values, out_vectors, m) {
|
|
111
|
+
const a = scratch_a;
|
|
112
|
+
const v = scratch_v;
|
|
113
|
+
|
|
114
|
+
for (let row = 0; row < 4; row++) {
|
|
115
|
+
for (let col = row; col < 4; col++) {
|
|
116
|
+
const value = m[row * 4 + col];
|
|
117
|
+
a[row * 4 + col] = value;
|
|
118
|
+
a[col * 4 + row] = value;
|
|
119
|
+
|
|
120
|
+
v[row * 4 + col] = row === col ? 1 : 0;
|
|
121
|
+
v[col * 4 + row] = row === col ? 1 : 0;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
for (let sweep = 0; sweep < MAX_SWEEPS; sweep++) {
|
|
126
|
+
const scale = Math.abs(a[0]) + Math.abs(a[5]) + Math.abs(a[10]) + Math.abs(a[15]);
|
|
127
|
+
const off = Math.abs(a[1]) + Math.abs(a[2]) + Math.abs(a[3])
|
|
128
|
+
+ Math.abs(a[6]) + Math.abs(a[7]) + Math.abs(a[11]);
|
|
129
|
+
|
|
130
|
+
if (off <= 1e-18 * scale) {
|
|
131
|
+
break;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
jacobi_rotate(a, v, 0, 1);
|
|
135
|
+
jacobi_rotate(a, v, 0, 2);
|
|
136
|
+
jacobi_rotate(a, v, 0, 3);
|
|
137
|
+
jacobi_rotate(a, v, 1, 2);
|
|
138
|
+
jacobi_rotate(a, v, 1, 3);
|
|
139
|
+
jacobi_rotate(a, v, 2, 3);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
// Eigenvalues live on the diagonal; eigenvector k is column k of V.
|
|
143
|
+
// Stable insertion sort of the four column indices by eigenvalue.
|
|
144
|
+
const order = scratch_order;
|
|
145
|
+
|
|
146
|
+
for (let k = 0; k < 4; k++) {
|
|
147
|
+
const value = a[k * 5];
|
|
148
|
+
let slot = k;
|
|
149
|
+
|
|
150
|
+
while (slot > 0 && a[order[slot - 1] * 5] > value) {
|
|
151
|
+
order[slot] = order[slot - 1];
|
|
152
|
+
slot--;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
order[slot] = k;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
for (let k = 0; k < 4; k++) {
|
|
159
|
+
const col = order[k];
|
|
160
|
+
out_values[k] = a[col * 5];
|
|
161
|
+
out_vectors[k * 4] = v[col];
|
|
162
|
+
out_vectors[k * 4 + 1] = v[4 + col];
|
|
163
|
+
out_vectors[k * 4 + 2] = v[8 + col];
|
|
164
|
+
out_vectors[k * 4 + 3] = v[12 + col];
|
|
165
|
+
}
|
|
166
|
+
}
|
|
@@ -3,9 +3,11 @@
|
|
|
3
3
|
* symmetric square matrix using power iteration.
|
|
4
4
|
*
|
|
5
5
|
* Designed for small symmetric matrices where the dominant eigenvalue is
|
|
6
|
-
* well-separated from the rest (
|
|
7
|
-
*
|
|
8
|
-
*
|
|
6
|
+
* well-separated from the rest (PCA on a 3x3 covariance, etc.). Unsuitable
|
|
7
|
+
* when the top two eigenvalues have nearly equal magnitude — convergence
|
|
8
|
+
* stalls in that regime. That rules out Horn's quaternion matrix: a coplanar
|
|
9
|
+
* input makes its spectrum symmetric about zero (+λ and −λ); use
|
|
10
|
+
* `matrix_symmetric_4x4_eigen` there.
|
|
9
11
|
*
|
|
10
12
|
* @param {SquareMatrix} matrix Symmetric, column-major as per SquareMatrix
|
|
11
13
|
* @param {number[]|Float32Array|Float64Array} out Eigenvector is written here, length >= matrix.size
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matrix_top_eigenvector_power_iteration.d.ts","sourceRoot":"","sources":["../../../../../../src/core/math/linalg/eigen/matrix_top_eigenvector_power_iteration.js"],"names":[],"mappings":"AASA
|
|
1
|
+
{"version":3,"file":"matrix_top_eigenvector_power_iteration.d.ts","sourceRoot":"","sources":["../../../../../../src/core/math/linalg/eigen/matrix_top_eigenvector_power_iteration.js"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;;;GAgBG;AACH,kFALW,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,mBAClC,MAAM,cACN,MAAM,GACJ,MAAM,CAoFlB"}
|
|
@@ -12,9 +12,11 @@ function ensure_scratch(n) {
|
|
|
12
12
|
* symmetric square matrix using power iteration.
|
|
13
13
|
*
|
|
14
14
|
* Designed for small symmetric matrices where the dominant eigenvalue is
|
|
15
|
-
* well-separated from the rest (
|
|
16
|
-
*
|
|
17
|
-
*
|
|
15
|
+
* well-separated from the rest (PCA on a 3x3 covariance, etc.). Unsuitable
|
|
16
|
+
* when the top two eigenvalues have nearly equal magnitude — convergence
|
|
17
|
+
* stalls in that regime. That rules out Horn's quaternion matrix: a coplanar
|
|
18
|
+
* input makes its spectrum symmetric about zero (+λ and −λ); use
|
|
19
|
+
* `matrix_symmetric_4x4_eigen` there.
|
|
18
20
|
*
|
|
19
21
|
* @param {SquareMatrix} matrix Symmetric, column-major as per SquareMatrix
|
|
20
22
|
* @param {number[]|Float32Array|Float64Array} out Eigenvector is written here, length >= matrix.size
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"curl_noise_3dt.d.ts","sourceRoot":"","sources":["../../../../../src/core/math/noise/curl_noise_3dt.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"curl_noise_3dt.d.ts","sourceRoot":"","sources":["../../../../../src/core/math/noise/curl_noise_3dt.js"],"names":[],"mappings":"AAOA;;;;;;;GAOG;AACH,uCANW,MAAM,EAAE,KACR,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,QAwBhB"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { sdnoise3_array } from "./sdnoise.js";
|
|
2
2
|
|
|
3
|
-
const p_x0 =
|
|
4
|
-
const p_y0 =
|
|
5
|
-
const p_z0 =
|
|
3
|
+
const p_x0 = new Float64Array(4);
|
|
4
|
+
const p_y0 = new Float64Array(4);
|
|
5
|
+
const p_z0 = new Float64Array(4);
|
|
6
|
+
const sample_position = new Float64Array(3);
|
|
6
7
|
|
|
7
8
|
/**
|
|
8
9
|
*
|
|
@@ -14,13 +15,22 @@ const p_z0 = [];
|
|
|
14
15
|
*/
|
|
15
16
|
export function curl_noise_3dt(result, x, y, z, w) {
|
|
16
17
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
sample_position[0] = x + w;
|
|
19
|
+
sample_position[1] = y;
|
|
20
|
+
sample_position[2] = z;
|
|
21
|
+
sdnoise3_array(p_x0, 0, sample_position, 0);
|
|
22
|
+
sample_position[0] = x + 31.341;
|
|
23
|
+
sample_position[1] = y - 43.23 + w;
|
|
24
|
+
sample_position[2] = z + 12.34;
|
|
25
|
+
sdnoise3_array(p_y0, 0, sample_position, 0);
|
|
26
|
+
sample_position[0] = x - 231.141;
|
|
27
|
+
sample_position[1] = y + 124.123;
|
|
28
|
+
sample_position[2] = z - 54.4341 + w;
|
|
29
|
+
sdnoise3_array(p_z0, 0, sample_position, 0);
|
|
20
30
|
|
|
21
|
-
const _x = p_z0[
|
|
22
|
-
const _y = p_x0[
|
|
23
|
-
const _z = p_y0[
|
|
31
|
+
const _x = p_z0[2] - p_y0[3];
|
|
32
|
+
const _y = p_x0[3] - p_z0[1];
|
|
33
|
+
const _z = p_y0[1] - p_x0[2];
|
|
24
34
|
|
|
25
35
|
result[0] = _x;
|
|
26
36
|
result[1] = _y;
|
|
@@ -17,17 +17,28 @@ export function sdnoise1(derivatives: number[], x: number): number;
|
|
|
17
17
|
* @returns {number}
|
|
18
18
|
*/
|
|
19
19
|
export function sdnoise2(derivatives: number[], x: number, y: number): number;
|
|
20
|
-
/** 3D simplex noise with derivatives.
|
|
21
|
-
*
|
|
22
|
-
* (the 3D gradient of the scalar noise field) is also calculated.
|
|
20
|
+
/** 3D simplex noise with its analytic gradient, written into derivatives[0..2].
|
|
21
|
+
* Scalar facade over {@link sdnoise3_array}; returns the noise value.
|
|
23
22
|
*
|
|
23
|
+
* @param {number[]|Float32Array|Float64Array} derivatives
|
|
24
24
|
* @param {number} x
|
|
25
25
|
* @param {number} y
|
|
26
26
|
* @param {number} z
|
|
27
|
-
* @param {number[]} derivatives
|
|
28
27
|
* @returns {number}
|
|
29
28
|
*/
|
|
30
|
-
export function sdnoise3(derivatives: number[], x: number, y: number, z: number): number;
|
|
29
|
+
export function sdnoise3(derivatives: number[] | Float32Array | Float64Array, x: number, y: number, z: number): number;
|
|
30
|
+
/**
|
|
31
|
+
* 3D simplex noise and its analytic gradient, with packed coordinates.
|
|
32
|
+
* Writes [noise, dx, dy, dz] at out_offset and returns nothing. Coordinates
|
|
33
|
+
* are read before output stores, so input and output may overlap.
|
|
34
|
+
*
|
|
35
|
+
* @param {number[]|Float32Array|Float64Array} out
|
|
36
|
+
* @param {number} out_offset
|
|
37
|
+
* @param {ArrayLike<number>} position
|
|
38
|
+
* @param {number} position_offset
|
|
39
|
+
* @returns {void}
|
|
40
|
+
*/
|
|
41
|
+
export function sdnoise3_array(out: number[] | Float32Array | Float64Array, out_offset: number, position: ArrayLike<number>, position_offset: number): void;
|
|
31
42
|
/**
|
|
32
43
|
* 4D simplex noise with derivatives.
|
|
33
44
|
* If the last four arguments are not null, the analytic derivative
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdnoise.d.ts","sourceRoot":"","sources":["../../../../../src/core/math/noise/sdnoise.js"],"names":[],"mappings":"AA6LA;;;;;;;GAOG;AACH,sCAHW,MAAM,EAAE,KADR,MAAM,GAEJ,MAAM,CAsDlB;AAUD;;;;;;;;GAQG;AACH,sCAHW,MAAM,EAAE,KAFR,MAAM,KACN,MAAM,GAEJ,MAAM,CAmIlB;
|
|
1
|
+
{"version":3,"file":"sdnoise.d.ts","sourceRoot":"","sources":["../../../../../src/core/math/noise/sdnoise.js"],"names":[],"mappings":"AA6LA;;;;;;;GAOG;AACH,sCAHW,MAAM,EAAE,KADR,MAAM,GAEJ,MAAM,CAsDlB;AAUD;;;;;;;;GAQG;AACH,sCAHW,MAAM,EAAE,KAFR,MAAM,KACN,MAAM,GAEJ,MAAM,CAmIlB;AAaD;;;;;;;;GAQG;AACH,sCANW,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,KAClC,MAAM,KACN,MAAM,KACN,MAAM,GACJ,MAAM,CAmBlB;AAED;;;;;;;;;;GAUG;AACH,oCANW,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,cAClC,MAAM,YACN,UAAU,MAAM,CAAC,mBACjB,MAAM,GACJ,IAAI,CAkPhB;AAMD;;;;;;;;;;GAUG;AACH,sCAPW,MAAM,EAAE,KACR,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,GACJ,MAAM,CAgSlB"}
|
|
@@ -404,18 +404,53 @@ export function sdnoise2(derivatives, x, y) {
|
|
|
404
404
|
const F3 = 0.3333333333333333;
|
|
405
405
|
const G3 = 0.16666666666666666;
|
|
406
406
|
|
|
407
|
+
const scalar_position = new Float64Array(3);
|
|
408
|
+
const scalar_noise_gradient = new Float64Array(4);
|
|
407
409
|
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
*
|
|
410
|
+
|
|
411
|
+
/** 3D simplex noise with its analytic gradient, written into derivatives[0..2].
|
|
412
|
+
* Scalar facade over {@link sdnoise3_array}; returns the noise value.
|
|
411
413
|
*
|
|
414
|
+
* @param {number[]|Float32Array|Float64Array} derivatives
|
|
412
415
|
* @param {number} x
|
|
413
416
|
* @param {number} y
|
|
414
417
|
* @param {number} z
|
|
415
|
-
* @param {number[]} derivatives
|
|
416
418
|
* @returns {number}
|
|
417
419
|
*/
|
|
418
420
|
export function sdnoise3(derivatives, x, y, z) {
|
|
421
|
+
scalar_position[0] = x;
|
|
422
|
+
scalar_position[1] = y;
|
|
423
|
+
scalar_position[2] = z;
|
|
424
|
+
sdnoise3_array(scalar_noise_gradient, 0, scalar_position, 0);
|
|
425
|
+
|
|
426
|
+
// A destination setter may start another sample and overwrite our scratch.
|
|
427
|
+
// Capture every lane before the first externally observable store.
|
|
428
|
+
const noise = scalar_noise_gradient[0];
|
|
429
|
+
const dx = scalar_noise_gradient[1];
|
|
430
|
+
const dy = scalar_noise_gradient[2];
|
|
431
|
+
const dz = scalar_noise_gradient[3];
|
|
432
|
+
|
|
433
|
+
derivatives[0] = dx;
|
|
434
|
+
derivatives[1] = dy;
|
|
435
|
+
derivatives[2] = dz;
|
|
436
|
+
return noise;
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
/**
|
|
440
|
+
* 3D simplex noise and its analytic gradient, with packed coordinates.
|
|
441
|
+
* Writes [noise, dx, dy, dz] at out_offset and returns nothing. Coordinates
|
|
442
|
+
* are read before output stores, so input and output may overlap.
|
|
443
|
+
*
|
|
444
|
+
* @param {number[]|Float32Array|Float64Array} out
|
|
445
|
+
* @param {number} out_offset
|
|
446
|
+
* @param {ArrayLike<number>} position
|
|
447
|
+
* @param {number} position_offset
|
|
448
|
+
* @returns {void}
|
|
449
|
+
*/
|
|
450
|
+
export function sdnoise3_array(out, out_offset, position, position_offset) {
|
|
451
|
+
const x = position[position_offset];
|
|
452
|
+
const y = position[position_offset + 1];
|
|
453
|
+
const z = position[position_offset + 2];
|
|
419
454
|
let n0, n1, n2, n3; /* Noise contributions from the four simplex corners */
|
|
420
455
|
let gx0, gy0, gz0, gx1, gy1, gz1; /* Gradients at simplex corners */
|
|
421
456
|
let gx2, gy2, gz2, gx3, gy3, gz3;
|
|
@@ -648,11 +683,10 @@ export function sdnoise3(derivatives, x, y, z) {
|
|
|
648
683
|
dnoise_dy *= 28.0;
|
|
649
684
|
dnoise_dz *= 28.0;
|
|
650
685
|
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
return noise;
|
|
686
|
+
out[out_offset] = noise;
|
|
687
|
+
out[out_offset + 1] = dnoise_dx;
|
|
688
|
+
out[out_offset + 2] = dnoise_dy;
|
|
689
|
+
out[out_offset + 3] = dnoise_dz;
|
|
656
690
|
}
|
|
657
691
|
|
|
658
692
|
// The skewing and unskewing factors are hairy again for the 4D case
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Finds the parameter 't' of the nearest point on a 1D Hermite spline
|
|
3
3
|
* function graph to a reference point. The curve is defined by (t, p(t)).
|
|
4
|
-
*
|
|
4
|
+
* Scalar facade over {@link spline3_hermite_nearest_point_array}.
|
|
5
5
|
*
|
|
6
6
|
* @param {number} ref_t - The 't' coordinate of the reference point.
|
|
7
7
|
* @param {number} ref_p - The 'p' coordinate of the reference point.
|
|
@@ -12,4 +12,19 @@
|
|
|
12
12
|
* @returns {number} The parameter 't' of the nearest point. This value is always in [0..1] range
|
|
13
13
|
*/
|
|
14
14
|
export function spline3_hermite_nearest_point(ref_t: number, ref_p: number, p0: number, p1: number, m0: number, m1: number): number;
|
|
15
|
+
/**
|
|
16
|
+
* Finds the nearest parameter on a 1D Hermite spline using packed inputs and
|
|
17
|
+
* writes it into `out[out_offset]`. The reference is `[ref_t, ref_p]` and the
|
|
18
|
+
* spline is `[p0, p1, m0, m1]`. All inputs are read before the output store,
|
|
19
|
+
* so the destination may overlap either input.
|
|
20
|
+
*
|
|
21
|
+
* @param {number[]|Float32Array|Float64Array} out
|
|
22
|
+
* @param {number} out_offset
|
|
23
|
+
* @param {ArrayLike<number>} reference
|
|
24
|
+
* @param {number} reference_offset
|
|
25
|
+
* @param {ArrayLike<number>} spline
|
|
26
|
+
* @param {number} spline_offset
|
|
27
|
+
* @returns {void}
|
|
28
|
+
*/
|
|
29
|
+
export function spline3_hermite_nearest_point_array(out: number[] | Float32Array | Float64Array, out_offset: number, reference: ArrayLike<number>, reference_offset: number, spline: ArrayLike<number>, spline_offset: number): void;
|
|
15
30
|
//# sourceMappingURL=spline3_hermite_nearest_point.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spline3_hermite_nearest_point.d.ts","sourceRoot":"","sources":["../../../../../src/core/math/spline/spline3_hermite_nearest_point.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"spline3_hermite_nearest_point.d.ts","sourceRoot":"","sources":["../../../../../src/core/math/spline/spline3_hermite_nearest_point.js"],"names":[],"mappings":"AA6BA;;;;;;;;;;;;GAYG;AACH,qDARW,MAAM,SACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,GACJ,MAAM,CAgBlB;AAED;;;;;;;;;;;;;GAaG;AACH,yDARW,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,cAClC,MAAM,aACN,UAAU,MAAM,CAAC,oBACjB,MAAM,UACN,UAAU,MAAM,CAAC,iBACjB,MAAM,GACJ,IAAI,CAgGhB"}
|
|
@@ -20,13 +20,17 @@ function polyval(p, t, size) {
|
|
|
20
20
|
const quintic_coeffs = new Float32Array(6);
|
|
21
21
|
const quartic_coeffs = new Float32Array(5);
|
|
22
22
|
|
|
23
|
+
const scalar_reference = new Float64Array(2);
|
|
24
|
+
const scalar_spline = new Float64Array(4);
|
|
25
|
+
const scalar_result = new Float64Array(1);
|
|
26
|
+
|
|
23
27
|
const NEWTON_STEPS = 3;
|
|
24
28
|
const START_ROOT_COUNT = 5;
|
|
25
29
|
|
|
26
30
|
/**
|
|
27
31
|
* Finds the parameter 't' of the nearest point on a 1D Hermite spline
|
|
28
32
|
* function graph to a reference point. The curve is defined by (t, p(t)).
|
|
29
|
-
*
|
|
33
|
+
* Scalar facade over {@link spline3_hermite_nearest_point_array}.
|
|
30
34
|
*
|
|
31
35
|
* @param {number} ref_t - The 't' coordinate of the reference point.
|
|
32
36
|
* @param {number} ref_p - The 'p' coordinate of the reference point.
|
|
@@ -40,6 +44,43 @@ export function spline3_hermite_nearest_point(
|
|
|
40
44
|
ref_t, ref_p,
|
|
41
45
|
p0, p1, m0, m1
|
|
42
46
|
) {
|
|
47
|
+
scalar_reference[0] = ref_t;
|
|
48
|
+
scalar_reference[1] = ref_p;
|
|
49
|
+
scalar_spline[0] = p0;
|
|
50
|
+
scalar_spline[1] = p1;
|
|
51
|
+
scalar_spline[2] = m0;
|
|
52
|
+
scalar_spline[3] = m1;
|
|
53
|
+
|
|
54
|
+
spline3_hermite_nearest_point_array(scalar_result, 0, scalar_reference, 0, scalar_spline, 0);
|
|
55
|
+
|
|
56
|
+
return scalar_result[0];
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Finds the nearest parameter on a 1D Hermite spline using packed inputs and
|
|
61
|
+
* writes it into `out[out_offset]`. The reference is `[ref_t, ref_p]` and the
|
|
62
|
+
* spline is `[p0, p1, m0, m1]`. All inputs are read before the output store,
|
|
63
|
+
* so the destination may overlap either input.
|
|
64
|
+
*
|
|
65
|
+
* @param {number[]|Float32Array|Float64Array} out
|
|
66
|
+
* @param {number} out_offset
|
|
67
|
+
* @param {ArrayLike<number>} reference
|
|
68
|
+
* @param {number} reference_offset
|
|
69
|
+
* @param {ArrayLike<number>} spline
|
|
70
|
+
* @param {number} spline_offset
|
|
71
|
+
* @returns {void}
|
|
72
|
+
*/
|
|
73
|
+
export function spline3_hermite_nearest_point_array(
|
|
74
|
+
out, out_offset,
|
|
75
|
+
reference, reference_offset,
|
|
76
|
+
spline, spline_offset
|
|
77
|
+
) {
|
|
78
|
+
const ref_t = reference[reference_offset];
|
|
79
|
+
const ref_p = reference[reference_offset + 1];
|
|
80
|
+
const p0 = spline[spline_offset];
|
|
81
|
+
const p1 = spline[spline_offset + 1];
|
|
82
|
+
const m0 = spline[spline_offset + 2];
|
|
83
|
+
const m1 = spline[spline_offset + 3];
|
|
43
84
|
|
|
44
85
|
// 1. Calculate polynomial coefficients A, B, C for p(t)
|
|
45
86
|
const A = 2 * p0 - 2 * p1 + m0 + m1;
|
|
@@ -122,5 +163,5 @@ export function spline3_hermite_nearest_point(
|
|
|
122
163
|
}
|
|
123
164
|
}
|
|
124
165
|
|
|
125
|
-
|
|
126
|
-
}
|
|
166
|
+
out[out_offset] = best_t;
|
|
167
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Engine.d.ts","sourceRoot":"","sources":["../../../src/engine/Engine.js"],"names":[],"mappings":";6BAqCa,OAAO,8BAA8B,EAAE,cAAc;AAwClE;IAiGI;;;;;;;;;OASG;IACH,sBARW,cAAc;QAEU,aAAa,GAArC,aAAa;QACK,cAAc,GAAhC,OAAO;QACW,WAAW,GAA7B,OAAO;QACW,KAAK,GAAvB,OAAO;OAiPjB;IAtSD;;;OAGG;IACH,UAFU,cAAc,GAAC,IAAI,CAEb;IAEhB;;;OAGG;IACH,OAFU,WAAW,GAAC,IAAI,CAEb;IAEb,qBAA4B;IAE5B;;;;;;;;;OASG;IACH,0BAFU,uBAAuB,CAEe;IAEhD;;;OAGG;IACH,kBAFU,mBAAmB,CAEO;IAEpC;;;;OAIG;IACH,iBAFU,MAAM,CAEM;IAEtB;;;;OAIG;IACH,mBAFU,kBAAkB,CAEa;IAoBrC;;;OAGG;IACH,UAFU,cAAc,CAEA;IAKxB;;;OAGG;IACH,aAFU,gBAAgB,CAEe;IAGzC,yCAAkE;IAK9D,6BAAkC;IAMtC;;;OAGG;IACH,cAFU,aAAa,MAAM,CAAC,CAK5B;IAEF,8CAiCE;IAgCF;;;OAGG;IACH,SAFU,WAAW,CAEoB;IAEzC;;;OAGG;IACH,oCAA0C;IAE1C;;;OAGG;IACH,sCAFU,2BAA2B,CAE+B;IAEpE,yBAAoC;IAGpC;;OAEG;IACH,aAAkB;IAElB;;;OAGG;IACH,SAFU,OAAO,CAEwB;IAGzC,2BAAsC;IAuCtC;;;OAGG;IACH,KAFU,SAAS,CAEO;IAE1B;;;OAGG;IACH,uBAFU,YAAY,CAEqD;IAI3E;;;;;MAKC;IA8BD;;;OAGG;IACH,kBAFU,OAAO,CAEW;IAwIhC,wBAgCC;IApBG,oBAAwB;IAsB5B,2BA8CC;IAED,oBAiBC;IAED;;;OAGG;IACH,+CAUC;IAED,eAkDC;IAED;;;OAGG;IACH,
|
|
1
|
+
{"version":3,"file":"Engine.d.ts","sourceRoot":"","sources":["../../../src/engine/Engine.js"],"names":[],"mappings":";6BAqCa,OAAO,8BAA8B,EAAE,cAAc;AAwClE;IAiGI;;;;;;;;;OASG;IACH,sBARW,cAAc;QAEU,aAAa,GAArC,aAAa;QACK,cAAc,GAAhC,OAAO;QACW,WAAW,GAA7B,OAAO;QACW,KAAK,GAAvB,OAAO;OAiPjB;IAtSD;;;OAGG;IACH,UAFU,cAAc,GAAC,IAAI,CAEb;IAEhB;;;OAGG;IACH,OAFU,WAAW,GAAC,IAAI,CAEb;IAEb,qBAA4B;IAE5B;;;;;;;;;OASG;IACH,0BAFU,uBAAuB,CAEe;IAEhD;;;OAGG;IACH,kBAFU,mBAAmB,CAEO;IAEpC;;;;OAIG;IACH,iBAFU,MAAM,CAEM;IAEtB;;;;OAIG;IACH,mBAFU,kBAAkB,CAEa;IAoBrC;;;OAGG;IACH,UAFU,cAAc,CAEA;IAKxB;;;OAGG;IACH,aAFU,gBAAgB,CAEe;IAGzC,yCAAkE;IAK9D,6BAAkC;IAMtC;;;OAGG;IACH,cAFU,aAAa,MAAM,CAAC,CAK5B;IAEF,8CAiCE;IAgCF;;;OAGG;IACH,SAFU,WAAW,CAEoB;IAEzC;;;OAGG;IACH,oCAA0C;IAE1C;;;OAGG;IACH,sCAFU,2BAA2B,CAE+B;IAEpE,yBAAoC;IAGpC;;OAEG;IACH,aAAkB;IAElB;;;OAGG;IACH,SAFU,OAAO,CAEwB;IAGzC,2BAAsC;IAuCtC;;;OAGG;IACH,KAFU,SAAS,CAEO;IAE1B;;;OAGG;IACH,uBAFU,YAAY,CAEqD;IAI3E;;;;;MAKC;IA8BD;;;OAGG;IACH,kBAFU,OAAO,CAEW;IAwIhC,wBAgCC;IApBG,oBAAwB;IAsB5B,2BA8CC;IAED,oBAiBC;IAED;;;OAGG;IACH,+CAUC;IAED,eAkDC;IAED;;;OAGG;IACH,sBA2GC;IAqBD;;OAEG;IACH,sBAgEC;IAED,aAEC;IAED;;OAEG;IACH,4BAOC;IAIL;;;OAGG;IACH,mBAFU,OAAO,CAEQ;;CAPxB;+BAt5B8B,+BAA+B;wBAWtC,wBAAwB;0BArBtB,0CAA0C;wCAeN,iDAAiD;oCAG3E,iCAAiC;mBAElD,wBAAwB;+BAtBZ,gDAAgD;iCAO9C,+CAA+C;8BAGlD,wBAAwB;6BALzB,yBAAyB;uCAIf,6DAA6D;4BAUxE,0BAA0B;+BArBvB,iCAAiC;4CAapB,qDAAqD;AAgBjG;;GAEG;AAGH;IACI,gDAA2D;IAC3D,0BAAkC;IAClC,iCAAyC;CAC5C;6BAvC4B,sCAAsC;sBA4B7C,mBAAmB;yBAJhB,yBAAyB;8BALpB,kCAAkC;2BADrC,mCAAmC;8BAFhC,kCAAkC;8BAClC,kCAAkC;sBAb1C,+BAA+B;+BAKtB,qCAAqC;4BAPxC,kCAAkC;oBAH1C,yBAAyB"}
|
package/src/engine/Engine.js
CHANGED
|
@@ -770,12 +770,14 @@ class Engine {
|
|
|
770
770
|
? knowledge.load(this.assetManager, this.executor)
|
|
771
771
|
: Promise.resolve();
|
|
772
772
|
|
|
773
|
-
|
|
773
|
+
const startupPromises = [
|
|
774
774
|
soundStarted.then(promiseEntityManager),
|
|
775
775
|
knowledgeLoaded,
|
|
776
776
|
this.gui.startup(this),
|
|
777
777
|
this.plugins.startup()
|
|
778
|
-
]
|
|
778
|
+
];
|
|
779
|
+
|
|
780
|
+
return Promise.all(startupPromises).then(async () => {
|
|
779
781
|
|
|
780
782
|
this.#last_frame_timestamp = performance.now();
|
|
781
783
|
|
|
@@ -804,6 +806,8 @@ class Engine {
|
|
|
804
806
|
logger.info('engine started');
|
|
805
807
|
}, async (e) => {
|
|
806
808
|
logger.error(`Engine Failed to start: ${e}`);
|
|
809
|
+
// Each branch must settle before its resources can safely be released.
|
|
810
|
+
await Promise.allSettled(startupPromises);
|
|
807
811
|
|
|
808
812
|
// Unwind what did come up. Before the Promise.all this method has already acquired the
|
|
809
813
|
// GPU device, started the asset manager, subscribed the sound engine to pointer and
|
|
@@ -119,12 +119,15 @@ export class AnimationCurve implements Iterable<Keyframe> {
|
|
|
119
119
|
* Returns index of a key that is just before or at the time specified.
|
|
120
120
|
* Useful for insertion and evaluation logic.
|
|
121
121
|
* Note: if time is past the end of last key - index of the last key will be returned instead
|
|
122
|
+
* With assertions stripped, a NaN time is at or after no key, so like a time before the first key it returns 0.
|
|
122
123
|
* @param {number} time
|
|
123
124
|
* @returns {number} index of the key
|
|
124
125
|
*/
|
|
125
126
|
getKeyIndexLow(time: number): number;
|
|
126
127
|
/**
|
|
127
128
|
* Evaluate interpolated value across the curve at a given time.
|
|
129
|
+
* On a curve of two or more keys, a NaN time fails an assertion during development; with assertions stripped it
|
|
130
|
+
* evaluates to NaN, or to the first key's value if the first two keys share a time.
|
|
128
131
|
* @param {number} time time in seconds
|
|
129
132
|
* @return {number} value at the specified time
|
|
130
133
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnimationCurve.d.ts","sourceRoot":"","sources":["../../../../../src/engine/animation/curve/AnimationCurve.js"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,gDANwB,QAAQ;
|
|
1
|
+
{"version":3,"file":"AnimationCurve.d.ts","sourceRoot":"","sources":["../../../../../src/engine/animation/curve/AnimationCurve.js"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,gDANwB,QAAQ;IA4Z5B;;;;OAIG;IACH,kBAHW,QAAQ,EAAE,GACR,cAAc,CAQ1B;IAED;;;;;;;;;OASG;IACH,6BANW,MAAM,eACN,MAAM,YACN,MAAM,aACN,MAAM,GACL,cAAc,CAUzB;IAED;;;;;;OAMG;IACH,4BALW,MAAM,YACN,MAAM,UACN,MAAM,GACL,cAAc,CAOzB;IAED;;;;;;;OAOG;IACH,0BANW,MAAM,eACN,MAAM,YACN,MAAM,aACN,MAAM,GACL,cAAc,CAezB;IAzdD;;;;;OAKG;IACH,eAFU,QAAQ,EAAE,CAEV;IAEV;;;;;OAKG;IACH,SAHW,QAAQ,GACN,MAAM,CAuClB;IAED;;;OAGG;IACH,cAFW,QAAQ,EAAE,QAUpB;IAED;;;;OAIG;IACH,YAHW,QAAQ,GACN,OAAO,CAYnB;IAED;;OAEG;IACH,cAEC;IAGD;;;OAGG;IACH,WAFY,OAAO,CAIlB;IAED;;;OAGG;IACH,qBAEC;IAED;;;;OAIG;IACH,yBAUC;IAED;;;;OAIG;IACH,uBAUC;IAED;;;;OAIG;IACH,uBAcC;IAED;;;;;;;OAOG;IACH,qBAHW,MAAM,GACJ,MAAM,CAqDlB;IAED;;;;;;OAMG;IACH,eAHW,MAAM,GACL,MAAM,CAoCjB;IAED;;;;OAIG;IACH,qBAFW,MAAM,QAqChB;IAED;;;;OAIG;IACH,sBAHW,MAAM,UACN,MAAM,QAIhB;IAED;;OAEG;IACH,yBAQC;IAGD;;;OAGG;IACH,YAFW,cAAc,QAIxB;IAED;;;OAGG;IACH,SAFY,cAAc,CAQzB;IAED;;;;OAIG;IACH,cAHW,cAAc,GACb,OAAO,CAIlB;IAED;;;OAGG;IACH,QAFY,MAAM,CAIjB;IAED;;MAIC;IAED;;aAkBC;IAoFL;;;;OAIG;IACH,2BAFU,OAAO,CAEwB;IAGzC;;;OAGG;IACH,mBAA+B;IA9F3B,wDAQC;CAuEJ;yBAtfwB,eAAe"}
|
|
@@ -200,6 +200,7 @@ export class AnimationCurve {
|
|
|
200
200
|
* Returns index of a key that is just before or at the time specified.
|
|
201
201
|
* Useful for insertion and evaluation logic.
|
|
202
202
|
* Note: if time is past the end of last key - index of the last key will be returned instead
|
|
203
|
+
* With assertions stripped, a NaN time is at or after no key, so like a time before the first key it returns 0.
|
|
203
204
|
* @param {number} time
|
|
204
205
|
* @returns {number} index of the key
|
|
205
206
|
*/
|
|
@@ -239,7 +240,9 @@ export class AnimationCurve {
|
|
|
239
240
|
if (key_time <= time) {
|
|
240
241
|
found_index = pivot;
|
|
241
242
|
i0 = pivot + 1;
|
|
242
|
-
} else
|
|
243
|
+
} else {
|
|
244
|
+
// also where a NaN on either side lands, as it compares false both ways:
|
|
245
|
+
// every iteration has to narrow the range, or the search never ends
|
|
243
246
|
i1 = pivot - 1;
|
|
244
247
|
}
|
|
245
248
|
}
|
|
@@ -256,6 +259,8 @@ export class AnimationCurve {
|
|
|
256
259
|
|
|
257
260
|
/**
|
|
258
261
|
* Evaluate interpolated value across the curve at a given time.
|
|
262
|
+
* On a curve of two or more keys, a NaN time fails an assertion during development; with assertions stripped it
|
|
263
|
+
* evaluates to NaN, or to the first key's value if the first two keys share a time.
|
|
259
264
|
* @param {number} time time in seconds
|
|
260
265
|
* @return {number} value at the specified time
|
|
261
266
|
*/
|
|
@@ -134,6 +134,15 @@ export class FirstPersonPlayerController {
|
|
|
134
134
|
upFactor: number;
|
|
135
135
|
nearWallMaxDistance: number;
|
|
136
136
|
};
|
|
137
|
+
scrambleUp: {
|
|
138
|
+
baseJumpForce: number;
|
|
139
|
+
momentumForcePerSpeed: number;
|
|
140
|
+
maxJumpForce: number;
|
|
141
|
+
decel: number;
|
|
142
|
+
hugSpeed: number;
|
|
143
|
+
maxDuration: number;
|
|
144
|
+
kickOutwardImpulse: number;
|
|
145
|
+
};
|
|
137
146
|
slide: {
|
|
138
147
|
minEntrySpeed: number;
|
|
139
148
|
endSpeed: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FirstPersonPlayerController.d.ts","sourceRoot":"","sources":["../../../../../src/engine/control/first-person/FirstPersonPlayerController.js"],"names":[],"mappings":"AA8HA;;;;;;;;;;GAUG;AACH;IACI,wBAAgD;IAEhD,0CAAiD;IACjD,0BAAiC;IACjC,wBAA+B;IAC/B,sBAA6B;IAC7B,4BAAmC;IAEnC;;;;;;OAMG;IACH,SAFU,UAAU,CAEO;IAE3B;;;;;OAKG;IACH,WAFU,UAAU,CAES;IAE7B;;;;;;OAMG;IACH,WAFU,MAAM,CAED;IAEf;;;;;;;;;;;;;;;qCA7FA,+EAA+E
|
|
1
|
+
{"version":3,"file":"FirstPersonPlayerController.d.ts","sourceRoot":"","sources":["../../../../../src/engine/control/first-person/FirstPersonPlayerController.js"],"names":[],"mappings":"AA8HA;;;;;;;;;;GAUG;AACH;IACI,wBAAgD;IAEhD,0CAAiD;IACjD,0BAAiC;IACjC,wBAA+B;IAC/B,sBAA6B;IAC7B,4BAAmC;IAEnC;;;;;;OAMG;IACH,SAFU,UAAU,CAEO;IAE3B;;;;;OAKG;IACH,WAFU,UAAU,CAES;IAE7B;;;;;;OAMG;IACH,WAFU,MAAM,CAED;IAEf;;;;;;;;;;;;;;;qCA7FA,+EAA+E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA+F9E;IAED,0BAIC;IAED;;OAEG;IACH,YAFW,2BAA2B,QAKrC;IAED,qCAIC;IAED,4BAGC;IAED,eAGC;CACJ;;;;;kDAzMiD,wCAAwC;AAK1F;;;;;;;;GAQG;AACH;IACI,oEAAoE;IACpE,MADyD,OAAO,CACvC;IAEzB;;;;OAIG;IACH,MAFU,OAAO,CAEQ;IAEzB,mEAAmE;IACnE,MADwD,OAAO,CAClD;IAEb,0EAA0E;IAC1E,QAD+D,OAAO,CACvD;IAEf,qEAAqE;IACrE,QAD0D,OAAO,CAClD;CAClB;AAED;;;GAGG;AACH;IACI,kBAAgB;IAChB,0BAAsB;IAEtB,4EAA4E;IAC5E,sBAAoC;IACpC,gBAAkB;IAElB,cAAU;IACV,4DAA4D;IAC5D,wBAAoB;IACpB,yEAAyE;IACzE,uBAAgD;IAEhD,sBAAkB;IAClB,qBAAiB;IACjB,qBAAiB;IAEjB,4BAAwB;IACxB,4BAA2B;IAC3B,2BAA0B;IAC1B,2EAA2E;IAC3E,qBAAoB;IAEpB,iBAAa;IACb,oBAAgB;IAChB,qBAAiB;IACjB,yBAAqB;IAErB,oBAAgB;IAChB,kBAAc;IACd,kDAAkD;IAClD,iBAAa;IAEb,kBAAiB;IAEjB,+EAA+E;IAC/E,uBAAsB;IACtB,6EAA6E;IAC7E,sBAAqB;IAErB;;;;;;;OAOG;IACH,SAFU,MAAM,CAEmB;IAEnC,oBAAgB;CACnB;gCAzFkF,2BAA2B;AA2F9G;;;GAGG;AACH;IACI,uDAAuD;IACvD,mBAA0B;IAC1B,yEAAyE;IACzE,oBAA2B;IAC3B,kBAAkB;IAClB,mBAA0B;IAC1B,6BAA6B;IAC7B,sBAA6B;IAC7B,iDAAiD;IACjD,eAAsB;IACtB,sBAA6B;IAC7B,qBAA4B;IAC5B,sBAA6B;IAC7B,qBAA4B;IAC5B,2EAA2E;IAC3E,mBAA0B;IAC1B,2EAA2E;IAC3E,oBAA2B;IAC3B,6DAA6D;IAC7D,oBAA2B;IAC3B,+DAA+D;IAC/D,uBAA8B;CACjC;2BAvH0B,yBAAyB;2BAFzB,2BAA2B;uCAG6B,2BAA2B;0CAA3B,2BAA2B;oBAL1F,+BAA+B;oBAC/B,+BAA+B;mBAFhC,uCAAuC"}
|