@pibbl/core 0.0.1
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/LICENSE.txt +19 -0
- package/README.md +76 -0
- package/THIRD_PARTY_NOTICES.txt +205 -0
- package/dist/features/particles/index.d.ts +7 -0
- package/dist/features/particles/index.js +26 -0
- package/dist/features/particles/index.js.map +7 -0
- package/dist/features/particles/index.mjs +1 -0
- package/dist/features/particles/lib/canvas/birth-ledger.d.ts +69 -0
- package/dist/features/particles/lib/canvas/birth-ledger.js +752 -0
- package/dist/features/particles/lib/canvas/birth-ledger.js.map +7 -0
- package/dist/features/particles/lib/canvas/component.d.ts +14 -0
- package/dist/features/particles/lib/canvas/component.js +249 -0
- package/dist/features/particles/lib/canvas/component.js.map +7 -0
- package/dist/features/particles/lib/canvas/executor.d.ts +31 -0
- package/dist/features/particles/lib/canvas/executor.js +537 -0
- package/dist/features/particles/lib/canvas/executor.js.map +7 -0
- package/dist/features/particles/lib/canvas/primitive.d.ts +14 -0
- package/dist/features/particles/lib/canvas/primitive.js +50 -0
- package/dist/features/particles/lib/canvas/primitive.js.map +7 -0
- package/dist/features/particles/lib/canvas/raster-cache.d.ts +13 -0
- package/dist/features/particles/lib/canvas/raster-cache.js +106 -0
- package/dist/features/particles/lib/canvas/raster-cache.js.map +7 -0
- package/dist/features/particles/lib/color.d.ts +7 -0
- package/dist/features/particles/lib/color.js +159 -0
- package/dist/features/particles/lib/color.js.map +7 -0
- package/dist/features/particles/lib/compiler.d.ts +134 -0
- package/dist/features/particles/lib/compiler.js +443 -0
- package/dist/features/particles/lib/compiler.js.map +7 -0
- package/dist/features/particles/lib/curve.d.ts +19 -0
- package/dist/features/particles/lib/curve.js +129 -0
- package/dist/features/particles/lib/curve.js.map +7 -0
- package/dist/features/particles/lib/definition-records.d.ts +58 -0
- package/dist/features/particles/lib/definition-records.js +500 -0
- package/dist/features/particles/lib/definition-records.js.map +7 -0
- package/dist/features/particles/lib/definition.d.ts +18 -0
- package/dist/features/particles/lib/definition.js +602 -0
- package/dist/features/particles/lib/definition.js.map +7 -0
- package/dist/features/particles/lib/emission.d.ts +54 -0
- package/dist/features/particles/lib/emission.js +184 -0
- package/dist/features/particles/lib/emission.js.map +7 -0
- package/dist/features/particles/lib/flow/field.d.ts +81 -0
- package/dist/features/particles/lib/flow/field.js +585 -0
- package/dist/features/particles/lib/flow/field.js.map +7 -0
- package/dist/features/particles/lib/flow/hook.d.ts +158 -0
- package/dist/features/particles/lib/flow/hook.js +215 -0
- package/dist/features/particles/lib/flow/hook.js.map +7 -0
- package/dist/features/particles/lib/flow/population.d.ts +25 -0
- package/dist/features/particles/lib/flow/population.js +104 -0
- package/dist/features/particles/lib/flow/population.js.map +7 -0
- package/dist/features/particles/lib/particle.d.ts +113 -0
- package/dist/features/particles/lib/particle.js +192 -0
- package/dist/features/particles/lib/particle.js.map +7 -0
- package/dist/features/particles/lib/random.d.ts +16 -0
- package/dist/features/particles/lib/random.js +61 -0
- package/dist/features/particles/lib/random.js.map +7 -0
- package/dist/features/particles/lib/sample.d.ts +32 -0
- package/dist/features/particles/lib/sample.js +397 -0
- package/dist/features/particles/lib/sample.js.map +7 -0
- package/dist/features/particles/lib/signal-inputs.d.ts +6 -0
- package/dist/features/particles/lib/signal-inputs.js +41 -0
- package/dist/features/particles/lib/signal-inputs.js.map +7 -0
- package/dist/features/particles/lib/system/binding.d.ts +59 -0
- package/dist/features/particles/lib/system/binding.js +122 -0
- package/dist/features/particles/lib/system/binding.js.map +7 -0
- package/dist/features/particles/lib/system/controller.d.ts +58 -0
- package/dist/features/particles/lib/system/controller.js +1446 -0
- package/dist/features/particles/lib/system/controller.js.map +7 -0
- package/dist/features/particles/lib/system/hook.d.ts +13 -0
- package/dist/features/particles/lib/system/hook.js +52 -0
- package/dist/features/particles/lib/system/hook.js.map +7 -0
- package/dist/features/particles/lib/system/ownership.d.ts +26 -0
- package/dist/features/particles/lib/system/ownership.js +128 -0
- package/dist/features/particles/lib/system/ownership.js.map +7 -0
- package/dist/features/particles/lib/types.d.ts +983 -0
- package/dist/features/physics/2d-geometry.d.ts +216 -0
- package/dist/features/physics/2d-geometry.js +59 -0
- package/dist/features/physics/2d-geometry.js.map +7 -0
- package/dist/features/physics/2d-geometry.mjs +1 -0
- package/dist/features/physics/2d-testing.d.ts +80 -0
- package/dist/features/physics/2d-testing.js +141 -0
- package/dist/features/physics/2d-testing.js.map +7 -0
- package/dist/features/physics/2d-testing.mjs +1 -0
- package/dist/features/physics/2d.d.ts +165 -0
- package/dist/features/physics/2d.js +119 -0
- package/dist/features/physics/2d.js.map +7 -0
- package/dist/features/physics/2d.mjs +1 -0
- package/dist/features/physics/lib/2d/canvas/components.d.ts +46 -0
- package/dist/features/physics/lib/2d/canvas/components.js +212 -0
- package/dist/features/physics/lib/2d/canvas/components.js.map +7 -0
- package/dist/features/physics/lib/2d/canvas/custom.d.ts +24 -0
- package/dist/features/physics/lib/2d/canvas/custom.js +45 -0
- package/dist/features/physics/lib/2d/canvas/custom.js.map +7 -0
- package/dist/features/physics/lib/2d/canvas/debug.d.ts +23 -0
- package/dist/features/physics/lib/2d/canvas/debug.js +53 -0
- package/dist/features/physics/lib/2d/canvas/debug.js.map +7 -0
- package/dist/features/physics/lib/2d/canvas/inference.d.ts +9 -0
- package/dist/features/physics/lib/2d/canvas/inference.js +704 -0
- package/dist/features/physics/lib/2d/canvas/inference.js.map +7 -0
- package/dist/features/physics/lib/2d/canvas/presentation.d.ts +11 -0
- package/dist/features/physics/lib/2d/canvas/presentation.js +169 -0
- package/dist/features/physics/lib/2d/canvas/presentation.js.map +7 -0
- package/dist/features/physics/lib/2d/collision/analytic.d.ts +15 -0
- package/dist/features/physics/lib/2d/collision/analytic.js +151 -0
- package/dist/features/physics/lib/2d/collision/analytic.js.map +7 -0
- package/dist/features/physics/lib/2d/collision/casts.d.ts +37 -0
- package/dist/features/physics/lib/2d/collision/casts.js +631 -0
- package/dist/features/physics/lib/2d/collision/casts.js.map +7 -0
- package/dist/features/physics/lib/2d/collision/epa.d.ts +21 -0
- package/dist/features/physics/lib/2d/collision/epa.js +102 -0
- package/dist/features/physics/lib/2d/collision/epa.js.map +7 -0
- package/dist/features/physics/lib/2d/collision/gjk.d.ts +28 -0
- package/dist/features/physics/lib/2d/collision/gjk.js +233 -0
- package/dist/features/physics/lib/2d/collision/gjk.js.map +7 -0
- package/dist/features/physics/lib/2d/collision/manifold.d.ts +35 -0
- package/dist/features/physics/lib/2d/collision/manifold.js +238 -0
- package/dist/features/physics/lib/2d/collision/manifold.js.map +7 -0
- package/dist/features/physics/lib/2d/collision/pairs.d.ts +10 -0
- package/dist/features/physics/lib/2d/collision/pairs.js +285 -0
- package/dist/features/physics/lib/2d/collision/pairs.js.map +7 -0
- package/dist/features/physics/lib/2d/collision/support.d.ts +20 -0
- package/dist/features/physics/lib/2d/collision/support.js +155 -0
- package/dist/features/physics/lib/2d/collision/support.js.map +7 -0
- package/dist/features/physics/lib/2d/inspection-types.d.ts +159 -0
- package/dist/features/physics/lib/2d/math.d.ts +27 -0
- package/dist/features/physics/lib/2d/math.js +314 -0
- package/dist/features/physics/lib/2d/math.js.map +7 -0
- package/dist/features/physics/lib/2d/numeric-policy.d.ts +24 -0
- package/dist/features/physics/lib/2d/numeric-policy.js +51 -0
- package/dist/features/physics/lib/2d/numeric-policy.js.map +7 -0
- package/dist/features/physics/lib/2d/runtime/body-handle.d.ts +148 -0
- package/dist/features/physics/lib/2d/runtime/body-handle.js +305 -0
- package/dist/features/physics/lib/2d/runtime/body-handle.js.map +7 -0
- package/dist/features/physics/lib/2d/runtime/context.d.ts +9 -0
- package/dist/features/physics/lib/2d/runtime/context.js +57 -0
- package/dist/features/physics/lib/2d/runtime/context.js.map +7 -0
- package/dist/features/physics/lib/2d/runtime/controller.d.ts +106 -0
- package/dist/features/physics/lib/2d/runtime/controller.js +1317 -0
- package/dist/features/physics/lib/2d/runtime/controller.js.map +7 -0
- package/dist/features/physics/lib/2d/runtime/descriptors.d.ts +153 -0
- package/dist/features/physics/lib/2d/runtime/descriptors.js +526 -0
- package/dist/features/physics/lib/2d/runtime/descriptors.js.map +7 -0
- package/dist/features/physics/lib/2d/runtime/events.d.ts +56 -0
- package/dist/features/physics/lib/2d/runtime/events.js +153 -0
- package/dist/features/physics/lib/2d/runtime/events.js.map +7 -0
- package/dist/features/physics/lib/2d/runtime/obstacles.d.ts +22 -0
- package/dist/features/physics/lib/2d/runtime/obstacles.js +192 -0
- package/dist/features/physics/lib/2d/runtime/obstacles.js.map +7 -0
- package/dist/features/physics/lib/2d/runtime/ownership.d.ts +41 -0
- package/dist/features/physics/lib/2d/runtime/ownership.js +46 -0
- package/dist/features/physics/lib/2d/runtime/ownership.js.map +7 -0
- package/dist/features/physics/lib/2d/runtime/trace.d.ts +32 -0
- package/dist/features/physics/lib/2d/runtime/trace.js +22 -0
- package/dist/features/physics/lib/2d/runtime/trace.js.map +7 -0
- package/dist/features/physics/lib/2d/runtime/world-component.d.ts +18 -0
- package/dist/features/physics/lib/2d/runtime/world-component.js +41 -0
- package/dist/features/physics/lib/2d/runtime/world-component.js.map +7 -0
- package/dist/features/physics/lib/2d/runtime/world-props.d.ts +16 -0
- package/dist/features/physics/lib/2d/shape-records.d.ts +60 -0
- package/dist/features/physics/lib/2d/shape-records.js +26 -0
- package/dist/features/physics/lib/2d/shape-records.js.map +7 -0
- package/dist/features/physics/lib/2d/shapes.d.ts +191 -0
- package/dist/features/physics/lib/2d/shapes.js +543 -0
- package/dist/features/physics/lib/2d/shapes.js.map +7 -0
- package/dist/features/physics/lib/2d/types.d.ts +713 -0
- package/dist/features/physics/lib/2d/types.js +1 -0
- package/dist/features/physics/lib/2d/types.js.map +7 -0
- package/dist/features/physics/lib/2d/world/broad-phase.d.ts +77 -0
- package/dist/features/physics/lib/2d/world/broad-phase.js +762 -0
- package/dist/features/physics/lib/2d/world/broad-phase.js.map +7 -0
- package/dist/features/physics/lib/2d/world/ccd.d.ts +19 -0
- package/dist/features/physics/lib/2d/world/ccd.js +265 -0
- package/dist/features/physics/lib/2d/world/ccd.js.map +7 -0
- package/dist/features/physics/lib/2d/world/contact-cache.d.ts +81 -0
- package/dist/features/physics/lib/2d/world/contact-cache.js +497 -0
- package/dist/features/physics/lib/2d/world/contact-cache.js.map +7 -0
- package/dist/features/physics/lib/2d/world/integrator.d.ts +11 -0
- package/dist/features/physics/lib/2d/world/integrator.js +99 -0
- package/dist/features/physics/lib/2d/world/integrator.js.map +7 -0
- package/dist/features/physics/lib/2d/world/queries.d.ts +62 -0
- package/dist/features/physics/lib/2d/world/queries.js +424 -0
- package/dist/features/physics/lib/2d/world/queries.js.map +7 -0
- package/dist/features/physics/lib/2d/world/rapier-engine.js +7054 -0
- package/dist/features/physics/lib/2d/world/rapier-engine.js.map +7 -0
- package/dist/features/physics/lib/2d/world/rapier.d.ts +50 -0
- package/dist/features/physics/lib/2d/world/rapier.js +655 -0
- package/dist/features/physics/lib/2d/world/rapier.js.map +7 -0
- package/dist/features/physics/lib/2d/world/solver.d.ts +58 -0
- package/dist/features/physics/lib/2d/world/solver.js +660 -0
- package/dist/features/physics/lib/2d/world/solver.js.map +7 -0
- package/dist/features/physics/lib/2d/world/storage.d.ts +96 -0
- package/dist/features/physics/lib/2d/world/storage.js +371 -0
- package/dist/features/physics/lib/2d/world/storage.js.map +7 -0
- package/dist/features/physics/lib/2d/world/world.d.ts +265 -0
- package/dist/features/physics/lib/2d/world/world.js +1713 -0
- package/dist/features/physics/lib/2d/world/world.js.map +7 -0
- package/dist/features/physics/lib/shared/signal-inputs.d.ts +5 -0
- package/dist/features/physics/lib/shared/signal-inputs.js +20 -0
- package/dist/features/physics/lib/shared/signal-inputs.js.map +7 -0
- package/dist/features/physics/lib/shared/validation.d.ts +5 -0
- package/dist/features/physics/lib/shared/validation.js +48 -0
- package/dist/features/physics/lib/shared/validation.js.map +7 -0
- package/dist/features/sprites/formats/aseprite.js +23 -0
- package/dist/features/sprites/formats/aseprite.js.map +7 -0
- package/dist/features/sprites/formats/aseprite.mjs +1 -0
- package/dist/features/sprites/formats/texture-packer.js +14 -0
- package/dist/features/sprites/formats/texture-packer.js.map +7 -0
- package/dist/features/sprites/formats/texture-packer.mjs +1 -0
- package/dist/features/sprites/index.js +9 -0
- package/dist/features/sprites/index.js.map +7 -0
- package/dist/features/sprites/index.mjs +1 -0
- package/dist/features/sprites/loader.js +63 -0
- package/dist/features/sprites/loader.js.map +7 -0
- package/dist/features/sprites/model.js +64 -0
- package/dist/features/sprites/model.js.map +7 -0
- package/dist/features/sprites/sprite.js +31 -0
- package/dist/features/sprites/sprite.js.map +7 -0
- package/dist/features/textures/index.d.ts +22 -0
- package/dist/features/textures/index.js +31 -0
- package/dist/features/textures/index.js.map +7 -0
- package/dist/features/textures/index.mjs +1 -0
- package/dist/features/textures/lib/definitions.d.ts +117 -0
- package/dist/features/textures/lib/definitions.js +179 -0
- package/dist/features/textures/lib/definitions.js.map +7 -0
- package/dist/features/textures/lib/electric-boundary.d.ts +3 -0
- package/dist/features/textures/lib/electric-boundary.js +11 -0
- package/dist/features/textures/lib/electric-boundary.js.map +7 -0
- package/dist/features/textures/lib/electric-shared.d.ts +69 -0
- package/dist/features/textures/lib/electric-shared.js +43 -0
- package/dist/features/textures/lib/electric-shared.js.map +7 -0
- package/dist/features/textures/lib/electric-sources.d.ts +50 -0
- package/dist/features/textures/lib/electric-sources.js +43 -0
- package/dist/features/textures/lib/electric-sources.js.map +7 -0
- package/dist/features/textures/lib/lightning.d.ts +72 -0
- package/dist/features/textures/lib/lightning.js +139 -0
- package/dist/features/textures/lib/lightning.js.map +7 -0
- package/dist/features/textures/lib/material-field.d.ts +12 -0
- package/dist/features/textures/lib/material-field.js +31 -0
- package/dist/features/textures/lib/material-field.js.map +7 -0
- package/dist/features/textures/lib/palette.d.ts +45 -0
- package/dist/features/textures/lib/palette.js +52 -0
- package/dist/features/textures/lib/palette.js.map +7 -0
- package/dist/features/textures/lib/presentation.d.ts +54 -0
- package/dist/features/textures/lib/presentation.js +83 -0
- package/dist/features/textures/lib/presentation.js.map +7 -0
- package/dist/features/textures/lib/procedural-texture.d.ts +44 -0
- package/dist/features/textures/lib/procedural-texture.js +110 -0
- package/dist/features/textures/lib/procedural-texture.js.map +7 -0
- package/dist/features/textures/lib/rain-drops.d.ts +96 -0
- package/dist/features/textures/lib/rain-drops.js +322 -0
- package/dist/features/textures/lib/rain-drops.js.map +7 -0
- package/dist/features/textures/lib/reaction-diffusion.d.ts +67 -0
- package/dist/features/textures/lib/reaction-diffusion.js +210 -0
- package/dist/features/textures/lib/reaction-diffusion.js.map +7 -0
- package/dist/features/textures/lib/simulation.d.ts +16 -0
- package/dist/features/textures/lib/simulation.js +85 -0
- package/dist/features/textures/lib/simulation.js.map +7 -0
- package/dist/features/textures/lib/tendrils.d.ts +57 -0
- package/dist/features/textures/lib/tendrils.js +216 -0
- package/dist/features/textures/lib/tendrils.js.map +7 -0
- package/dist/features/textures/lib/wasm/cellular-bytes.d.ts +1 -0
- package/dist/features/textures/lib/wasm/cellular-bytes.js +5 -0
- package/dist/features/textures/lib/wasm/cellular-bytes.js.map +7 -0
- package/dist/features/textures/lib/wasm/electric.d.ts +88 -0
- package/dist/features/textures/lib/wasm/electric.js +299 -0
- package/dist/features/textures/lib/wasm/electric.js.map +7 -0
- package/dist/features/textures/lib/wasm/ink-bytes.d.ts +1 -0
- package/dist/features/textures/lib/wasm/ink-bytes.js +5 -0
- package/dist/features/textures/lib/wasm/ink-bytes.js.map +7 -0
- package/dist/features/textures/lib/wasm/lightning-bytes.d.ts +1 -0
- package/dist/features/textures/lib/wasm/lightning-bytes.js +5 -0
- package/dist/features/textures/lib/wasm/lightning-bytes.js.map +7 -0
- package/dist/features/textures/lib/wasm/marble-bytes.d.ts +1 -0
- package/dist/features/textures/lib/wasm/marble-bytes.js +5 -0
- package/dist/features/textures/lib/wasm/marble-bytes.js.map +7 -0
- package/dist/features/textures/lib/wasm/memory.d.ts +31 -0
- package/dist/features/textures/lib/wasm/memory.js +103 -0
- package/dist/features/textures/lib/wasm/memory.js.map +7 -0
- package/dist/features/textures/lib/wasm/paper-bytes.d.ts +1 -0
- package/dist/features/textures/lib/wasm/paper-bytes.js +5 -0
- package/dist/features/textures/lib/wasm/paper-bytes.js.map +7 -0
- package/dist/features/textures/lib/wasm/tendrils-bytes.d.ts +1 -0
- package/dist/features/textures/lib/wasm/tendrils-bytes.js +5 -0
- package/dist/features/textures/lib/wasm/tendrils-bytes.js.map +7 -0
- package/dist/features/textures/lib/wasm/water-surface-bytes.d.ts +1 -0
- package/dist/features/textures/lib/wasm/water-surface-bytes.js +5 -0
- package/dist/features/textures/lib/wasm/water-surface-bytes.js.map +7 -0
- package/dist/features/textures/lib/wasm/water-waves-bytes.d.ts +1 -0
- package/dist/features/textures/lib/wasm/water-waves-bytes.js +5 -0
- package/dist/features/textures/lib/wasm/water-waves-bytes.js.map +7 -0
- package/dist/features/textures/lib/water-surface.d.ts +92 -0
- package/dist/features/textures/lib/water-surface.js +378 -0
- package/dist/features/textures/lib/water-surface.js.map +7 -0
- package/dist/features/textures/lib/water-waves.d.ts +60 -0
- package/dist/features/textures/lib/water-waves.js +154 -0
- package/dist/features/textures/lib/water-waves.js.map +7 -0
- package/dist/features/viz/index.d.ts +28 -0
- package/dist/features/viz/index.js +45 -0
- package/dist/features/viz/index.js.map +7 -0
- package/dist/features/viz/index.mjs +1 -0
- package/dist/features/viz/lib/anchored-layout.d.ts +104 -0
- package/dist/features/viz/lib/anchored-layout.js +166 -0
- package/dist/features/viz/lib/anchored-layout.js.map +7 -0
- package/dist/features/viz/lib/axis.d.ts +10 -0
- package/dist/features/viz/lib/axis.js +116 -0
- package/dist/features/viz/lib/axis.js.map +7 -0
- package/dist/features/viz/lib/band-scale.d.ts +3 -0
- package/dist/features/viz/lib/band-scale.js +57 -0
- package/dist/features/viz/lib/band-scale.js.map +7 -0
- package/dist/features/viz/lib/bar-fill.d.ts +16 -0
- package/dist/features/viz/lib/bar-fill.js +53 -0
- package/dist/features/viz/lib/bar-fill.js.map +7 -0
- package/dist/features/viz/lib/bar-series.d.ts +150 -0
- package/dist/features/viz/lib/bar-series.js +152 -0
- package/dist/features/viz/lib/bar-series.js.map +7 -0
- package/dist/features/viz/lib/hover-card.d.ts +92 -0
- package/dist/features/viz/lib/hover-card.js +146 -0
- package/dist/features/viz/lib/hover-card.js.map +7 -0
- package/dist/features/viz/lib/hover-data.d.ts +12 -0
- package/dist/features/viz/lib/hover-data.js +50 -0
- package/dist/features/viz/lib/hover-data.js.map +7 -0
- package/dist/features/viz/lib/hover-placement.d.ts +46 -0
- package/dist/features/viz/lib/hover-placement.js +51 -0
- package/dist/features/viz/lib/hover-placement.js.map +7 -0
- package/dist/features/viz/lib/hover-queries.d.ts +60 -0
- package/dist/features/viz/lib/hover-queries.js +185 -0
- package/dist/features/viz/lib/hover-queries.js.map +7 -0
- package/dist/features/viz/lib/hover-types.d.ts +277 -0
- package/dist/features/viz/lib/layout-pie.d.ts +13 -0
- package/dist/features/viz/lib/layout-pie.js +159 -0
- package/dist/features/viz/lib/layout-pie.js.map +7 -0
- package/dist/features/viz/lib/line-series.d.ts +11 -0
- package/dist/features/viz/lib/line-series.js +89 -0
- package/dist/features/viz/lib/line-series.js.map +7 -0
- package/dist/features/viz/lib/linear-scale.d.ts +3 -0
- package/dist/features/viz/lib/linear-scale.js +70 -0
- package/dist/features/viz/lib/linear-scale.js.map +7 -0
- package/dist/features/viz/lib/nearest.d.ts +82 -0
- package/dist/features/viz/lib/nearest.js +51 -0
- package/dist/features/viz/lib/nearest.js.map +7 -0
- package/dist/features/viz/lib/paint.d.ts +2 -0
- package/dist/features/viz/lib/paint.js +17 -0
- package/dist/features/viz/lib/paint.js.map +7 -0
- package/dist/features/viz/lib/pie-layout.d.ts +31 -0
- package/dist/features/viz/lib/pie-layout.js +324 -0
- package/dist/features/viz/lib/pie-layout.js.map +7 -0
- package/dist/features/viz/lib/pie-slices.d.ts +51 -0
- package/dist/features/viz/lib/pie-slices.js +50 -0
- package/dist/features/viz/lib/pie-slices.js.map +7 -0
- package/dist/features/viz/lib/pie-types.d.ts +215 -0
- package/dist/features/viz/lib/plot-series.d.ts +13 -0
- package/dist/features/viz/lib/plot-series.js +53 -0
- package/dist/features/viz/lib/plot-series.js.map +7 -0
- package/dist/features/viz/lib/plot-types.d.ts +63 -0
- package/dist/features/viz/lib/point-data.d.ts +5 -0
- package/dist/features/viz/lib/point-data.js +17 -0
- package/dist/features/viz/lib/point-data.js.map +7 -0
- package/dist/features/viz/lib/point-geometry.d.ts +2 -0
- package/dist/features/viz/lib/point-geometry.js +24 -0
- package/dist/features/viz/lib/point-geometry.js.map +7 -0
- package/dist/features/viz/lib/point-series.d.ts +11 -0
- package/dist/features/viz/lib/point-series.js +118 -0
- package/dist/features/viz/lib/point-series.js.map +7 -0
- package/dist/features/viz/lib/point-types.d.ts +94 -0
- package/dist/features/viz/lib/scale-adjust.d.ts +11 -0
- package/dist/features/viz/lib/scale-adjust.js +25 -0
- package/dist/features/viz/lib/scale-adjust.js.map +7 -0
- package/dist/features/viz/lib/scale-context.d.ts +8 -0
- package/dist/features/viz/lib/scale-context.js +61 -0
- package/dist/features/viz/lib/scale-context.js.map +7 -0
- package/dist/features/viz/lib/scale.d.ts +11 -0
- package/dist/features/viz/lib/scale.js +80 -0
- package/dist/features/viz/lib/scale.js.map +7 -0
- package/dist/features/viz/lib/types.d.ts +414 -0
- package/dist/features/viz/lib/use-scale.d.ts +20 -0
- package/dist/features/viz/lib/use-scale.js +10 -0
- package/dist/features/viz/lib/use-scale.js.map +7 -0
- package/dist/filters/displacement-gpu.d.ts +38 -0
- package/dist/filters/displacement-gpu.js +243 -0
- package/dist/filters/displacement-gpu.js.map +7 -0
- package/dist/filters/displacement-math.d.ts +5 -0
- package/dist/filters/displacement-math.js +22 -0
- package/dist/filters/displacement-math.js.map +7 -0
- package/dist/filters/displacement.d.ts +13 -0
- package/dist/filters/displacement.js +65 -0
- package/dist/filters/displacement.js.map +7 -0
- package/dist/filters/filter-executor.d.ts +21 -0
- package/dist/filters/filter-executor.js +120 -0
- package/dist/filters/filter-executor.js.map +7 -0
- package/dist/filters/native-canvas-filter.d.ts +4 -0
- package/dist/filters/native-canvas-filter.js +105 -0
- package/dist/filters/native-canvas-filter.js.map +7 -0
- package/dist/filters/native-color.d.ts +2 -0
- package/dist/filters/native-color.js +200 -0
- package/dist/filters/native-color.js.map +7 -0
- package/dist/filters/native-operations.d.ts +8 -0
- package/dist/filters/native-operations.js +7 -0
- package/dist/filters/native-operations.js.map +7 -0
- package/dist/filters/native.d.ts +113 -0
- package/dist/filters/native.js +115 -0
- package/dist/filters/native.js.map +7 -0
- package/dist/filters/reflected-light.d.ts +12 -0
- package/dist/filters/reflected-light.js +93 -0
- package/dist/filters/reflected-light.js.map +7 -0
- package/dist/filters/reflection-gpu.d.ts +58 -0
- package/dist/filters/reflection-gpu.js +266 -0
- package/dist/filters/reflection-gpu.js.map +7 -0
- package/dist/filters/render-displacement-boundary.d.ts +12 -0
- package/dist/filters/render-displacement-boundary.js +116 -0
- package/dist/filters/render-displacement-boundary.js.map +7 -0
- package/dist/filters/render-reflection-boundary.d.ts +15 -0
- package/dist/filters/render-reflection-boundary.js +127 -0
- package/dist/filters/render-reflection-boundary.js.map +7 -0
- package/dist/filters.d.ts +5 -0
- package/dist/filters.js +29 -0
- package/dist/filters.js.map +7 -0
- package/dist/filters.mjs +1 -0
- package/dist/index.d.ts +111 -0
- package/dist/index.js +300 -0
- package/dist/index.js.map +7 -0
- package/dist/index.mjs +1 -0
- package/dist/internal.d.ts +160 -0
- package/dist/internal.js +320 -0
- package/dist/internal.js.map +7 -0
- package/dist/internal.mjs +1 -0
- package/dist/jsx-dev-runtime.d.ts +35 -0
- package/dist/jsx-dev-runtime.js +6 -0
- package/dist/jsx-dev-runtime.js.map +7 -0
- package/dist/jsx-dev-runtime.mjs +1 -0
- package/dist/jsx-runtime.d.ts +35 -0
- package/dist/jsx-runtime.js +7 -0
- package/dist/jsx-runtime.js.map +7 -0
- package/dist/jsx-runtime.mjs +1 -0
- package/dist/lib/animation/definition.d.ts +140 -0
- package/dist/lib/animation/definition.js +605 -0
- package/dist/lib/animation/definition.js.map +7 -0
- package/dist/lib/animation/easing.d.ts +55 -0
- package/dist/lib/animation/easing.js +112 -0
- package/dist/lib/animation/easing.js.map +7 -0
- package/dist/lib/animation/evaluate.d.ts +118 -0
- package/dist/lib/animation/evaluate.js +2398 -0
- package/dist/lib/animation/evaluate.js.map +7 -0
- package/dist/lib/animation/playback.d.ts +30 -0
- package/dist/lib/animation/playback.js +932 -0
- package/dist/lib/animation/playback.js.map +7 -0
- package/dist/lib/animation/program.d.ts +145 -0
- package/dist/lib/animation/program.js +741 -0
- package/dist/lib/animation/program.js.map +7 -0
- package/dist/lib/animation/spring.d.ts +30 -0
- package/dist/lib/animation/spring.js +324 -0
- package/dist/lib/animation/spring.js.map +7 -0
- package/dist/lib/animation/types.d.ts +418 -0
- package/dist/lib/animation/writer-leases.d.ts +47 -0
- package/dist/lib/animation/writer-leases.js +314 -0
- package/dist/lib/animation/writer-leases.js.map +7 -0
- package/dist/lib/backend/canvas-2d-backend.d.ts +4 -0
- package/dist/lib/backend/canvas-2d-backend.js +97 -0
- package/dist/lib/backend/canvas-2d-backend.js.map +7 -0
- package/dist/lib/backend/types.d.ts +309 -0
- package/dist/lib/backend/types.js +26 -0
- package/dist/lib/backend/types.js.map +7 -0
- package/dist/lib/components/arc-geometry.d.ts +4 -0
- package/dist/lib/components/arc-geometry.js +46 -0
- package/dist/lib/components/arc-geometry.js.map +7 -0
- package/dist/lib/components/arc.d.ts +55 -0
- package/dist/lib/components/arc.js +91 -0
- package/dist/lib/components/arc.js.map +7 -0
- package/dist/lib/components/circle.d.ts +49 -0
- package/dist/lib/components/circle.js +46 -0
- package/dist/lib/components/circle.js.map +7 -0
- package/dist/lib/components/clip.d.ts +43 -0
- package/dist/lib/components/clip.js +24 -0
- package/dist/lib/components/clip.js.map +7 -0
- package/dist/lib/components/ellipse.d.ts +53 -0
- package/dist/lib/components/ellipse.js +59 -0
- package/dist/lib/components/ellipse.js.map +7 -0
- package/dist/lib/components/g.d.ts +56 -0
- package/dist/lib/components/g.js +24 -0
- package/dist/lib/components/g.js.map +7 -0
- package/dist/lib/components/horizontal-line.d.ts +56 -0
- package/dist/lib/components/horizontal-line.js +71 -0
- package/dist/lib/components/horizontal-line.js.map +7 -0
- package/dist/lib/components/html-box.d.ts +16 -0
- package/dist/lib/components/html-box.js +57 -0
- package/dist/lib/components/html-box.js.map +7 -0
- package/dist/lib/components/img.d.ts +24 -0
- package/dist/lib/components/img.js +150 -0
- package/dist/lib/components/img.js.map +7 -0
- package/dist/lib/components/layer-node-equality.d.ts +65 -0
- package/dist/lib/components/layer-node-equality.js +91 -0
- package/dist/lib/components/layer-node-equality.js.map +7 -0
- package/dist/lib/components/layer.d.ts +34 -0
- package/dist/lib/components/layer.js +172 -0
- package/dist/lib/components/layer.js.map +7 -0
- package/dist/lib/components/line.d.ts +51 -0
- package/dist/lib/components/line.js +76 -0
- package/dist/lib/components/line.js.map +7 -0
- package/dist/lib/components/path.d.ts +28 -0
- package/dist/lib/components/path.js +47 -0
- package/dist/lib/components/path.js.map +7 -0
- package/dist/lib/components/polygon.d.ts +45 -0
- package/dist/lib/components/polygon.js +93 -0
- package/dist/lib/components/polygon.js.map +7 -0
- package/dist/lib/components/rect.d.ts +24 -0
- package/dist/lib/components/rect.js +83 -0
- package/dist/lib/components/rect.js.map +7 -0
- package/dist/lib/components/regular-polygon.d.ts +102 -0
- package/dist/lib/components/regular-polygon.js +112 -0
- package/dist/lib/components/regular-polygon.js.map +7 -0
- package/dist/lib/components/rounded-corner-style.d.ts +7 -0
- package/dist/lib/components/rounded-corner-style.js +40 -0
- package/dist/lib/components/rounded-corner-style.js.map +7 -0
- package/dist/lib/components/shape-style.d.ts +7 -0
- package/dist/lib/components/shape-style.js +52 -0
- package/dist/lib/components/shape-style.js.map +7 -0
- package/dist/lib/components/star.d.ts +56 -0
- package/dist/lib/components/star.js +98 -0
- package/dist/lib/components/star.js.map +7 -0
- package/dist/lib/components/structural-events.d.ts +10 -0
- package/dist/lib/components/structural-events.js +8 -0
- package/dist/lib/components/structural-events.js.map +7 -0
- package/dist/lib/components/svg-path.d.ts +23 -0
- package/dist/lib/components/svg-path.js +25 -0
- package/dist/lib/components/svg-path.js.map +7 -0
- package/dist/lib/components/text-layout.d.ts +31 -0
- package/dist/lib/components/text-layout.js +139 -0
- package/dist/lib/components/text-layout.js.map +7 -0
- package/dist/lib/components/text.d.ts +29 -0
- package/dist/lib/components/text.js +174 -0
- package/dist/lib/components/text.js.map +7 -0
- package/dist/lib/components/vertical-line.d.ts +57 -0
- package/dist/lib/components/vertical-line.js +71 -0
- package/dist/lib/components/vertical-line.js.map +7 -0
- package/dist/lib/components/wedge.d.ts +55 -0
- package/dist/lib/components/wedge.js +93 -0
- package/dist/lib/components/wedge.js.map +7 -0
- package/dist/lib/define-primitive.d.ts +82 -0
- package/dist/lib/define-primitive.js +85 -0
- package/dist/lib/define-primitive.js.map +7 -0
- package/dist/lib/development.d.ts +2 -0
- package/dist/lib/development.js +5 -0
- package/dist/lib/development.js.map +7 -0
- package/dist/lib/element/children.d.ts +16 -0
- package/dist/lib/element/children.js +333 -0
- package/dist/lib/element/children.js.map +7 -0
- package/dist/lib/element/create-element.d.ts +34 -0
- package/dist/lib/element/create-element.js +75 -0
- package/dist/lib/element/create-element.js.map +7 -0
- package/dist/lib/element/fragment.d.ts +15 -0
- package/dist/lib/element/fragment.js +11 -0
- package/dist/lib/element/fragment.js.map +7 -0
- package/dist/lib/element/jsx-runtime.d.ts +48 -0
- package/dist/lib/element/jsx-runtime.js +16 -0
- package/dist/lib/element/jsx-runtime.js.map +7 -0
- package/dist/lib/element/metadata.d.ts +96 -0
- package/dist/lib/element/metadata.js +160 -0
- package/dist/lib/element/metadata.js.map +7 -0
- package/dist/lib/element/resolve-primitive-inputs.d.ts +12 -0
- package/dist/lib/element/resolve-primitive-inputs.js +83 -0
- package/dist/lib/element/resolve-primitive-inputs.js.map +7 -0
- package/dist/lib/element/types.d.ts +123 -0
- package/dist/lib/element-enhancers.d.ts +134 -0
- package/dist/lib/element-enhancers.js +193 -0
- package/dist/lib/element-enhancers.js.map +7 -0
- package/dist/lib/events/adapters/clipboard.d.ts +9 -0
- package/dist/lib/events/adapters/clipboard.js +23 -0
- package/dist/lib/events/adapters/clipboard.js.map +7 -0
- package/dist/lib/events/adapters/drag.d.ts +12 -0
- package/dist/lib/events/adapters/drag.js +29 -0
- package/dist/lib/events/adapters/drag.js.map +7 -0
- package/dist/lib/events/adapters/editing.d.ts +15 -0
- package/dist/lib/events/adapters/editing.js +41 -0
- package/dist/lib/events/adapters/editing.js.map +7 -0
- package/dist/lib/events/adapters/keyboard-focus.d.ts +12 -0
- package/dist/lib/events/adapters/keyboard-focus.js +36 -0
- package/dist/lib/events/adapters/keyboard-focus.js.map +7 -0
- package/dist/lib/events/adapters/mouse.d.ts +17 -0
- package/dist/lib/events/adapters/mouse.js +32 -0
- package/dist/lib/events/adapters/mouse.js.map +7 -0
- package/dist/lib/events/adapters/pointer.d.ts +19 -0
- package/dist/lib/events/adapters/pointer.js +40 -0
- package/dist/lib/events/adapters/pointer.js.map +7 -0
- package/dist/lib/events/adapters/touch.d.ts +16 -0
- package/dist/lib/events/adapters/touch.js +36 -0
- package/dist/lib/events/adapters/touch.js.map +7 -0
- package/dist/lib/events/adapters/wheel.d.ts +10 -0
- package/dist/lib/events/adapters/wheel.js +16 -0
- package/dist/lib/events/adapters/wheel.js.map +7 -0
- package/dist/lib/events/boundary-transitions.d.ts +9 -0
- package/dist/lib/events/boundary-transitions.js +16 -0
- package/dist/lib/events/boundary-transitions.js.map +7 -0
- package/dist/lib/events/dispatch.d.ts +21 -0
- package/dist/lib/events/dispatch.js +1078 -0
- package/dist/lib/events/dispatch.js.map +7 -0
- package/dist/lib/events/event-definitions.d.ts +23 -0
- package/dist/lib/events/event-definitions.js +74 -0
- package/dist/lib/events/event-definitions.js.map +7 -0
- package/dist/lib/events/event-facade.d.ts +19 -0
- package/dist/lib/events/event-facade.js +188 -0
- package/dist/lib/events/event-facade.js.map +7 -0
- package/dist/lib/events/event-path.d.ts +3 -0
- package/dist/lib/events/event-path.js +43 -0
- package/dist/lib/events/event-path.js.map +7 -0
- package/dist/lib/events/hit-test.d.ts +13 -0
- package/dist/lib/events/hit-test.js +135 -0
- package/dist/lib/events/hit-test.js.map +7 -0
- package/dist/lib/events/native-listener-hub.d.ts +10 -0
- package/dist/lib/events/native-listener-hub.js +72 -0
- package/dist/lib/events/native-listener-hub.js.map +7 -0
- package/dist/lib/events/paint-entry.d.ts +66 -0
- package/dist/lib/events/paint-entry.js +30 -0
- package/dist/lib/events/paint-entry.js.map +7 -0
- package/dist/lib/events/pointer-capture.d.ts +23 -0
- package/dist/lib/events/pointer-capture.js +339 -0
- package/dist/lib/events/pointer-capture.js.map +7 -0
- package/dist/lib/events/propagation.d.ts +7 -0
- package/dist/lib/events/propagation.js +56 -0
- package/dist/lib/events/propagation.js.map +7 -0
- package/dist/lib/events/registrations.d.ts +120 -0
- package/dist/lib/events/registrations.js +397 -0
- package/dist/lib/events/registrations.js.map +7 -0
- package/dist/lib/events/resolver-input.d.ts +25 -0
- package/dist/lib/events/resolver-input.js +62 -0
- package/dist/lib/events/resolver-input.js.map +7 -0
- package/dist/lib/events/types.d.ts +596 -0
- package/dist/lib/execute-render.d.ts +9 -0
- package/dist/lib/execute-render.js +195 -0
- package/dist/lib/execute-render.js.map +7 -0
- package/dist/lib/filter/canvas-state.d.ts +2 -0
- package/dist/lib/filter/canvas-state.js +31 -0
- package/dist/lib/filter/canvas-state.js.map +7 -0
- package/dist/lib/filter/filter-region.d.ts +33 -0
- package/dist/lib/filter/filter-region.js +291 -0
- package/dist/lib/filter/filter-region.js.map +7 -0
- package/dist/lib/filter/filter-surface-pool.d.ts +38 -0
- package/dist/lib/filter/filter-surface-pool.js +252 -0
- package/dist/lib/filter/filter-surface-pool.js.map +7 -0
- package/dist/lib/filter/render-filter-boundary.d.ts +14 -0
- package/dist/lib/filter/render-filter-boundary.js +211 -0
- package/dist/lib/filter/render-filter-boundary.js.map +7 -0
- package/dist/lib/focus/directional-navigation.d.ts +12 -0
- package/dist/lib/focus/directional-navigation.js +86 -0
- package/dist/lib/focus/directional-navigation.js.map +7 -0
- package/dist/lib/focus/dom-focus-host.d.ts +13 -0
- package/dist/lib/focus/dom-focus-host.js +352 -0
- package/dist/lib/focus/dom-focus-host.js.map +7 -0
- package/dist/lib/focus/dom-tab-stops.d.ts +3 -0
- package/dist/lib/focus/dom-tab-stops.js +71 -0
- package/dist/lib/focus/dom-tab-stops.js.map +7 -0
- package/dist/lib/focus/focus-events.d.ts +4 -0
- package/dist/lib/focus/focus-events.js +78 -0
- package/dist/lib/focus/focus-events.js.map +7 -0
- package/dist/lib/focus/focus-manager.d.ts +121 -0
- package/dist/lib/focus/focus-manager.js +1131 -0
- package/dist/lib/focus/focus-manager.js.map +7 -0
- package/dist/lib/focus/geometry.d.ts +4 -0
- package/dist/lib/focus/geometry.js +64 -0
- package/dist/lib/focus/geometry.js.map +7 -0
- package/dist/lib/focus/html-focus-region.d.ts +27 -0
- package/dist/lib/focus/keyboard-defaults.d.ts +7 -0
- package/dist/lib/focus/keyboard-defaults.js +110 -0
- package/dist/lib/focus/keyboard-defaults.js.map +7 -0
- package/dist/lib/focus/policy-components.d.ts +45 -0
- package/dist/lib/focus/policy-components.js +94 -0
- package/dist/lib/focus/policy-components.js.map +7 -0
- package/dist/lib/focus/types.d.ts +37 -0
- package/dist/lib/focus/types.js +7 -0
- package/dist/lib/focus/types.js.map +7 -0
- package/dist/lib/geometry/circle.d.ts +22 -0
- package/dist/lib/geometry/circle.js +13 -0
- package/dist/lib/geometry/circle.js.map +7 -0
- package/dist/lib/geometry/circular-sweep.d.ts +54 -0
- package/dist/lib/geometry/circular-sweep.js +95 -0
- package/dist/lib/geometry/circular-sweep.js.map +7 -0
- package/dist/lib/geometry/ellipse.d.ts +26 -0
- package/dist/lib/geometry/ellipse.js +17 -0
- package/dist/lib/geometry/ellipse.js.map +7 -0
- package/dist/lib/geometry/line.d.ts +20 -0
- package/dist/lib/geometry/line.js +15 -0
- package/dist/lib/geometry/line.js.map +7 -0
- package/dist/lib/geometry/path-arc.d.ts +25 -0
- package/dist/lib/geometry/path-arc.js +57 -0
- package/dist/lib/geometry/path-arc.js.map +7 -0
- package/dist/lib/geometry/path-bend-guide.d.ts +31 -0
- package/dist/lib/geometry/path-bend-guide.js +282 -0
- package/dist/lib/geometry/path-bend-guide.js.map +7 -0
- package/dist/lib/geometry/path-bend-spans.d.ts +31 -0
- package/dist/lib/geometry/path-bend-spans.js +109 -0
- package/dist/lib/geometry/path-bend-spans.js.map +7 -0
- package/dist/lib/geometry/path-bending.d.ts +90 -0
- package/dist/lib/geometry/path-bending.js +202 -0
- package/dist/lib/geometry/path-bending.js.map +7 -0
- package/dist/lib/geometry/path-conversion.d.ts +19 -0
- package/dist/lib/geometry/path-conversion.js +114 -0
- package/dist/lib/geometry/path-conversion.js.map +7 -0
- package/dist/lib/geometry/path-geometry.d.ts +218 -0
- package/dist/lib/geometry/path-geometry.js +557 -0
- package/dist/lib/geometry/path-geometry.js.map +7 -0
- package/dist/lib/geometry/path-radial.d.ts +15 -0
- package/dist/lib/geometry/path-radial.js +107 -0
- package/dist/lib/geometry/path-radial.js.map +7 -0
- package/dist/lib/geometry/path-transforms.d.ts +233 -0
- package/dist/lib/geometry/path-transforms.js +478 -0
- package/dist/lib/geometry/path-transforms.js.map +7 -0
- package/dist/lib/geometry/path-utilities.d.ts +78 -0
- package/dist/lib/geometry/path-utilities.js +341 -0
- package/dist/lib/geometry/path-utilities.js.map +7 -0
- package/dist/lib/geometry/path-wang.d.ts +18 -0
- package/dist/lib/geometry/path-wang.js +136 -0
- package/dist/lib/geometry/path-wang.js.map +7 -0
- package/dist/lib/geometry/path-warp-bezier.d.ts +17 -0
- package/dist/lib/geometry/path-warp-bezier.js +109 -0
- package/dist/lib/geometry/path-warp-bezier.js.map +7 -0
- package/dist/lib/geometry/path-warp.d.ts +27 -0
- package/dist/lib/geometry/path-warp.js +165 -0
- package/dist/lib/geometry/path-warp.js.map +7 -0
- package/dist/lib/geometry/polygon.d.ts +21 -0
- package/dist/lib/geometry/polygon.js +12 -0
- package/dist/lib/geometry/polygon.js.map +7 -0
- package/dist/lib/geometry/rectangle.d.ts +38 -0
- package/dist/lib/geometry/rectangle.js +22 -0
- package/dist/lib/geometry/rectangle.js.map +7 -0
- package/dist/lib/geometry/regular-polygon.d.ts +88 -0
- package/dist/lib/geometry/regular-polygon.js +67 -0
- package/dist/lib/geometry/regular-polygon.js.map +7 -0
- package/dist/lib/geometry/resolve-path.d.ts +4 -0
- package/dist/lib/geometry/resolve-path.js +16 -0
- package/dist/lib/geometry/resolve-path.js.map +7 -0
- package/dist/lib/geometry/rounded-corners.d.ts +28 -0
- package/dist/lib/geometry/rounded-corners.js +118 -0
- package/dist/lib/geometry/rounded-corners.js.map +7 -0
- package/dist/lib/geometry/star.d.ts +39 -0
- package/dist/lib/geometry/star.js +90 -0
- package/dist/lib/geometry/star.js.map +7 -0
- package/dist/lib/geometry/svg-path.d.ts +21 -0
- package/dist/lib/geometry/svg-path.js +7 -0
- package/dist/lib/geometry/svg-path.js.map +7 -0
- package/dist/lib/geometry/transform-bend.d.ts +46 -0
- package/dist/lib/geometry/transform-bend.js +219 -0
- package/dist/lib/geometry/transform-bend.js.map +7 -0
- package/dist/lib/geometry/transform-guide.d.ts +57 -0
- package/dist/lib/geometry/transform-guide.js +157 -0
- package/dist/lib/geometry/transform-guide.js.map +7 -0
- package/dist/lib/geometry/transform-math.d.ts +21 -0
- package/dist/lib/geometry/transform-math.js +91 -0
- package/dist/lib/geometry/transform-math.js.map +7 -0
- package/dist/lib/geometry/transform-mesh.d.ts +39 -0
- package/dist/lib/geometry/transform-mesh.js +129 -0
- package/dist/lib/geometry/transform-mesh.js.map +7 -0
- package/dist/lib/geometry/validation.d.ts +6 -0
- package/dist/lib/geometry/validation.js +42 -0
- package/dist/lib/geometry/validation.js.map +7 -0
- package/dist/lib/global-state.d.ts +63 -0
- package/dist/lib/global-state.js +176 -0
- package/dist/lib/global-state.js.map +7 -0
- package/dist/lib/hooks/hook-slot.d.ts +30 -0
- package/dist/lib/hooks/hook-slot.js +66 -0
- package/dist/lib/hooks/hook-slot.js.map +7 -0
- package/dist/lib/hooks/use-animated-value.d.ts +24 -0
- package/dist/lib/hooks/use-animated-value.js +169 -0
- package/dist/lib/hooks/use-animated-value.js.map +7 -0
- package/dist/lib/hooks/use-canvas-context.d.ts +10 -0
- package/dist/lib/hooks/use-canvas-context.js +13 -0
- package/dist/lib/hooks/use-canvas-context.js.map +7 -0
- package/dist/lib/hooks/use-computed.d.ts +13 -0
- package/dist/lib/hooks/use-computed.js +91 -0
- package/dist/lib/hooks/use-computed.js.map +7 -0
- package/dist/lib/hooks/use-const.d.ts +10 -0
- package/dist/lib/hooks/use-const.js +15 -0
- package/dist/lib/hooks/use-const.js.map +7 -0
- package/dist/lib/hooks/use-cursor.d.ts +16 -0
- package/dist/lib/hooks/use-cursor.js +51 -0
- package/dist/lib/hooks/use-cursor.js.map +7 -0
- package/dist/lib/hooks/use-event-listener.d.ts +10 -0
- package/dist/lib/hooks/use-event-listener.js +24 -0
- package/dist/lib/hooks/use-event-listener.js.map +7 -0
- package/dist/lib/hooks/use-event-target.d.ts +14 -0
- package/dist/lib/hooks/use-event-target.js +30 -0
- package/dist/lib/hooks/use-event-target.js.map +7 -0
- package/dist/lib/hooks/use-layout-box.d.ts +9 -0
- package/dist/lib/hooks/use-layout-box.js +8 -0
- package/dist/lib/hooks/use-layout-box.js.map +7 -0
- package/dist/lib/hooks/use-line-path.d.ts +14 -0
- package/dist/lib/hooks/use-line-path.js +13 -0
- package/dist/lib/hooks/use-line-path.js.map +7 -0
- package/dist/lib/hooks/use-paint-target.d.ts +3 -0
- package/dist/lib/hooks/use-paint-target.js +34 -0
- package/dist/lib/hooks/use-paint-target.js.map +7 -0
- package/dist/lib/hooks/use-playback.d.ts +21 -0
- package/dist/lib/hooks/use-playback.js +87 -0
- package/dist/lib/hooks/use-playback.js.map +7 -0
- package/dist/lib/hooks/use-reaction.d.ts +19 -0
- package/dist/lib/hooks/use-reaction.js +245 -0
- package/dist/lib/hooks/use-reaction.js.map +7 -0
- package/dist/lib/hooks/use-rect-path.d.ts +20 -0
- package/dist/lib/hooks/use-rect-path.js +25 -0
- package/dist/lib/hooks/use-rect-path.js.map +7 -0
- package/dist/lib/hooks/use-ref.d.ts +17 -0
- package/dist/lib/hooks/use-ref.js +8 -0
- package/dist/lib/hooks/use-ref.js.map +7 -0
- package/dist/lib/hooks/use-region.d.ts +11 -0
- package/dist/lib/hooks/use-region.js +34 -0
- package/dist/lib/hooks/use-region.js.map +7 -0
- package/dist/lib/hooks/use-signal.d.ts +12 -0
- package/dist/lib/hooks/use-signal.js +12 -0
- package/dist/lib/hooks/use-signal.js.map +7 -0
- package/dist/lib/hooks/use-svg-path.d.ts +11 -0
- package/dist/lib/hooks/use-svg-path.js +13 -0
- package/dist/lib/hooks/use-svg-path.js.map +7 -0
- package/dist/lib/hooks/use-value-memo-slot.d.ts +12 -0
- package/dist/lib/hooks/use-value-memo-slot.js +45 -0
- package/dist/lib/hooks/use-value-memo-slot.js.map +7 -0
- package/dist/lib/hooks/use-visibility-transition.d.ts +103 -0
- package/dist/lib/hooks/use-visibility-transition.js +195 -0
- package/dist/lib/hooks/use-visibility-transition.js.map +7 -0
- package/dist/lib/html/html-service.d.ts +30 -0
- package/dist/lib/html/html-service.js +281 -0
- package/dist/lib/html/html-service.js.map +7 -0
- package/dist/lib/html/overlay-config.d.ts +3 -0
- package/dist/lib/html/overlay-config.js +37 -0
- package/dist/lib/html/overlay-config.js.map +7 -0
- package/dist/lib/html/portable-clips.d.ts +4 -0
- package/dist/lib/html/portable-clips.js +20 -0
- package/dist/lib/html/portable-clips.js.map +7 -0
- package/dist/lib/html/types.d.ts +110 -0
- package/dist/lib/layout/absolute.d.ts +57 -0
- package/dist/lib/layout/absolute.js +348 -0
- package/dist/lib/layout/absolute.js.map +7 -0
- package/dist/lib/layout/box.d.ts +19 -0
- package/dist/lib/layout/box.js +209 -0
- package/dist/lib/layout/box.js.map +7 -0
- package/dist/lib/layout/context.d.ts +13 -0
- package/dist/lib/layout/context.js +42 -0
- package/dist/lib/layout/context.js.map +7 -0
- package/dist/lib/layout/diagnostics.d.ts +15 -0
- package/dist/lib/layout/diagnostics.js +30 -0
- package/dist/lib/layout/diagnostics.js.map +7 -0
- package/dist/lib/layout/flex.d.ts +64 -0
- package/dist/lib/layout/flex.js +803 -0
- package/dist/lib/layout/flex.js.map +7 -0
- package/dist/lib/layout/flow.d.ts +53 -0
- package/dist/lib/layout/flow.js +400 -0
- package/dist/lib/layout/flow.js.map +7 -0
- package/dist/lib/layout/grid.d.ts +64 -0
- package/dist/lib/layout/grid.js +597 -0
- package/dist/lib/layout/grid.js.map +7 -0
- package/dist/lib/layout/measure.d.ts +19 -0
- package/dist/lib/layout/measure.js +144 -0
- package/dist/lib/layout/measure.js.map +7 -0
- package/dist/lib/layout/overlay.d.ts +42 -0
- package/dist/lib/layout/overlay.js +151 -0
- package/dist/lib/layout/overlay.js.map +7 -0
- package/dist/lib/layout/place-child.d.ts +12 -0
- package/dist/lib/layout/place-child.js +72 -0
- package/dist/lib/layout/place-child.js.map +7 -0
- package/dist/lib/layout/positioning-diagnostics.d.ts +3 -0
- package/dist/lib/layout/positioning-diagnostics.js +15 -0
- package/dist/lib/layout/positioning-diagnostics.js.map +7 -0
- package/dist/lib/layout/types.d.ts +78 -0
- package/dist/lib/manipulation/controller-types.d.ts +299 -0
- package/dist/lib/manipulation/controller.d.ts +57 -0
- package/dist/lib/manipulation/controller.js +464 -0
- package/dist/lib/manipulation/controller.js.map +7 -0
- package/dist/lib/manipulation/coordinates.d.ts +9 -0
- package/dist/lib/manipulation/coordinates.js +55 -0
- package/dist/lib/manipulation/coordinates.js.map +7 -0
- package/dist/lib/manipulation/degrees.d.ts +10 -0
- package/dist/lib/manipulation/degrees.js +9 -0
- package/dist/lib/manipulation/degrees.js.map +7 -0
- package/dist/lib/manipulation/frame.d.ts +24 -0
- package/dist/lib/manipulation/frame.js +101 -0
- package/dist/lib/manipulation/frame.js.map +7 -0
- package/dist/lib/manipulation/geometry.d.ts +4 -0
- package/dist/lib/manipulation/geometry.js +26 -0
- package/dist/lib/manipulation/geometry.js.map +7 -0
- package/dist/lib/manipulation/handles.d.ts +298 -0
- package/dist/lib/manipulation/handles.js +598 -0
- package/dist/lib/manipulation/handles.js.map +7 -0
- package/dist/lib/manipulation/manipulable.d.ts +65 -0
- package/dist/lib/manipulation/manipulable.js +47 -0
- package/dist/lib/manipulation/manipulable.js.map +7 -0
- package/dist/lib/manipulation/ownership.d.ts +15 -0
- package/dist/lib/manipulation/ownership.js +80 -0
- package/dist/lib/manipulation/ownership.js.map +7 -0
- package/dist/lib/manipulation/snap.d.ts +6 -0
- package/dist/lib/manipulation/snap.js +40 -0
- package/dist/lib/manipulation/snap.js.map +7 -0
- package/dist/lib/manipulation/solve.d.ts +2 -0
- package/dist/lib/manipulation/solve.js +563 -0
- package/dist/lib/manipulation/solve.js.map +7 -0
- package/dist/lib/manipulation/types.d.ts +178 -0
- package/dist/lib/mount-pibbl.d.ts +25 -0
- package/dist/lib/mount-pibbl.js +278 -0
- package/dist/lib/mount-pibbl.js.map +7 -0
- package/dist/lib/optional-services.d.ts +8 -0
- package/dist/lib/optional-services.js +11 -0
- package/dist/lib/optional-services.js.map +7 -0
- package/dist/lib/pibbl.d.ts +17 -0
- package/dist/lib/pibbl.js +21 -0
- package/dist/lib/pibbl.js.map +7 -0
- package/dist/lib/primitive-presentation.d.ts +24 -0
- package/dist/lib/primitive-presentation.js +102 -0
- package/dist/lib/primitive-presentation.js.map +7 -0
- package/dist/lib/render-layer/controller.d.ts +67 -0
- package/dist/lib/render-layer/controller.js +603 -0
- package/dist/lib/render-layer/controller.js.map +7 -0
- package/dist/lib/render-layer/define-render-layer.d.ts +17 -0
- package/dist/lib/render-layer/define-render-layer.js +90 -0
- package/dist/lib/render-layer/define-render-layer.js.map +7 -0
- package/dist/lib/render-layer/types.d.ts +315 -0
- package/dist/lib/render-target.d.ts +27 -0
- package/dist/lib/render-target.js +118 -0
- package/dist/lib/render-target.js.map +7 -0
- package/dist/lib/render-transaction.d.ts +10 -0
- package/dist/lib/render-transaction.js +46 -0
- package/dist/lib/render-transaction.js.map +7 -0
- package/dist/lib/render.d.ts +3 -0
- package/dist/lib/render.js +385 -0
- package/dist/lib/render.js.map +7 -0
- package/dist/lib/scheduler/realm-scheduler.d.ts +52 -0
- package/dist/lib/scheduler/realm-scheduler.js +964 -0
- package/dist/lib/scheduler/realm-scheduler.js.map +7 -0
- package/dist/lib/scheduler/renderer-participant.d.ts +257 -0
- package/dist/lib/scheduler/renderer-participant.js +216 -0
- package/dist/lib/scheduler/renderer-participant.js.map +7 -0
- package/dist/lib/scheduler/simulation-participant.d.ts +103 -0
- package/dist/lib/scheduler/simulation-participant.js +229 -0
- package/dist/lib/scheduler/simulation-participant.js.map +7 -0
- package/dist/lib/scheduler/testing.d.ts +56 -0
- package/dist/lib/scheduler/testing.js +71 -0
- package/dist/lib/scheduler/testing.js.map +7 -0
- package/dist/lib/scheduler/types.d.ts +103 -0
- package/dist/lib/signals/edge.d.ts +44 -0
- package/dist/lib/signals/edge.js +245 -0
- package/dist/lib/signals/edge.js.map +7 -0
- package/dist/lib/signals/graph.d.ts +220 -0
- package/dist/lib/signals/graph.js +1035 -0
- package/dist/lib/signals/graph.js.map +7 -0
- package/dist/lib/signals/input-provision.d.ts +3 -0
- package/dist/lib/signals/input-provision.js +67 -0
- package/dist/lib/signals/input-provision.js.map +7 -0
- package/dist/lib/signals/render-consumer.d.ts +21 -0
- package/dist/lib/signals/render-consumer.js +218 -0
- package/dist/lib/signals/render-consumer.js.map +7 -0
- package/dist/lib/signals/resolve-signal-value.d.ts +10 -0
- package/dist/lib/signals/resolve-signal-value.js +17 -0
- package/dist/lib/signals/resolve-signal-value.js.map +7 -0
- package/dist/lib/signals/types.d.ts +80 -0
- package/dist/lib/style/diagnostics.d.ts +83 -0
- package/dist/lib/style/diagnostics.js +63 -0
- package/dist/lib/style/diagnostics.js.map +7 -0
- package/dist/lib/style/empty-style.d.ts +3 -0
- package/dist/lib/style/empty-style.js +5 -0
- package/dist/lib/style/empty-style.js.map +7 -0
- package/dist/lib/style/filter-types.d.ts +243 -0
- package/dist/lib/style/filter-types.js +5 -0
- package/dist/lib/style/filter-types.js.map +7 -0
- package/dist/lib/style/filter.d.ts +7 -0
- package/dist/lib/style/filter.js +50 -0
- package/dist/lib/style/filter.js.map +7 -0
- package/dist/lib/style/normalize.d.ts +18 -0
- package/dist/lib/style/normalize.js +50 -0
- package/dist/lib/style/normalize.js.map +7 -0
- package/dist/lib/style/positioning.d.ts +32 -0
- package/dist/lib/style/positioning.js +81 -0
- package/dist/lib/style/positioning.js.map +7 -0
- package/dist/lib/style/resolve-built-in.d.ts +6 -0
- package/dist/lib/style/resolve-built-in.js +58 -0
- package/dist/lib/style/resolve-built-in.js.map +7 -0
- package/dist/lib/style/resolve-dispatch.d.ts +20 -0
- package/dist/lib/style/resolve-dispatch.js +167 -0
- package/dist/lib/style/resolve-dispatch.js.map +7 -0
- package/dist/lib/style/resolve-length.d.ts +16 -0
- package/dist/lib/style/resolve-length.js +54 -0
- package/dist/lib/style/resolve-length.js.map +7 -0
- package/dist/lib/style/responsive.d.ts +31 -0
- package/dist/lib/style/responsive.js +172 -0
- package/dist/lib/style/responsive.js.map +7 -0
- package/dist/lib/style/types.d.ts +338 -0
- package/dist/lib/surface/resolve-surface.d.ts +4 -0
- package/dist/lib/surface/resolve-surface.js +184 -0
- package/dist/lib/surface/resolve-surface.js.map +7 -0
- package/dist/lib/surface/root-surface.d.ts +7 -0
- package/dist/lib/surface/root-surface.js +171 -0
- package/dist/lib/surface/root-surface.js.map +7 -0
- package/dist/lib/surface/transform.d.ts +4 -0
- package/dist/lib/surface/transform.js +16 -0
- package/dist/lib/surface/transform.js.map +7 -0
- package/dist/lib/surface/types.d.ts +132 -0
- package/dist/lib/teardowns.d.ts +14 -0
- package/dist/lib/teardowns.js +50 -0
- package/dist/lib/teardowns.js.map +7 -0
- package/dist/lib/textures/texture-protocol.d.ts +124 -0
- package/dist/lib/textures/texture-protocol.js +40 -0
- package/dist/lib/textures/texture-protocol.js.map +7 -0
- package/dist/lib/textures/texture.d.ts +170 -0
- package/dist/lib/textures/texture.js +385 -0
- package/dist/lib/textures/texture.js.map +7 -0
- package/dist/lib/transitions/bifrost.d.ts +47 -0
- package/dist/lib/transitions/bifrost.js +91 -0
- package/dist/lib/transitions/bifrost.js.map +7 -0
- package/dist/lib/transitions/binding.d.ts +14 -0
- package/dist/lib/transitions/binding.js +35 -0
- package/dist/lib/transitions/binding.js.map +7 -0
- package/dist/lib/transitions/capture.d.ts +21 -0
- package/dist/lib/transitions/capture.js +91 -0
- package/dist/lib/transitions/capture.js.map +7 -0
- package/dist/lib/transitions/common.d.ts +130 -0
- package/dist/lib/transitions/common.js +57 -0
- package/dist/lib/transitions/common.js.map +7 -0
- package/dist/lib/transitions/define-transition.d.ts +64 -0
- package/dist/lib/transitions/define-transition.js +31 -0
- package/dist/lib/transitions/define-transition.js.map +7 -0
- package/dist/lib/transitions/embers-physics.d.ts +114 -0
- package/dist/lib/transitions/embers-physics.js +161 -0
- package/dist/lib/transitions/embers-physics.js.map +7 -0
- package/dist/lib/transitions/embers.d.ts +67 -0
- package/dist/lib/transitions/embers.js +196 -0
- package/dist/lib/transitions/embers.js.map +7 -0
- package/dist/lib/transitions/fade.d.ts +41 -0
- package/dist/lib/transitions/fade.js +31 -0
- package/dist/lib/transitions/fade.js.map +7 -0
- package/dist/lib/transitions/hologram.d.ts +47 -0
- package/dist/lib/transitions/hologram.js +94 -0
- package/dist/lib/transitions/hologram.js.map +7 -0
- package/dist/lib/transitions/wasm/bifrost-bytes.d.ts +1 -0
- package/dist/lib/transitions/wasm/bifrost-bytes.js +5 -0
- package/dist/lib/transitions/wasm/bifrost-bytes.js.map +7 -0
- package/dist/lib/transitions/wasm/bifrost-kernel.d.ts +1 -0
- package/dist/lib/transitions/wasm/bifrost-kernel.js +27 -0
- package/dist/lib/transitions/wasm/bifrost-kernel.js.map +7 -0
- package/dist/lib/transitions/wasm/embers-bytes.d.ts +1 -0
- package/dist/lib/transitions/wasm/embers-bytes.js +5 -0
- package/dist/lib/transitions/wasm/embers-bytes.js.map +7 -0
- package/dist/lib/transitions/wasm/hologram-bytes.d.ts +1 -0
- package/dist/lib/transitions/wasm/hologram-bytes.js +5 -0
- package/dist/lib/transitions/wasm/hologram-bytes.js.map +7 -0
- package/dist/lib/transitions/wasm/kernel.d.ts +7 -0
- package/dist/lib/transitions/wasm/kernel.js +26 -0
- package/dist/lib/transitions/wasm/kernel.js.map +7 -0
- package/dist/lib/types.d.ts +570 -0
- package/dist/lib/update.d.ts +8 -0
- package/dist/lib/update.js +20 -0
- package/dist/lib/update.js.map +7 -0
- package/dist/lib/util/get-2d-context.d.ts +2 -0
- package/dist/lib/util/get-2d-context.js +11 -0
- package/dist/lib/util/get-2d-context.js.map +7 -0
- package/dist/lib/util/get-mouse-coordinates.d.ts +2 -0
- package/dist/lib/util/get-mouse-coordinates.js +32 -0
- package/dist/lib/util/get-mouse-coordinates.js.map +7 -0
- package/dist/lib/util/is-hit.d.ts +11 -0
- package/dist/lib/util/is-hit.js +52 -0
- package/dist/lib/util/is-hit.js.map +7 -0
- package/dist/lib/util/is-transparent.d.ts +1 -0
- package/dist/lib/util/is-transparent.js +8 -0
- package/dist/lib/util/is-transparent.js.map +7 -0
- package/dist/lib/util/pixel-grid-adjustments.d.ts +8 -0
- package/dist/lib/util/pixel-grid-adjustments.js +28 -0
- package/dist/lib/util/pixel-grid-adjustments.js.map +7 -0
- package/dist/lib/util/push-clipping-path.d.ts +6 -0
- package/dist/lib/util/push-clipping-path.js +28 -0
- package/dist/lib/util/push-clipping-path.js.map +7 -0
- package/dist/lib/util/wire-common-events.d.ts +2 -0
- package/dist/lib/util/wire-common-events.js +15 -0
- package/dist/lib/util/wire-common-events.js.map +7 -0
- package/dist/types.d.ts +1 -0
- package/dist/types.js +1 -0
- package/dist/types.js.map +7 -0
- package/dist/types.mjs +1 -0
- package/package.json +149 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/features/physics/lib/2d/math.ts"],
|
|
4
|
+
"sourcesContent": ["import type {\n PibblPhysicsAabb2D,\n PibblPhysicsPose2D,\n PibblPhysicsVector2,\n} from '../../2d-geometry.js';\nimport { copyFiniteVector2, requireFiniteNumber } from '../shared/validation.js';\nimport { DEGREES_TO_RADIANS, GEOMETRY_EPSILON } from './numeric-policy.js';\n\nexport const CURVE_FLATTENING_TOLERANCE = 0.05;\nexport const CURVE_FLATTENING_MAX_DEPTH = 12;\n\nexport interface InternalPose2D {\n readonly x: number;\n readonly y: number;\n readonly rotationRadians: number;\n}\n\nexport const IDENTITY_POSE_2D: InternalPose2D = Object.freeze({\n x: 0,\n y: 0,\n rotationRadians: 0,\n});\n\nexport function copyPose2D(\n pose: PibblPhysicsPose2D | undefined,\n path: string,\n): InternalPose2D {\n if (pose === undefined) {\n return IDENTITY_POSE_2D;\n }\n const position = copyFiniteVector2(pose.position, `${path}.position`);\n return Object.freeze({\n x: position[0],\n y: position[1],\n rotationRadians:\n requireFiniteNumber(pose.rotationDegrees, `${path}.rotationDegrees`) *\n DEGREES_TO_RADIANS,\n });\n}\n\n/** Returns outer(inner(point)). */\nexport function composePose2D(\n outer: InternalPose2D,\n inner: InternalPose2D,\n): InternalPose2D {\n const cosine = Math.cos(outer.rotationRadians);\n const sine = Math.sin(outer.rotationRadians);\n return Object.freeze({\n x: outer.x + cosine * inner.x - sine * inner.y,\n y: outer.y + sine * inner.x + cosine * inner.y,\n rotationRadians: outer.rotationRadians + inner.rotationRadians,\n });\n}\n\nexport function transformPointInto(\n output: Float64Array,\n outputOffset: number,\n x: number,\n y: number,\n pose: InternalPose2D,\n): void {\n const cosine = Math.cos(pose.rotationRadians);\n const sine = Math.sin(pose.rotationRadians);\n output[outputOffset] = pose.x + cosine * x - sine * y;\n output[outputOffset + 1] = pose.y + sine * x + cosine * y;\n}\n\nexport function cross2D(\n ax: number,\n ay: number,\n bx: number,\n by: number,\n cx: number,\n cy: number,\n): number {\n return (bx - ax) * (cy - ay) - (by - ay) * (cx - ax);\n}\n\nexport function canonicalizeContour2D(\n source: readonly PibblPhysicsVector2[],\n options: Readonly<{ strictlyConvex: boolean; path: string }>,\n): Float64Array {\n const copied: [number, number][] = source.map((point, index) => {\n const owned = copyFiniteVector2(point, `${options.path}[${index}]`);\n return [owned[0], owned[1]];\n });\n if (\n copied.length > 1 &&\n copied[0]![0] === copied.at(-1)![0] &&\n copied[0]![1] === copied.at(-1)![1]\n ) {\n copied.pop();\n }\n if (copied.length < 3) {\n throw new RangeError(`${options.path} must contain at least three vertices.`);\n }\n const cleaned = options.strictlyConvex\n ? copied\n : removeCollinearAndAdjacentDuplicates(copied);\n for (let first = 0; first < cleaned.length; first += 1) {\n for (let second = first + 1; second < cleaned.length; second += 1) {\n if (\n cleaned[first]![0] === cleaned[second]![0] &&\n cleaned[first]![1] === cleaned[second]![1]\n ) {\n throw new RangeError(`${options.path} must not contain duplicate vertices.`);\n }\n }\n }\n if (cleaned.length < 3) {\n throw new RangeError(`${options.path} must enclose a nonzero area.`);\n }\n if (hasSelfIntersection(cleaned)) {\n throw new RangeError(`${options.path} must describe a simple polygon.`);\n }\n\n let signedTwiceArea = 0;\n for (let index = 0; index < cleaned.length; index += 1) {\n const current = cleaned[index]!;\n const next = cleaned[(index + 1) % cleaned.length]!;\n signedTwiceArea += current[0] * next[1] - next[0] * current[1];\n }\n if (Math.abs(signedTwiceArea) <= GEOMETRY_EPSILON) {\n throw new RangeError(`${options.path} must enclose a nonzero area.`);\n }\n if (signedTwiceArea < 0) {\n cleaned.reverse();\n }\n\n if (options.strictlyConvex) {\n for (let index = 0; index < cleaned.length; index += 1) {\n const previous = cleaned[(index + cleaned.length - 1) % cleaned.length]!;\n const current = cleaned[index]!;\n const next = cleaned[(index + 1) % cleaned.length]!;\n if (\n cross2D(\n previous[0],\n previous[1],\n current[0],\n current[1],\n next[0],\n next[1],\n ) <= GEOMETRY_EPSILON\n ) {\n throw new RangeError(\n `${options.path} must describe a strictly convex polygon without collinear vertices.`,\n );\n }\n }\n }\n\n let start = 0;\n for (let index = 1; index < cleaned.length; index += 1) {\n const candidate = cleaned[index]!;\n const selected = cleaned[start]!;\n if (\n candidate[0] < selected[0] ||\n (candidate[0] === selected[0] && candidate[1] < selected[1])\n ) {\n start = index;\n }\n }\n const result = new Float64Array(cleaned.length * 2);\n for (let index = 0; index < cleaned.length; index += 1) {\n const point = cleaned[(start + index) % cleaned.length]!;\n result[index * 2] = point[0];\n result[index * 2 + 1] = point[1];\n }\n return result;\n}\n\nexport function triangulateContour2D(vertices: Float64Array): readonly Float64Array[] {\n const count = vertices.length / 2;\n const remaining = Array.from({ length: count }, (_, index) => index);\n const triangles: Float64Array[] = [];\n while (remaining.length > 3) {\n let selectedPosition = -1;\n let selectedCanonicalIndex = Number.POSITIVE_INFINITY;\n for (let position = 0; position < remaining.length; position += 1) {\n const previous = remaining[(position + remaining.length - 1) % remaining.length]!;\n const current = remaining[position]!;\n const next = remaining[(position + 1) % remaining.length]!;\n const turn = cross2D(\n vertices[previous * 2]!,\n vertices[previous * 2 + 1]!,\n vertices[current * 2]!,\n vertices[current * 2 + 1]!,\n vertices[next * 2]!,\n vertices[next * 2 + 1]!,\n );\n if (turn <= GEOMETRY_EPSILON) {\n continue;\n }\n let containsVertex = false;\n for (const candidate of remaining) {\n if (candidate === previous || candidate === current || candidate === next) {\n continue;\n }\n if (pointInTriangle(vertices, candidate, previous, current, next)) {\n containsVertex = true;\n break;\n }\n }\n if (!containsVertex && current < selectedCanonicalIndex) {\n selectedPosition = position;\n selectedCanonicalIndex = current;\n }\n }\n if (selectedPosition < 0) {\n throw new RangeError('contour could not be triangulated deterministically.');\n }\n const previous = remaining[(selectedPosition + remaining.length - 1) % remaining.length]!;\n const current = remaining[selectedPosition]!;\n const next = remaining[(selectedPosition + 1) % remaining.length]!;\n triangles.push(copyTriangle(vertices, previous, current, next));\n remaining.splice(selectedPosition, 1);\n }\n triangles.push(copyTriangle(vertices, remaining[0]!, remaining[1]!, remaining[2]!));\n return Object.freeze(triangles);\n}\n\nexport function polygonMassData2D(vertices: Float64Array): Readonly<{\n area: number;\n centroidX: number;\n centroidY: number;\n unitInertia: number;\n}> {\n let twiceArea = 0;\n let centroidXTimesSixArea = 0;\n let centroidYTimesSixArea = 0;\n let inertiaTimesTwelve = 0;\n for (let offset = 0; offset < vertices.length; offset += 2) {\n const nextOffset = (offset + 2) % vertices.length;\n const x1 = vertices[offset]!;\n const y1 = vertices[offset + 1]!;\n const x2 = vertices[nextOffset]!;\n const y2 = vertices[nextOffset + 1]!;\n const cross = x1 * y2 - x2 * y1;\n twiceArea += cross;\n centroidXTimesSixArea += (x1 + x2) * cross;\n centroidYTimesSixArea += (y1 + y2) * cross;\n inertiaTimesTwelve +=\n cross *\n (x1 * x1 + x1 * x2 + x2 * x2 + y1 * y1 + y1 * y2 + y2 * y2);\n }\n const area = twiceArea / 2;\n const centroidX = centroidXTimesSixArea / (3 * twiceArea);\n const centroidY = centroidYTimesSixArea / (3 * twiceArea);\n const inertiaAboutOrigin = inertiaTimesTwelve / 12;\n return Object.freeze({\n area,\n centroidX,\n centroidY,\n unitInertia:\n inertiaAboutOrigin - area * (centroidX * centroidX + centroidY * centroidY),\n });\n}\n\nexport function freezeBounds2D(\n minX: number,\n minY: number,\n maxX: number,\n maxY: number,\n): PibblPhysicsAabb2D {\n return Object.freeze({\n min: Object.freeze([cleanZero(minX), cleanZero(minY)] as const),\n max: Object.freeze([cleanZero(maxX), cleanZero(maxY)] as const),\n });\n}\n\nexport function cleanZero(value: number): number {\n return Object.is(value, -0) ? 0 : value;\n}\n\nfunction removeCollinearAndAdjacentDuplicates(\n source: readonly [number, number][],\n): [number, number][] {\n const points = source.filter((point, index) => {\n const previous = source[(index + source.length - 1) % source.length]!;\n return point[0] !== previous[0] || point[1] !== previous[1];\n });\n let removed = true;\n while (removed && points.length >= 3) {\n removed = false;\n for (let index = 0; index < points.length; index += 1) {\n const previous = points[(index + points.length - 1) % points.length]!;\n const current = points[index]!;\n const next = points[(index + 1) % points.length]!;\n if (\n Math.abs(\n cross2D(\n previous[0],\n previous[1],\n current[0],\n current[1],\n next[0],\n next[1],\n ),\n ) <= GEOMETRY_EPSILON\n ) {\n points.splice(index, 1);\n removed = true;\n break;\n }\n }\n }\n return points;\n}\n\nfunction hasSelfIntersection(points: readonly [number, number][]): boolean {\n for (let first = 0; first < points.length; first += 1) {\n const firstNext = (first + 1) % points.length;\n for (let second = first + 1; second < points.length; second += 1) {\n const secondNext = (second + 1) % points.length;\n if (\n first === second ||\n firstNext === second ||\n secondNext === first\n ) {\n continue;\n }\n if (\n segmentsIntersect(\n points[first]!,\n points[firstNext]!,\n points[second]!,\n points[secondNext]!,\n )\n ) {\n return true;\n }\n }\n }\n return false;\n}\n\nfunction segmentsIntersect(\n firstStart: readonly [number, number],\n firstEnd: readonly [number, number],\n secondStart: readonly [number, number],\n secondEnd: readonly [number, number],\n): boolean {\n const firstSide = cross2D(\n firstStart[0],\n firstStart[1],\n firstEnd[0],\n firstEnd[1],\n secondStart[0],\n secondStart[1],\n );\n const secondSide = cross2D(\n firstStart[0],\n firstStart[1],\n firstEnd[0],\n firstEnd[1],\n secondEnd[0],\n secondEnd[1],\n );\n const thirdSide = cross2D(\n secondStart[0],\n secondStart[1],\n secondEnd[0],\n secondEnd[1],\n firstStart[0],\n firstStart[1],\n );\n const fourthSide = cross2D(\n secondStart[0],\n secondStart[1],\n secondEnd[0],\n secondEnd[1],\n firstEnd[0],\n firstEnd[1],\n );\n return (\n Math.sign(firstSide) !== Math.sign(secondSide) &&\n Math.sign(thirdSide) !== Math.sign(fourthSide)\n );\n}\n\nfunction pointInTriangle(\n vertices: Float64Array,\n point: number,\n first: number,\n second: number,\n third: number,\n): boolean {\n const px = vertices[point * 2]!;\n const py = vertices[point * 2 + 1]!;\n const firstCross = cross2D(vertices[first * 2]!, vertices[first * 2 + 1]!, vertices[second * 2]!, vertices[second * 2 + 1]!, px, py);\n const secondCross = cross2D(vertices[second * 2]!, vertices[second * 2 + 1]!, vertices[third * 2]!, vertices[third * 2 + 1]!, px, py);\n const thirdCross = cross2D(vertices[third * 2]!, vertices[third * 2 + 1]!, vertices[first * 2]!, vertices[first * 2 + 1]!, px, py);\n return (\n firstCross >= -GEOMETRY_EPSILON &&\n secondCross >= -GEOMETRY_EPSILON &&\n thirdCross >= -GEOMETRY_EPSILON\n );\n}\n\nfunction copyTriangle(\n vertices: Float64Array,\n first: number,\n second: number,\n third: number,\n): Float64Array {\n return new Float64Array([\n vertices[first * 2]!, vertices[first * 2 + 1]!,\n vertices[second * 2]!, vertices[second * 2 + 1]!,\n vertices[third * 2]!, vertices[third * 2 + 1]!,\n ]);\n}\n"],
|
|
5
|
+
"mappings": "AAKA,SAAS,mBAAmB,2BAA2B;AACvD,SAAS,oBAAoB,wBAAwB;AAE9C,MAAM,6BAA6B;AACnC,MAAM,6BAA6B;AAQnC,MAAM,mBAAmC,OAAO,OAAO;AAAA,EAC5D,GAAG;AAAA,EACH,GAAG;AAAA,EACH,iBAAiB;AACnB,CAAC;AAEM,SAAS,WACd,MACA,MACgB;AAChB,MAAI,SAAS,QAAW;AACtB,WAAO;AAAA,EACT;AACA,QAAM,WAAW,kBAAkB,KAAK,UAAU,GAAG,IAAI,WAAW;AACpE,SAAO,OAAO,OAAO;AAAA,IACnB,GAAG,SAAS,CAAC;AAAA,IACb,GAAG,SAAS,CAAC;AAAA,IACb,iBACE,oBAAoB,KAAK,iBAAiB,GAAG,IAAI,kBAAkB,IACnE;AAAA,EACJ,CAAC;AACH;AAGO,SAAS,cACd,OACA,OACgB;AAChB,QAAM,SAAS,KAAK,IAAI,MAAM,eAAe;AAC7C,QAAM,OAAO,KAAK,IAAI,MAAM,eAAe;AAC3C,SAAO,OAAO,OAAO;AAAA,IACnB,GAAG,MAAM,IAAI,SAAS,MAAM,IAAI,OAAO,MAAM;AAAA,IAC7C,GAAG,MAAM,IAAI,OAAO,MAAM,IAAI,SAAS,MAAM;AAAA,IAC7C,iBAAiB,MAAM,kBAAkB,MAAM;AAAA,EACjD,CAAC;AACH;AAEO,SAAS,mBACd,QACA,cACA,GACA,GACA,MACM;AACN,QAAM,SAAS,KAAK,IAAI,KAAK,eAAe;AAC5C,QAAM,OAAO,KAAK,IAAI,KAAK,eAAe;AAC1C,SAAO,YAAY,IAAI,KAAK,IAAI,SAAS,IAAI,OAAO;AACpD,SAAO,eAAe,CAAC,IAAI,KAAK,IAAI,OAAO,IAAI,SAAS;AAC1D;AAEO,SAAS,QACd,IACA,IACA,IACA,IACA,IACA,IACQ;AACR,UAAQ,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK;AACnD;AAEO,SAAS,sBACd,QACA,SACc;AACd,QAAM,SAA6B,OAAO,IAAI,CAAC,OAAO,UAAU;AAC9D,UAAM,QAAQ,kBAAkB,OAAO,GAAG,QAAQ,IAAI,IAAI,KAAK,GAAG;AAClE,WAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;AAAA,EAC5B,CAAC;AACD,MACE,OAAO,SAAS,KAChB,OAAO,CAAC,EAAG,CAAC,MAAM,OAAO,GAAG,EAAE,EAAG,CAAC,KAClC,OAAO,CAAC,EAAG,CAAC,MAAM,OAAO,GAAG,EAAE,EAAG,CAAC,GAClC;AACA,WAAO,IAAI;AAAA,EACb;AACA,MAAI,OAAO,SAAS,GAAG;AACrB,UAAM,IAAI,WAAW,GAAG,QAAQ,IAAI,wCAAwC;AAAA,EAC9E;AACA,QAAM,UAAU,QAAQ,iBACpB,SACA,qCAAqC,MAAM;AAC/C,WAAS,QAAQ,GAAG,QAAQ,QAAQ,QAAQ,SAAS,GAAG;AACtD,aAAS,SAAS,QAAQ,GAAG,SAAS,QAAQ,QAAQ,UAAU,GAAG;AACjE,UACE,QAAQ,KAAK,EAAG,CAAC,MAAM,QAAQ,MAAM,EAAG,CAAC,KACzC,QAAQ,KAAK,EAAG,CAAC,MAAM,QAAQ,MAAM,EAAG,CAAC,GACzC;AACA,cAAM,IAAI,WAAW,GAAG,QAAQ,IAAI,uCAAuC;AAAA,MAC7E;AAAA,IACF;AAAA,EACF;AACA,MAAI,QAAQ,SAAS,GAAG;AACtB,UAAM,IAAI,WAAW,GAAG,QAAQ,IAAI,+BAA+B;AAAA,EACrE;AACA,MAAI,oBAAoB,OAAO,GAAG;AAChC,UAAM,IAAI,WAAW,GAAG,QAAQ,IAAI,kCAAkC;AAAA,EACxE;AAEA,MAAI,kBAAkB;AACtB,WAAS,QAAQ,GAAG,QAAQ,QAAQ,QAAQ,SAAS,GAAG;AACtD,UAAM,UAAU,QAAQ,KAAK;AAC7B,UAAM,OAAO,SAAS,QAAQ,KAAK,QAAQ,MAAM;AACjD,uBAAmB,QAAQ,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,QAAQ,CAAC;AAAA,EAC/D;AACA,MAAI,KAAK,IAAI,eAAe,KAAK,kBAAkB;AACjD,UAAM,IAAI,WAAW,GAAG,QAAQ,IAAI,+BAA+B;AAAA,EACrE;AACA,MAAI,kBAAkB,GAAG;AACvB,YAAQ,QAAQ;AAAA,EAClB;AAEA,MAAI,QAAQ,gBAAgB;AAC1B,aAAS,QAAQ,GAAG,QAAQ,QAAQ,QAAQ,SAAS,GAAG;AACtD,YAAM,WAAW,SAAS,QAAQ,QAAQ,SAAS,KAAK,QAAQ,MAAM;AACtE,YAAM,UAAU,QAAQ,KAAK;AAC7B,YAAM,OAAO,SAAS,QAAQ,KAAK,QAAQ,MAAM;AACjD,UACE;AAAA,QACE,SAAS,CAAC;AAAA,QACV,SAAS,CAAC;AAAA,QACV,QAAQ,CAAC;AAAA,QACT,QAAQ,CAAC;AAAA,QACT,KAAK,CAAC;AAAA,QACN,KAAK,CAAC;AAAA,MACR,KAAK,kBACL;AACA,cAAM,IAAI;AAAA,UACR,GAAG,QAAQ,IAAI;AAAA,QACjB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,MAAI,QAAQ;AACZ,WAAS,QAAQ,GAAG,QAAQ,QAAQ,QAAQ,SAAS,GAAG;AACtD,UAAM,YAAY,QAAQ,KAAK;AAC/B,UAAM,WAAW,QAAQ,KAAK;AAC9B,QACE,UAAU,CAAC,IAAI,SAAS,CAAC,KACxB,UAAU,CAAC,MAAM,SAAS,CAAC,KAAK,UAAU,CAAC,IAAI,SAAS,CAAC,GAC1D;AACA,cAAQ;AAAA,IACV;AAAA,EACF;AACA,QAAM,SAAS,IAAI,aAAa,QAAQ,SAAS,CAAC;AAClD,WAAS,QAAQ,GAAG,QAAQ,QAAQ,QAAQ,SAAS,GAAG;AACtD,UAAM,QAAQ,SAAS,QAAQ,SAAS,QAAQ,MAAM;AACtD,WAAO,QAAQ,CAAC,IAAI,MAAM,CAAC;AAC3B,WAAO,QAAQ,IAAI,CAAC,IAAI,MAAM,CAAC;AAAA,EACjC;AACA,SAAO;AACT;AAEO,SAAS,qBAAqB,UAAiD;AACpF,QAAM,QAAQ,SAAS,SAAS;AAChC,QAAM,YAAY,MAAM,KAAK,EAAE,QAAQ,MAAM,GAAG,CAAC,GAAG,UAAU,KAAK;AACnE,QAAM,YAA4B,CAAC;AACnC,SAAO,UAAU,SAAS,GAAG;AAC3B,QAAI,mBAAmB;AACvB,QAAI,yBAAyB,OAAO;AACpC,aAAS,WAAW,GAAG,WAAW,UAAU,QAAQ,YAAY,GAAG;AACjE,YAAMA,YAAW,WAAW,WAAW,UAAU,SAAS,KAAK,UAAU,MAAM;AAC/E,YAAMC,WAAU,UAAU,QAAQ;AAClC,YAAMC,QAAO,WAAW,WAAW,KAAK,UAAU,MAAM;AACxD,YAAM,OAAO;AAAA,QACX,SAASF,YAAW,CAAC;AAAA,QACrB,SAASA,YAAW,IAAI,CAAC;AAAA,QACzB,SAASC,WAAU,CAAC;AAAA,QACpB,SAASA,WAAU,IAAI,CAAC;AAAA,QACxB,SAASC,QAAO,CAAC;AAAA,QACjB,SAASA,QAAO,IAAI,CAAC;AAAA,MACvB;AACA,UAAI,QAAQ,kBAAkB;AAC5B;AAAA,MACF;AACA,UAAI,iBAAiB;AACrB,iBAAW,aAAa,WAAW;AACjC,YAAI,cAAcF,aAAY,cAAcC,YAAW,cAAcC,OAAM;AACzE;AAAA,QACF;AACA,YAAI,gBAAgB,UAAU,WAAWF,WAAUC,UAASC,KAAI,GAAG;AACjE,2BAAiB;AACjB;AAAA,QACF;AAAA,MACF;AACA,UAAI,CAAC,kBAAkBD,WAAU,wBAAwB;AACvD,2BAAmB;AACnB,iCAAyBA;AAAA,MAC3B;AAAA,IACF;AACA,QAAI,mBAAmB,GAAG;AACxB,YAAM,IAAI,WAAW,sDAAsD;AAAA,IAC7E;AACA,UAAM,WAAW,WAAW,mBAAmB,UAAU,SAAS,KAAK,UAAU,MAAM;AACvF,UAAM,UAAU,UAAU,gBAAgB;AAC1C,UAAM,OAAO,WAAW,mBAAmB,KAAK,UAAU,MAAM;AAChE,cAAU,KAAK,aAAa,UAAU,UAAU,SAAS,IAAI,CAAC;AAC9D,cAAU,OAAO,kBAAkB,CAAC;AAAA,EACtC;AACA,YAAU,KAAK,aAAa,UAAU,UAAU,CAAC,GAAI,UAAU,CAAC,GAAI,UAAU,CAAC,CAAE,CAAC;AAClF,SAAO,OAAO,OAAO,SAAS;AAChC;AAEO,SAAS,kBAAkB,UAK/B;AACD,MAAI,YAAY;AAChB,MAAI,wBAAwB;AAC5B,MAAI,wBAAwB;AAC5B,MAAI,qBAAqB;AACzB,WAAS,SAAS,GAAG,SAAS,SAAS,QAAQ,UAAU,GAAG;AAC1D,UAAM,cAAc,SAAS,KAAK,SAAS;AAC3C,UAAM,KAAK,SAAS,MAAM;AAC1B,UAAM,KAAK,SAAS,SAAS,CAAC;AAC9B,UAAM,KAAK,SAAS,UAAU;AAC9B,UAAM,KAAK,SAAS,aAAa,CAAC;AAClC,UAAM,QAAQ,KAAK,KAAK,KAAK;AAC7B,iBAAa;AACb,8BAA0B,KAAK,MAAM;AACrC,8BAA0B,KAAK,MAAM;AACrC,0BACE,SACC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK;AAAA,EAC5D;AACA,QAAM,OAAO,YAAY;AACzB,QAAM,YAAY,yBAAyB,IAAI;AAC/C,QAAM,YAAY,yBAAyB,IAAI;AAC/C,QAAM,qBAAqB,qBAAqB;AAChD,SAAO,OAAO,OAAO;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA,aACE,qBAAqB,QAAQ,YAAY,YAAY,YAAY;AAAA,EACrE,CAAC;AACH;AAEO,SAAS,eACd,MACA,MACA,MACA,MACoB;AACpB,SAAO,OAAO,OAAO;AAAA,IACnB,KAAK,OAAO,OAAO,CAAC,UAAU,IAAI,GAAG,UAAU,IAAI,CAAC,CAAU;AAAA,IAC9D,KAAK,OAAO,OAAO,CAAC,UAAU,IAAI,GAAG,UAAU,IAAI,CAAC,CAAU;AAAA,EAChE,CAAC;AACH;AAEO,SAAS,UAAU,OAAuB;AAC/C,SAAO,OAAO,GAAG,OAAO,EAAE,IAAI,IAAI;AACpC;AAEA,SAAS,qCACP,QACoB;AACpB,QAAM,SAAS,OAAO,OAAO,CAAC,OAAO,UAAU;AAC7C,UAAM,WAAW,QAAQ,QAAQ,OAAO,SAAS,KAAK,OAAO,MAAM;AACnE,WAAO,MAAM,CAAC,MAAM,SAAS,CAAC,KAAK,MAAM,CAAC,MAAM,SAAS,CAAC;AAAA,EAC5D,CAAC;AACD,MAAI,UAAU;AACd,SAAO,WAAW,OAAO,UAAU,GAAG;AACpC,cAAU;AACV,aAAS,QAAQ,GAAG,QAAQ,OAAO,QAAQ,SAAS,GAAG;AACrD,YAAM,WAAW,QAAQ,QAAQ,OAAO,SAAS,KAAK,OAAO,MAAM;AACnE,YAAM,UAAU,OAAO,KAAK;AAC5B,YAAM,OAAO,QAAQ,QAAQ,KAAK,OAAO,MAAM;AAC/C,UACE,KAAK;AAAA,QACH;AAAA,UACE,SAAS,CAAC;AAAA,UACV,SAAS,CAAC;AAAA,UACV,QAAQ,CAAC;AAAA,UACT,QAAQ,CAAC;AAAA,UACT,KAAK,CAAC;AAAA,UACN,KAAK,CAAC;AAAA,QACR;AAAA,MACF,KAAK,kBACL;AACA,eAAO,OAAO,OAAO,CAAC;AACtB,kBAAU;AACV;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,oBAAoB,QAA8C;AACzE,WAAS,QAAQ,GAAG,QAAQ,OAAO,QAAQ,SAAS,GAAG;AACrD,UAAM,aAAa,QAAQ,KAAK,OAAO;AACvC,aAAS,SAAS,QAAQ,GAAG,SAAS,OAAO,QAAQ,UAAU,GAAG;AAChE,YAAM,cAAc,SAAS,KAAK,OAAO;AACzC,UACE,UAAU,UACV,cAAc,UACd,eAAe,OACf;AACA;AAAA,MACF;AACA,UACE;AAAA,QACE,OAAO,KAAK;AAAA,QACZ,OAAO,SAAS;AAAA,QAChB,OAAO,MAAM;AAAA,QACb,OAAO,UAAU;AAAA,MACnB,GACA;AACA,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,kBACP,YACA,UACA,aACA,WACS;AACT,QAAM,YAAY;AAAA,IAChB,WAAW,CAAC;AAAA,IACZ,WAAW,CAAC;AAAA,IACZ,SAAS,CAAC;AAAA,IACV,SAAS,CAAC;AAAA,IACV,YAAY,CAAC;AAAA,IACb,YAAY,CAAC;AAAA,EACf;AACA,QAAM,aAAa;AAAA,IACjB,WAAW,CAAC;AAAA,IACZ,WAAW,CAAC;AAAA,IACZ,SAAS,CAAC;AAAA,IACV,SAAS,CAAC;AAAA,IACV,UAAU,CAAC;AAAA,IACX,UAAU,CAAC;AAAA,EACb;AACA,QAAM,YAAY;AAAA,IAChB,YAAY,CAAC;AAAA,IACb,YAAY,CAAC;AAAA,IACb,UAAU,CAAC;AAAA,IACX,UAAU,CAAC;AAAA,IACX,WAAW,CAAC;AAAA,IACZ,WAAW,CAAC;AAAA,EACd;AACA,QAAM,aAAa;AAAA,IACjB,YAAY,CAAC;AAAA,IACb,YAAY,CAAC;AAAA,IACb,UAAU,CAAC;AAAA,IACX,UAAU,CAAC;AAAA,IACX,SAAS,CAAC;AAAA,IACV,SAAS,CAAC;AAAA,EACZ;AACA,SACE,KAAK,KAAK,SAAS,MAAM,KAAK,KAAK,UAAU,KAC7C,KAAK,KAAK,SAAS,MAAM,KAAK,KAAK,UAAU;AAEjD;AAEA,SAAS,gBACP,UACA,OACA,OACA,QACA,OACS;AACT,QAAM,KAAK,SAAS,QAAQ,CAAC;AAC7B,QAAM,KAAK,SAAS,QAAQ,IAAI,CAAC;AACjC,QAAM,aAAa,QAAQ,SAAS,QAAQ,CAAC,GAAI,SAAS,QAAQ,IAAI,CAAC,GAAI,SAAS,SAAS,CAAC,GAAI,SAAS,SAAS,IAAI,CAAC,GAAI,IAAI,EAAE;AACnI,QAAM,cAAc,QAAQ,SAAS,SAAS,CAAC,GAAI,SAAS,SAAS,IAAI,CAAC,GAAI,SAAS,QAAQ,CAAC,GAAI,SAAS,QAAQ,IAAI,CAAC,GAAI,IAAI,EAAE;AACpI,QAAM,aAAa,QAAQ,SAAS,QAAQ,CAAC,GAAI,SAAS,QAAQ,IAAI,CAAC,GAAI,SAAS,QAAQ,CAAC,GAAI,SAAS,QAAQ,IAAI,CAAC,GAAI,IAAI,EAAE;AACjI,SACE,cAAc,CAAC,oBACf,eAAe,CAAC,oBAChB,cAAc,CAAC;AAEnB;AAEA,SAAS,aACP,UACA,OACA,QACA,OACc;AACd,SAAO,IAAI,aAAa;AAAA,IACtB,SAAS,QAAQ,CAAC;AAAA,IAAI,SAAS,QAAQ,IAAI,CAAC;AAAA,IAC5C,SAAS,SAAS,CAAC;AAAA,IAAI,SAAS,SAAS,IAAI,CAAC;AAAA,IAC9C,SAAS,QAAQ,CAAC;AAAA,IAAI,SAAS,QAAQ,IAAI,CAAC;AAAA,EAC9C,CAAC;AACH;",
|
|
6
|
+
"names": ["previous", "current", "next"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export declare const GEOMETRY_EPSILON = 1e-9;
|
|
2
|
+
export declare const CONTACT_SLOP = 0.005;
|
|
3
|
+
export declare const MAX_POSITION_CORRECTION = 0.2;
|
|
4
|
+
export declare const RESTITUTION_VELOCITY_THRESHOLD = 1;
|
|
5
|
+
export declare const SLEEP_LINEAR_SPEED = 0.05;
|
|
6
|
+
export declare const SLEEP_ANGULAR_SPEED_DEGREES = 0.5;
|
|
7
|
+
export declare const SLEEP_DURATION_SECONDS = 0.5;
|
|
8
|
+
export declare const FAT_AABB_MARGIN = 0.1;
|
|
9
|
+
export declare const MAX_GJK_ITERATIONS = 24;
|
|
10
|
+
export declare const MAX_EPA_ITERATIONS = 32;
|
|
11
|
+
export declare const MAX_CCD_IMPACTS_PER_TICK = 4;
|
|
12
|
+
export declare const DEGREES_TO_RADIANS: number;
|
|
13
|
+
export declare const RADIANS_TO_DEGREES: number;
|
|
14
|
+
export declare const DEFAULT_GRAVITY: readonly [0, 0];
|
|
15
|
+
export declare const DEFAULT_FIXED_STEP_MILLISECONDS: number;
|
|
16
|
+
export declare const DEFAULT_MAX_CATCH_UP_STEPS = 4;
|
|
17
|
+
export declare const DEFAULT_INTERPOLATION: "linear";
|
|
18
|
+
export declare const DEFAULT_SLEEPING = true;
|
|
19
|
+
export declare const DEFAULT_VELOCITY_ITERATIONS = 4;
|
|
20
|
+
export declare const DEFAULT_POSITION_ITERATIONS = 1;
|
|
21
|
+
export declare const MIN_SOLVER_ITERATIONS = 1;
|
|
22
|
+
export declare const MAX_SOLVER_ITERATIONS = 32;
|
|
23
|
+
export declare const MIN_CATCH_UP_STEPS = 1;
|
|
24
|
+
export declare const MAX_CATCH_UP_STEPS = 16;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
const GEOMETRY_EPSILON = 1e-9;
|
|
2
|
+
const CONTACT_SLOP = 5e-3;
|
|
3
|
+
const MAX_POSITION_CORRECTION = 0.2;
|
|
4
|
+
const RESTITUTION_VELOCITY_THRESHOLD = 1;
|
|
5
|
+
const SLEEP_LINEAR_SPEED = 0.05;
|
|
6
|
+
const SLEEP_ANGULAR_SPEED_DEGREES = 0.5;
|
|
7
|
+
const SLEEP_DURATION_SECONDS = 0.5;
|
|
8
|
+
const FAT_AABB_MARGIN = 0.1;
|
|
9
|
+
const MAX_GJK_ITERATIONS = 24;
|
|
10
|
+
const MAX_EPA_ITERATIONS = 32;
|
|
11
|
+
const MAX_CCD_IMPACTS_PER_TICK = 4;
|
|
12
|
+
const DEGREES_TO_RADIANS = Math.PI / 180;
|
|
13
|
+
const RADIANS_TO_DEGREES = 180 / Math.PI;
|
|
14
|
+
const DEFAULT_GRAVITY = Object.freeze([0, 0]);
|
|
15
|
+
const DEFAULT_FIXED_STEP_MILLISECONDS = 1e3 / 60;
|
|
16
|
+
const DEFAULT_MAX_CATCH_UP_STEPS = 4;
|
|
17
|
+
const DEFAULT_INTERPOLATION = "linear";
|
|
18
|
+
const DEFAULT_SLEEPING = true;
|
|
19
|
+
const DEFAULT_VELOCITY_ITERATIONS = 4;
|
|
20
|
+
const DEFAULT_POSITION_ITERATIONS = 1;
|
|
21
|
+
const MIN_SOLVER_ITERATIONS = 1;
|
|
22
|
+
const MAX_SOLVER_ITERATIONS = 32;
|
|
23
|
+
const MIN_CATCH_UP_STEPS = 1;
|
|
24
|
+
const MAX_CATCH_UP_STEPS = 16;
|
|
25
|
+
export {
|
|
26
|
+
CONTACT_SLOP,
|
|
27
|
+
DEFAULT_FIXED_STEP_MILLISECONDS,
|
|
28
|
+
DEFAULT_GRAVITY,
|
|
29
|
+
DEFAULT_INTERPOLATION,
|
|
30
|
+
DEFAULT_MAX_CATCH_UP_STEPS,
|
|
31
|
+
DEFAULT_POSITION_ITERATIONS,
|
|
32
|
+
DEFAULT_SLEEPING,
|
|
33
|
+
DEFAULT_VELOCITY_ITERATIONS,
|
|
34
|
+
DEGREES_TO_RADIANS,
|
|
35
|
+
FAT_AABB_MARGIN,
|
|
36
|
+
GEOMETRY_EPSILON,
|
|
37
|
+
MAX_CATCH_UP_STEPS,
|
|
38
|
+
MAX_CCD_IMPACTS_PER_TICK,
|
|
39
|
+
MAX_EPA_ITERATIONS,
|
|
40
|
+
MAX_GJK_ITERATIONS,
|
|
41
|
+
MAX_POSITION_CORRECTION,
|
|
42
|
+
MAX_SOLVER_ITERATIONS,
|
|
43
|
+
MIN_CATCH_UP_STEPS,
|
|
44
|
+
MIN_SOLVER_ITERATIONS,
|
|
45
|
+
RADIANS_TO_DEGREES,
|
|
46
|
+
RESTITUTION_VELOCITY_THRESHOLD,
|
|
47
|
+
SLEEP_ANGULAR_SPEED_DEGREES,
|
|
48
|
+
SLEEP_DURATION_SECONDS,
|
|
49
|
+
SLEEP_LINEAR_SPEED
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=numeric-policy.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/features/physics/lib/2d/numeric-policy.ts"],
|
|
4
|
+
"sourcesContent": ["export const GEOMETRY_EPSILON = 1e-9;\nexport const CONTACT_SLOP = 0.005;\nexport const MAX_POSITION_CORRECTION = 0.2;\nexport const RESTITUTION_VELOCITY_THRESHOLD = 1;\nexport const SLEEP_LINEAR_SPEED = 0.05;\nexport const SLEEP_ANGULAR_SPEED_DEGREES = 0.5;\nexport const SLEEP_DURATION_SECONDS = 0.5;\nexport const FAT_AABB_MARGIN = 0.1;\nexport const MAX_GJK_ITERATIONS = 24;\nexport const MAX_EPA_ITERATIONS = 32;\nexport const MAX_CCD_IMPACTS_PER_TICK = 4;\n\nexport const DEGREES_TO_RADIANS = Math.PI / 180;\nexport const RADIANS_TO_DEGREES = 180 / Math.PI;\n\nexport const DEFAULT_GRAVITY = Object.freeze([0, 0] as const);\nexport const DEFAULT_FIXED_STEP_MILLISECONDS = 1000 / 60;\nexport const DEFAULT_MAX_CATCH_UP_STEPS = 4;\nexport const DEFAULT_INTERPOLATION = \"linear\" as const;\nexport const DEFAULT_SLEEPING = true;\nexport const DEFAULT_VELOCITY_ITERATIONS = 4;\nexport const DEFAULT_POSITION_ITERATIONS = 1;\n\nexport const MIN_SOLVER_ITERATIONS = 1;\nexport const MAX_SOLVER_ITERATIONS = 32;\nexport const MIN_CATCH_UP_STEPS = 1;\nexport const MAX_CATCH_UP_STEPS = 16;\n"],
|
|
5
|
+
"mappings": "AAAO,MAAM,mBAAmB;AACzB,MAAM,eAAe;AACrB,MAAM,0BAA0B;AAChC,MAAM,iCAAiC;AACvC,MAAM,qBAAqB;AAC3B,MAAM,8BAA8B;AACpC,MAAM,yBAAyB;AAC/B,MAAM,kBAAkB;AACxB,MAAM,qBAAqB;AAC3B,MAAM,qBAAqB;AAC3B,MAAM,2BAA2B;AAEjC,MAAM,qBAAqB,KAAK,KAAK;AACrC,MAAM,qBAAqB,MAAM,KAAK;AAEtC,MAAM,kBAAkB,OAAO,OAAO,CAAC,GAAG,CAAC,CAAU;AACrD,MAAM,kCAAkC,MAAO;AAC/C,MAAM,6BAA6B;AACnC,MAAM,wBAAwB;AAC9B,MAAM,mBAAmB;AACzB,MAAM,8BAA8B;AACpC,MAAM,8BAA8B;AAEpC,MAAM,wBAAwB;AAC9B,MAAM,wBAAwB;AAC9B,MAAM,qBAAqB;AAC3B,MAAM,qBAAqB;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { type PibblInternalSignalBatch, type PibblInternalSimulationOwner } from "@pibbl/core/internal";
|
|
2
|
+
import type { PibblPhysicsPose2D, PibblPhysicsVector2 } from "../../../2d-geometry.js";
|
|
3
|
+
import type { PibblPhysicsBodyHandle2D } from "../types.js";
|
|
4
|
+
import type { PhysicsWorld2DController } from "./controller.js";
|
|
5
|
+
export type PhysicsBodyHandleField2D = "position" | "rotationDegrees" | "linearVelocity" | "angularVelocityDegreesPerSecond" | "sleeping" | "enabled" | "generation";
|
|
6
|
+
export interface PhysicsBodyHandleBinding2D {
|
|
7
|
+
readonly controller: PhysicsWorld2DController;
|
|
8
|
+
readonly bodyId: number;
|
|
9
|
+
readonly bindingGeneration: number;
|
|
10
|
+
}
|
|
11
|
+
interface BodyFieldValue2D {
|
|
12
|
+
readonly position: PibblPhysicsVector2;
|
|
13
|
+
readonly rotationDegrees: number;
|
|
14
|
+
readonly linearVelocity: PibblPhysicsVector2;
|
|
15
|
+
readonly angularVelocityDegreesPerSecond: number;
|
|
16
|
+
readonly sleeping: boolean;
|
|
17
|
+
readonly enabled: boolean;
|
|
18
|
+
readonly generation: number;
|
|
19
|
+
}
|
|
20
|
+
export interface PhysicsBodyHandleValues2D extends BodyFieldValue2D {
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Returns one stable, component-owned 2D body endpoint for this hook slot.
|
|
24
|
+
*
|
|
25
|
+
* @returns A stable body handle that can be attached to a physics body. See
|
|
26
|
+
* {@link PibblPhysicsBodyHandle2D} .
|
|
27
|
+
*
|
|
28
|
+
* @see {@link PibblPhysicsBodyHandle2D}
|
|
29
|
+
*/
|
|
30
|
+
export declare function pibblPhysicsBody2D(): PibblPhysicsBodyHandle2D;
|
|
31
|
+
/**
|
|
32
|
+
* Queues a force on a body, optionally at a world point and with wake-up control.
|
|
33
|
+
*
|
|
34
|
+
* @param body - Body receiving the force. See {@link PibblPhysicsBodyHandle2D}.
|
|
35
|
+
* @param force - Force vector in the world's public coordinate system. See
|
|
36
|
+
* {@link PibblPhysicsVector2} .
|
|
37
|
+
* @param options - Optional application point and wake policy. See {@link PibblPhysicsVector2}.
|
|
38
|
+
*
|
|
39
|
+
* @see {@link PibblPhysicsBodyHandle2D}
|
|
40
|
+
* @see {@link PibblPhysicsVector2}
|
|
41
|
+
*/
|
|
42
|
+
export declare function applyForce2D(body: PibblPhysicsBodyHandle2D, force: PibblPhysicsVector2, options?: Readonly<{
|
|
43
|
+
at?: PibblPhysicsVector2;
|
|
44
|
+
wake?: boolean;
|
|
45
|
+
}>): void;
|
|
46
|
+
/**
|
|
47
|
+
* Queues an instantaneous momentum change, optionally at a world point and with wake-up control.
|
|
48
|
+
*
|
|
49
|
+
* @param body - Body receiving the impulse. See {@link PibblPhysicsBodyHandle2D}.
|
|
50
|
+
* @param impulse - Impulse vector in the world's public coordinate system. See
|
|
51
|
+
* {@link PibblPhysicsVector2} .
|
|
52
|
+
* @param options - Optional application point and wake policy. See {@link PibblPhysicsVector2}.
|
|
53
|
+
*
|
|
54
|
+
* @see {@link PibblPhysicsBodyHandle2D}
|
|
55
|
+
* @see {@link PibblPhysicsVector2}
|
|
56
|
+
*/
|
|
57
|
+
export declare function applyImpulse2D(body: PibblPhysicsBodyHandle2D, impulse: PibblPhysicsVector2, options?: Readonly<{
|
|
58
|
+
at?: PibblPhysicsVector2;
|
|
59
|
+
wake?: boolean;
|
|
60
|
+
}>): void;
|
|
61
|
+
/**
|
|
62
|
+
* Queues torque on a dynamic body through the shared scheduler.
|
|
63
|
+
*
|
|
64
|
+
* @param body - Body receiving the torque. See {@link PibblPhysicsBodyHandle2D}.
|
|
65
|
+
* @param torque - Torque to apply in the world's public units.
|
|
66
|
+
*
|
|
67
|
+
* @see {@link PibblPhysicsBodyHandle2D}
|
|
68
|
+
*/
|
|
69
|
+
export declare function applyTorque2D(body: PibblPhysicsBodyHandle2D, torque: number): void;
|
|
70
|
+
/**
|
|
71
|
+
* Queues a body's linear velocity in physics units per second.
|
|
72
|
+
*
|
|
73
|
+
* @param body - Body whose linear velocity changes. See {@link PibblPhysicsBodyHandle2D}.
|
|
74
|
+
* @param velocity - Velocity vector in public distance units per second. See
|
|
75
|
+
* {@link PibblPhysicsVector2} .
|
|
76
|
+
*
|
|
77
|
+
* @see {@link PibblPhysicsBodyHandle2D}
|
|
78
|
+
* @see {@link PibblPhysicsVector2}
|
|
79
|
+
*/
|
|
80
|
+
export declare function setLinearVelocity2D(body: PibblPhysicsBodyHandle2D, velocity: PibblPhysicsVector2): void;
|
|
81
|
+
/**
|
|
82
|
+
* Queues a body's angular velocity in degrees per second.
|
|
83
|
+
*
|
|
84
|
+
* @param body - Body whose angular velocity changes. See {@link PibblPhysicsBodyHandle2D}.
|
|
85
|
+
* @param degreesPerSecond - Angular speed in degrees per second.
|
|
86
|
+
*
|
|
87
|
+
* @see {@link PibblPhysicsBodyHandle2D}
|
|
88
|
+
*/
|
|
89
|
+
export declare function setAngularVelocity2D(body: PibblPhysicsBodyHandle2D, degreesPerSecond: number): void;
|
|
90
|
+
/**
|
|
91
|
+
* Queues an immediate pose change for a body at the next admitted simulation command phase.
|
|
92
|
+
*
|
|
93
|
+
* @param body - Body to reposition. See {@link PibblPhysicsBodyHandle2D}.
|
|
94
|
+
* @param pose - Destination position and rotation in public coordinates. See
|
|
95
|
+
* {@link PibblPhysicsPose2D} .
|
|
96
|
+
*
|
|
97
|
+
* @see {@link PibblPhysicsBodyHandle2D}
|
|
98
|
+
* @see {@link PibblPhysicsPose2D}
|
|
99
|
+
*/
|
|
100
|
+
export declare function teleportBody2D(body: PibblPhysicsBodyHandle2D, pose: PibblPhysicsPose2D): void;
|
|
101
|
+
/**
|
|
102
|
+
* Queues a request to wake a sleeping body.
|
|
103
|
+
*
|
|
104
|
+
* @param body - Body to wake. See {@link PibblPhysicsBodyHandle2D}.
|
|
105
|
+
*
|
|
106
|
+
* @see {@link PibblPhysicsBodyHandle2D}
|
|
107
|
+
*/
|
|
108
|
+
export declare function wakeBody2D(body: PibblPhysicsBodyHandle2D): void;
|
|
109
|
+
/**
|
|
110
|
+
* Queues a request to put a body to sleep.
|
|
111
|
+
*
|
|
112
|
+
* @param body - Body to put to sleep. See {@link PibblPhysicsBodyHandle2D}.
|
|
113
|
+
*
|
|
114
|
+
* @see {@link PibblPhysicsBodyHandle2D}
|
|
115
|
+
*/
|
|
116
|
+
export declare function sleepBody2D(body: PibblPhysicsBodyHandle2D): void;
|
|
117
|
+
/**
|
|
118
|
+
* Queues re-enabling a body with the requested velocity-preservation policy.
|
|
119
|
+
*
|
|
120
|
+
* @param body - Body to re-enable. See {@link PibblPhysicsBodyHandle2D}.
|
|
121
|
+
* @param options - Whether to zero or preserve velocity when enabling.
|
|
122
|
+
*
|
|
123
|
+
* @see {@link PibblPhysicsBodyHandle2D}
|
|
124
|
+
*/
|
|
125
|
+
export declare function enableBody2D(body: PibblPhysicsBodyHandle2D, options?: Readonly<{
|
|
126
|
+
velocity?: "zero" | "preserve";
|
|
127
|
+
}>): void;
|
|
128
|
+
/**
|
|
129
|
+
* Queues removal of a body's active participation in the simulation.
|
|
130
|
+
*
|
|
131
|
+
* @param body - Body to disable. See {@link PibblPhysicsBodyHandle2D}.
|
|
132
|
+
*
|
|
133
|
+
* @see {@link PibblPhysicsBodyHandle2D}
|
|
134
|
+
*/
|
|
135
|
+
export declare function disableBody2D(body: PibblPhysicsBodyHandle2D): void;
|
|
136
|
+
export declare function createPhysicsBodyHandle2D(owner: PibblInternalSimulationOwner): PibblPhysicsBodyHandle2D;
|
|
137
|
+
export declare function bindPhysicsBodyHandle2D(handle: PibblPhysicsBodyHandle2D, controller: PhysicsWorld2DController, bodyId: number): number;
|
|
138
|
+
export declare function unbindPhysicsBodyHandle2D(handle: PibblPhysicsBodyHandle2D, controller: PhysicsWorld2DController, bodyId: number, bindingGeneration: number): void;
|
|
139
|
+
export declare function physicsBodyHandleBinding2D(handle: PibblPhysicsBodyHandle2D): PhysicsBodyHandleBinding2D | undefined;
|
|
140
|
+
export declare function isPhysicsBodyHandle2D(value: unknown): value is PibblPhysicsBodyHandle2D;
|
|
141
|
+
export declare function physicsBodyHandleOwner2D(handle: PibblPhysicsBodyHandle2D): PibblInternalSimulationOwner;
|
|
142
|
+
export declare function stagePhysicsBodyHandle2D(batch: PibblInternalSignalBatch, handle: PibblPhysicsBodyHandle2D, values: PhysicsBodyHandleValues2D, writer: object): void;
|
|
143
|
+
export declare function snapshotPhysicsBodyHandle2DForTest(handle: PibblPhysicsBodyHandle2D): Readonly<{
|
|
144
|
+
readonly bound: boolean;
|
|
145
|
+
readonly bindingGeneration: number;
|
|
146
|
+
readonly materializedFields: readonly PhysicsBodyHandleField2D[];
|
|
147
|
+
}>;
|
|
148
|
+
export {};
|
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
import { signal } from "@pibbl/core";
|
|
2
|
+
import {
|
|
3
|
+
pibblInternalCurrentSimulationOwner,
|
|
4
|
+
pibblInternalQueueSimulationBegin,
|
|
5
|
+
useInternalHookSlot
|
|
6
|
+
} from "@pibbl/core/internal";
|
|
7
|
+
import {
|
|
8
|
+
copyFiniteVector2,
|
|
9
|
+
requireFiniteNumber
|
|
10
|
+
} from "../../shared/validation.js";
|
|
11
|
+
const states = /* @__PURE__ */ new WeakMap();
|
|
12
|
+
const externalBindings = /* @__PURE__ */ new WeakMap();
|
|
13
|
+
function pibblPhysicsBody2D() {
|
|
14
|
+
const owner = pibblInternalCurrentSimulationOwner();
|
|
15
|
+
const slot = useInternalHookSlot("physicsBody2DHandle", (teardowns) => {
|
|
16
|
+
const handle = createPhysicsBodyHandle2D(owner);
|
|
17
|
+
teardowns.add(() => disposePhysicsBodyHandle2D(handle));
|
|
18
|
+
return handle;
|
|
19
|
+
});
|
|
20
|
+
return slot.value;
|
|
21
|
+
}
|
|
22
|
+
function applyForce2D(body, force, options = {}) {
|
|
23
|
+
const copied = copyFiniteVector2(force, "force");
|
|
24
|
+
const point = options.at === void 0 ? void 0 : copyFiniteVector2(options.at, "options.at");
|
|
25
|
+
queueBodyCommand(body, {
|
|
26
|
+
kind: "apply-force",
|
|
27
|
+
bodyId: 0,
|
|
28
|
+
forceX: copied[0],
|
|
29
|
+
forceY: copied[1],
|
|
30
|
+
pointX: point?.[0],
|
|
31
|
+
pointY: point?.[1],
|
|
32
|
+
wake: requireBoolean(options.wake ?? true, "options.wake")
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
function applyImpulse2D(body, impulse, options = {}) {
|
|
36
|
+
const copied = copyFiniteVector2(impulse, "impulse");
|
|
37
|
+
const point = options.at === void 0 ? void 0 : copyFiniteVector2(options.at, "options.at");
|
|
38
|
+
queueBodyCommand(body, {
|
|
39
|
+
kind: "apply-impulse",
|
|
40
|
+
bodyId: 0,
|
|
41
|
+
impulseX: copied[0],
|
|
42
|
+
impulseY: copied[1],
|
|
43
|
+
pointX: point?.[0],
|
|
44
|
+
pointY: point?.[1],
|
|
45
|
+
wake: requireBoolean(options.wake ?? true, "options.wake")
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
function applyTorque2D(body, torque) {
|
|
49
|
+
queueBodyCommand(body, {
|
|
50
|
+
kind: "apply-torque",
|
|
51
|
+
bodyId: 0,
|
|
52
|
+
torque: requireFiniteNumber(torque, "torque")
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
function setLinearVelocity2D(body, velocity) {
|
|
56
|
+
const copied = copyFiniteVector2(velocity, "velocity");
|
|
57
|
+
queueBodyCommand(body, {
|
|
58
|
+
kind: "set-linear-velocity",
|
|
59
|
+
bodyId: 0,
|
|
60
|
+
linearVelocityX: copied[0],
|
|
61
|
+
linearVelocityY: copied[1]
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
function setAngularVelocity2D(body, degreesPerSecond) {
|
|
65
|
+
queueBodyCommand(body, {
|
|
66
|
+
kind: "set-angular-velocity",
|
|
67
|
+
bodyId: 0,
|
|
68
|
+
angularVelocityDegrees: requireFiniteNumber(
|
|
69
|
+
degreesPerSecond,
|
|
70
|
+
"degreesPerSecond"
|
|
71
|
+
)
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
function teleportBody2D(body, pose) {
|
|
75
|
+
queueBodyCommand(body, {
|
|
76
|
+
kind: "set-pose",
|
|
77
|
+
bodyId: 0,
|
|
78
|
+
pose: Object.freeze({
|
|
79
|
+
position: copyFiniteVector2(pose.position, "pose.position"),
|
|
80
|
+
rotationDegrees: requireFiniteNumber(
|
|
81
|
+
pose.rotationDegrees,
|
|
82
|
+
"pose.rotationDegrees"
|
|
83
|
+
)
|
|
84
|
+
})
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
function wakeBody2D(body) {
|
|
88
|
+
queueBodyCommand(body, { kind: "wake", bodyId: 0 });
|
|
89
|
+
}
|
|
90
|
+
function sleepBody2D(body) {
|
|
91
|
+
queueBodyCommand(body, { kind: "sleep", bodyId: 0 });
|
|
92
|
+
}
|
|
93
|
+
function enableBody2D(body, options = {}) {
|
|
94
|
+
const velocity = options.velocity ?? "zero";
|
|
95
|
+
if (velocity !== "zero" && velocity !== "preserve") {
|
|
96
|
+
throw new TypeError('options.velocity must be "zero" or "preserve".');
|
|
97
|
+
}
|
|
98
|
+
queueBodyCommand(body, { kind: "enable", bodyId: 0, velocity });
|
|
99
|
+
}
|
|
100
|
+
function disableBody2D(body) {
|
|
101
|
+
queueBodyCommand(body, { kind: "disable", bodyId: 0 });
|
|
102
|
+
}
|
|
103
|
+
function createPhysicsBodyHandle2D(owner) {
|
|
104
|
+
const target = {};
|
|
105
|
+
const state = {
|
|
106
|
+
owner,
|
|
107
|
+
signals: {},
|
|
108
|
+
binding: void 0,
|
|
109
|
+
nextBindingGeneration: 0,
|
|
110
|
+
active: true
|
|
111
|
+
};
|
|
112
|
+
for (const field of BODY_FIELDS_2D) {
|
|
113
|
+
Object.defineProperty(target, field, {
|
|
114
|
+
enumerable: true,
|
|
115
|
+
get: () => materializeSignal(state, field).asReadonly()
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
const handle = Object.freeze(target);
|
|
119
|
+
states.set(handle, state);
|
|
120
|
+
return handle;
|
|
121
|
+
}
|
|
122
|
+
function bindPhysicsBodyHandle2D(handle, controller, bodyId) {
|
|
123
|
+
const state = states.get(handle);
|
|
124
|
+
if (state === void 0) {
|
|
125
|
+
if (typeof handle !== "object" || handle === null) {
|
|
126
|
+
throw new TypeError("Expected a live Pibbl physics 2D body handle.");
|
|
127
|
+
}
|
|
128
|
+
let external = externalBindings.get(handle);
|
|
129
|
+
if (external?.binding !== void 0) {
|
|
130
|
+
if (external.binding.controller === controller && external.binding.bodyId === bodyId) {
|
|
131
|
+
return external.binding.bindingGeneration;
|
|
132
|
+
}
|
|
133
|
+
throw new Error(
|
|
134
|
+
"A Pibbl physics 2D body handle may bind to at most one live body."
|
|
135
|
+
);
|
|
136
|
+
}
|
|
137
|
+
external ??= { binding: void 0, nextBindingGeneration: 0 };
|
|
138
|
+
const bindingGeneration2 = ++external.nextBindingGeneration;
|
|
139
|
+
external.binding = Object.freeze({ controller, bodyId, bindingGeneration: bindingGeneration2 });
|
|
140
|
+
externalBindings.set(handle, external);
|
|
141
|
+
return bindingGeneration2;
|
|
142
|
+
}
|
|
143
|
+
const current = state.binding;
|
|
144
|
+
if (current !== void 0) {
|
|
145
|
+
if (current.controller === controller && current.bodyId === bodyId) {
|
|
146
|
+
return current.bindingGeneration;
|
|
147
|
+
}
|
|
148
|
+
throw new Error(
|
|
149
|
+
"A Pibbl physics 2D body handle may bind to at most one live body."
|
|
150
|
+
);
|
|
151
|
+
}
|
|
152
|
+
const bindingGeneration = ++state.nextBindingGeneration;
|
|
153
|
+
state.binding = Object.freeze({ controller, bodyId, bindingGeneration });
|
|
154
|
+
return bindingGeneration;
|
|
155
|
+
}
|
|
156
|
+
function unbindPhysicsBodyHandle2D(handle, controller, bodyId, bindingGeneration) {
|
|
157
|
+
const state = states.get(handle);
|
|
158
|
+
if (state === void 0) {
|
|
159
|
+
const external = externalBindings.get(handle);
|
|
160
|
+
const binding2 = external?.binding;
|
|
161
|
+
if (binding2?.controller === controller && binding2.bodyId === bodyId && binding2.bindingGeneration === bindingGeneration) {
|
|
162
|
+
external.binding = void 0;
|
|
163
|
+
}
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
const binding = state?.binding;
|
|
167
|
+
if (binding?.controller === controller && binding.bodyId === bodyId && binding.bindingGeneration === bindingGeneration) {
|
|
168
|
+
state.binding = void 0;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
function physicsBodyHandleBinding2D(handle) {
|
|
172
|
+
return states.get(handle)?.binding ?? externalBindings.get(handle)?.binding;
|
|
173
|
+
}
|
|
174
|
+
function isPhysicsBodyHandle2D(value) {
|
|
175
|
+
return typeof value === "object" && value !== null && (states.has(value) || externalBindings.has(value));
|
|
176
|
+
}
|
|
177
|
+
function physicsBodyHandleOwner2D(handle) {
|
|
178
|
+
return requireState(handle).owner;
|
|
179
|
+
}
|
|
180
|
+
function stagePhysicsBodyHandle2D(batch, handle, values, writer) {
|
|
181
|
+
const state = states.get(handle);
|
|
182
|
+
if (state === void 0) {
|
|
183
|
+
stageLegacyHandle(batch, handle, values, writer);
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
for (const field of BODY_FIELDS_2D) {
|
|
187
|
+
const target = state.signals[field];
|
|
188
|
+
if (target !== void 0) batch.stage(target, values[field], writer);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
function snapshotPhysicsBodyHandle2DForTest(handle) {
|
|
192
|
+
const state = requireState(handle);
|
|
193
|
+
return Object.freeze({
|
|
194
|
+
bound: state.binding !== void 0,
|
|
195
|
+
bindingGeneration: state.binding?.bindingGeneration ?? 0,
|
|
196
|
+
materializedFields: Object.freeze(
|
|
197
|
+
BODY_FIELDS_2D.filter((field) => state.signals[field] !== void 0)
|
|
198
|
+
)
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
function disposePhysicsBodyHandle2D(handle) {
|
|
202
|
+
const state = states.get(handle);
|
|
203
|
+
if (state === void 0 || !state.active) return;
|
|
204
|
+
state.active = false;
|
|
205
|
+
state.binding = void 0;
|
|
206
|
+
}
|
|
207
|
+
function queueBodyCommand(handle, command) {
|
|
208
|
+
const state = requireState(handle);
|
|
209
|
+
const captured = state.binding;
|
|
210
|
+
pibblInternalQueueSimulationBegin(state.owner, () => {
|
|
211
|
+
const current = state.binding;
|
|
212
|
+
if (captured === void 0 || current === void 0 || current.bindingGeneration !== captured.bindingGeneration || current.controller !== captured.controller || current.bodyId !== captured.bodyId) {
|
|
213
|
+
traceStaleCommand(command.kind, captured?.bindingGeneration ?? 0);
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
if (!current.controller.acceptBodyHandleCommand(
|
|
217
|
+
handle,
|
|
218
|
+
current.bindingGeneration,
|
|
219
|
+
Object.freeze({
|
|
220
|
+
...command,
|
|
221
|
+
bodyId: current.bodyId
|
|
222
|
+
})
|
|
223
|
+
)) {
|
|
224
|
+
traceStaleCommand(command.kind, current.bindingGeneration);
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
function traceStaleCommand(kind, generation) {
|
|
229
|
+
const runtime = globalThis;
|
|
230
|
+
if (runtime.process?.env?.NODE_ENV === "production") return;
|
|
231
|
+
console.warn(
|
|
232
|
+
`[Pibbl physics] Ignored stale ${kind} command for body handle generation ${String(generation)}.`
|
|
233
|
+
);
|
|
234
|
+
}
|
|
235
|
+
function requireBoolean(value, path) {
|
|
236
|
+
if (typeof value !== "boolean")
|
|
237
|
+
throw new TypeError(`${path} must be boolean.`);
|
|
238
|
+
return value;
|
|
239
|
+
}
|
|
240
|
+
function requireState(handle) {
|
|
241
|
+
const state = typeof handle === "object" && handle !== null ? states.get(handle) : void 0;
|
|
242
|
+
if (state === void 0 || !state.active) {
|
|
243
|
+
throw new TypeError("Expected a live Pibbl physics 2D body handle.");
|
|
244
|
+
}
|
|
245
|
+
return state;
|
|
246
|
+
}
|
|
247
|
+
function materializeSignal(state, field) {
|
|
248
|
+
let target = state.signals[field];
|
|
249
|
+
if (target === void 0) {
|
|
250
|
+
const binding = state.binding;
|
|
251
|
+
const current = binding === void 0 ? void 0 : binding.controller.bodyHandleValues(binding.bodyId);
|
|
252
|
+
target = signal(current?.[field] ?? INITIAL_VALUES_2D[field], {
|
|
253
|
+
debugName: `PhysicsBody2D.${field}`
|
|
254
|
+
});
|
|
255
|
+
state.signals[field] = target;
|
|
256
|
+
}
|
|
257
|
+
return target;
|
|
258
|
+
}
|
|
259
|
+
function stageLegacyHandle(batch, handle, values, writer) {
|
|
260
|
+
for (const field of BODY_FIELDS_2D) {
|
|
261
|
+
const target = handle[field];
|
|
262
|
+
batch.stage(target, values[field], writer);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
const ZERO_VECTOR_2D = Object.freeze([0, 0]);
|
|
266
|
+
const INITIAL_VALUES_2D = Object.freeze({
|
|
267
|
+
position: ZERO_VECTOR_2D,
|
|
268
|
+
rotationDegrees: 0,
|
|
269
|
+
linearVelocity: ZERO_VECTOR_2D,
|
|
270
|
+
angularVelocityDegreesPerSecond: 0,
|
|
271
|
+
sleeping: false,
|
|
272
|
+
enabled: false,
|
|
273
|
+
generation: 0
|
|
274
|
+
});
|
|
275
|
+
const BODY_FIELDS_2D = Object.freeze([
|
|
276
|
+
"position",
|
|
277
|
+
"rotationDegrees",
|
|
278
|
+
"linearVelocity",
|
|
279
|
+
"angularVelocityDegreesPerSecond",
|
|
280
|
+
"sleeping",
|
|
281
|
+
"enabled",
|
|
282
|
+
"generation"
|
|
283
|
+
]);
|
|
284
|
+
export {
|
|
285
|
+
applyForce2D,
|
|
286
|
+
applyImpulse2D,
|
|
287
|
+
applyTorque2D,
|
|
288
|
+
bindPhysicsBodyHandle2D,
|
|
289
|
+
createPhysicsBodyHandle2D,
|
|
290
|
+
disableBody2D,
|
|
291
|
+
enableBody2D,
|
|
292
|
+
isPhysicsBodyHandle2D,
|
|
293
|
+
physicsBodyHandleBinding2D,
|
|
294
|
+
physicsBodyHandleOwner2D,
|
|
295
|
+
pibblPhysicsBody2D,
|
|
296
|
+
setAngularVelocity2D,
|
|
297
|
+
setLinearVelocity2D,
|
|
298
|
+
sleepBody2D,
|
|
299
|
+
snapshotPhysicsBodyHandle2DForTest,
|
|
300
|
+
stagePhysicsBodyHandle2D,
|
|
301
|
+
teleportBody2D,
|
|
302
|
+
unbindPhysicsBodyHandle2D,
|
|
303
|
+
wakeBody2D
|
|
304
|
+
};
|
|
305
|
+
//# sourceMappingURL=body-handle.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/features/physics/lib/2d/runtime/body-handle.ts"],
|
|
4
|
+
"sourcesContent": ["import { signal, type WritableSignal } from \"@pibbl/core\";\nimport {\n pibblInternalCurrentSimulationOwner,\n pibblInternalQueueSimulationBegin,\n useInternalHookSlot,\n type PibblInternalSignalBatch,\n type PibblInternalSimulationOwner,\n} from \"@pibbl/core/internal\";\nimport type {\n PibblPhysicsPose2D,\n PibblPhysicsVector2,\n} from \"../../../2d-geometry.js\";\nimport type { PibblPhysicsBodyHandle2D } from \"../types.js\";\nimport type { PhysicsBodyCommand2D } from \"../world/world.js\";\nimport {\n copyFiniteVector2,\n requireFiniteNumber,\n} from \"../../shared/validation.js\";\nimport type { PhysicsWorld2DController } from \"./controller.js\";\n\nexport type PhysicsBodyHandleField2D =\n | \"position\"\n | \"rotationDegrees\"\n | \"linearVelocity\"\n | \"angularVelocityDegreesPerSecond\"\n | \"sleeping\"\n | \"enabled\"\n | \"generation\";\n\nexport interface PhysicsBodyHandleBinding2D {\n readonly controller: PhysicsWorld2DController;\n readonly bodyId: number;\n readonly bindingGeneration: number;\n}\n\ninterface PhysicsBodyHandleState2D {\n readonly owner: PibblInternalSimulationOwner;\n readonly signals: Partial<{\n [Field in PhysicsBodyHandleField2D]: WritableSignal<\n BodyFieldValue2D[Field]\n >;\n }>;\n binding: PhysicsBodyHandleBinding2D | undefined;\n nextBindingGeneration: number;\n active: boolean;\n}\n\ninterface BodyFieldValue2D {\n readonly position: PibblPhysicsVector2;\n readonly rotationDegrees: number;\n readonly linearVelocity: PibblPhysicsVector2;\n readonly angularVelocityDegreesPerSecond: number;\n readonly sleeping: boolean;\n readonly enabled: boolean;\n readonly generation: number;\n}\n\nexport interface PhysicsBodyHandleValues2D extends BodyFieldValue2D {}\n\nconst states = new WeakMap<object, PhysicsBodyHandleState2D>();\nconst externalBindings = new WeakMap<\n object,\n {\n binding: PhysicsBodyHandleBinding2D | undefined;\n nextBindingGeneration: number;\n }\n>();\n\n/**\n * Returns one stable, component-owned 2D body endpoint for this hook slot.\n *\n * @returns A stable body handle that can be attached to a physics body. See\n * {@link PibblPhysicsBodyHandle2D} .\n *\n * @see {@link PibblPhysicsBodyHandle2D}\n */\nexport function pibblPhysicsBody2D(): PibblPhysicsBodyHandle2D {\n const owner = pibblInternalCurrentSimulationOwner();\n const slot = useInternalHookSlot(\"physicsBody2DHandle\", (teardowns) => {\n const handle = createPhysicsBodyHandle2D(owner);\n teardowns.add(() => disposePhysicsBodyHandle2D(handle));\n return handle;\n });\n return slot.value;\n}\n\n/**\n * Queues a force on a body, optionally at a world point and with wake-up control.\n *\n * @param body - Body receiving the force. See {@link PibblPhysicsBodyHandle2D}.\n * @param force - Force vector in the world's public coordinate system. See\n * {@link PibblPhysicsVector2} .\n * @param options - Optional application point and wake policy. See {@link PibblPhysicsVector2}.\n *\n * @see {@link PibblPhysicsBodyHandle2D}\n * @see {@link PibblPhysicsVector2}\n */\nexport function applyForce2D(\n body: PibblPhysicsBodyHandle2D,\n force: PibblPhysicsVector2,\n options: Readonly<{ at?: PibblPhysicsVector2; wake?: boolean }> = {},\n): void {\n const copied = copyFiniteVector2(force, \"force\");\n const point =\n options.at === undefined\n ? undefined\n : copyFiniteVector2(options.at, \"options.at\");\n queueBodyCommand(body, {\n kind: \"apply-force\",\n bodyId: 0,\n forceX: copied[0],\n forceY: copied[1],\n pointX: point?.[0],\n pointY: point?.[1],\n wake: requireBoolean(options.wake ?? true, \"options.wake\"),\n });\n}\n\n/**\n * Queues an instantaneous momentum change, optionally at a world point and with wake-up control.\n *\n * @param body - Body receiving the impulse. See {@link PibblPhysicsBodyHandle2D}.\n * @param impulse - Impulse vector in the world's public coordinate system. See\n * {@link PibblPhysicsVector2} .\n * @param options - Optional application point and wake policy. See {@link PibblPhysicsVector2}.\n *\n * @see {@link PibblPhysicsBodyHandle2D}\n * @see {@link PibblPhysicsVector2}\n */\nexport function applyImpulse2D(\n body: PibblPhysicsBodyHandle2D,\n impulse: PibblPhysicsVector2,\n options: Readonly<{ at?: PibblPhysicsVector2; wake?: boolean }> = {},\n): void {\n const copied = copyFiniteVector2(impulse, \"impulse\");\n const point =\n options.at === undefined\n ? undefined\n : copyFiniteVector2(options.at, \"options.at\");\n queueBodyCommand(body, {\n kind: \"apply-impulse\",\n bodyId: 0,\n impulseX: copied[0],\n impulseY: copied[1],\n pointX: point?.[0],\n pointY: point?.[1],\n wake: requireBoolean(options.wake ?? true, \"options.wake\"),\n });\n}\n\n/**\n * Queues torque on a dynamic body through the shared scheduler.\n *\n * @param body - Body receiving the torque. See {@link PibblPhysicsBodyHandle2D}.\n * @param torque - Torque to apply in the world's public units.\n *\n * @see {@link PibblPhysicsBodyHandle2D}\n */\nexport function applyTorque2D(\n body: PibblPhysicsBodyHandle2D,\n torque: number,\n): void {\n queueBodyCommand(body, {\n kind: \"apply-torque\",\n bodyId: 0,\n torque: requireFiniteNumber(torque, \"torque\"),\n });\n}\n\n/**\n * Queues a body's linear velocity in physics units per second.\n *\n * @param body - Body whose linear velocity changes. See {@link PibblPhysicsBodyHandle2D}.\n * @param velocity - Velocity vector in public distance units per second. See\n * {@link PibblPhysicsVector2} .\n *\n * @see {@link PibblPhysicsBodyHandle2D}\n * @see {@link PibblPhysicsVector2}\n */\nexport function setLinearVelocity2D(\n body: PibblPhysicsBodyHandle2D,\n velocity: PibblPhysicsVector2,\n): void {\n const copied = copyFiniteVector2(velocity, \"velocity\");\n queueBodyCommand(body, {\n kind: \"set-linear-velocity\",\n bodyId: 0,\n linearVelocityX: copied[0],\n linearVelocityY: copied[1],\n });\n}\n\n/**\n * Queues a body's angular velocity in degrees per second.\n *\n * @param body - Body whose angular velocity changes. See {@link PibblPhysicsBodyHandle2D}.\n * @param degreesPerSecond - Angular speed in degrees per second.\n *\n * @see {@link PibblPhysicsBodyHandle2D}\n */\nexport function setAngularVelocity2D(\n body: PibblPhysicsBodyHandle2D,\n degreesPerSecond: number,\n): void {\n queueBodyCommand(body, {\n kind: \"set-angular-velocity\",\n bodyId: 0,\n angularVelocityDegrees: requireFiniteNumber(\n degreesPerSecond,\n \"degreesPerSecond\",\n ),\n });\n}\n\n/**\n * Queues an immediate pose change for a body at the next admitted simulation command phase.\n *\n * @param body - Body to reposition. See {@link PibblPhysicsBodyHandle2D}.\n * @param pose - Destination position and rotation in public coordinates. See\n * {@link PibblPhysicsPose2D} .\n *\n * @see {@link PibblPhysicsBodyHandle2D}\n * @see {@link PibblPhysicsPose2D}\n */\nexport function teleportBody2D(\n body: PibblPhysicsBodyHandle2D,\n pose: PibblPhysicsPose2D,\n): void {\n queueBodyCommand(body, {\n kind: \"set-pose\",\n bodyId: 0,\n pose: Object.freeze({\n position: copyFiniteVector2(pose.position, \"pose.position\"),\n rotationDegrees: requireFiniteNumber(\n pose.rotationDegrees,\n \"pose.rotationDegrees\",\n ),\n }),\n });\n}\n\n/**\n * Queues a request to wake a sleeping body.\n *\n * @param body - Body to wake. See {@link PibblPhysicsBodyHandle2D}.\n *\n * @see {@link PibblPhysicsBodyHandle2D}\n */\nexport function wakeBody2D(body: PibblPhysicsBodyHandle2D): void {\n queueBodyCommand(body, { kind: \"wake\", bodyId: 0 });\n}\n\n/**\n * Queues a request to put a body to sleep.\n *\n * @param body - Body to put to sleep. See {@link PibblPhysicsBodyHandle2D}.\n *\n * @see {@link PibblPhysicsBodyHandle2D}\n */\nexport function sleepBody2D(body: PibblPhysicsBodyHandle2D): void {\n queueBodyCommand(body, { kind: \"sleep\", bodyId: 0 });\n}\n\n/**\n * Queues re-enabling a body with the requested velocity-preservation policy.\n *\n * @param body - Body to re-enable. See {@link PibblPhysicsBodyHandle2D}.\n * @param options - Whether to zero or preserve velocity when enabling.\n *\n * @see {@link PibblPhysicsBodyHandle2D}\n */\nexport function enableBody2D(\n body: PibblPhysicsBodyHandle2D,\n options: Readonly<{ velocity?: \"zero\" | \"preserve\" }> = {},\n): void {\n const velocity = options.velocity ?? \"zero\";\n if (velocity !== \"zero\" && velocity !== \"preserve\") {\n throw new TypeError('options.velocity must be \"zero\" or \"preserve\".');\n }\n queueBodyCommand(body, { kind: \"enable\", bodyId: 0, velocity });\n}\n\n/**\n * Queues removal of a body's active participation in the simulation.\n *\n * @param body - Body to disable. See {@link PibblPhysicsBodyHandle2D}.\n *\n * @see {@link PibblPhysicsBodyHandle2D}\n */\nexport function disableBody2D(body: PibblPhysicsBodyHandle2D): void {\n queueBodyCommand(body, { kind: \"disable\", bodyId: 0 });\n}\n\nexport function createPhysicsBodyHandle2D(\n owner: PibblInternalSimulationOwner,\n): PibblPhysicsBodyHandle2D {\n const target = {} as Record<PropertyKey, unknown>;\n const state: PhysicsBodyHandleState2D = {\n owner,\n signals: {},\n binding: undefined,\n nextBindingGeneration: 0,\n active: true,\n };\n for (const field of BODY_FIELDS_2D) {\n Object.defineProperty(target, field, {\n enumerable: true,\n get: () => materializeSignal(state, field).asReadonly(),\n });\n }\n const handle = Object.freeze(target) as unknown as PibblPhysicsBodyHandle2D;\n states.set(handle, state);\n return handle;\n}\n\nexport function bindPhysicsBodyHandle2D(\n handle: PibblPhysicsBodyHandle2D,\n controller: PhysicsWorld2DController,\n bodyId: number,\n): number {\n const state = states.get(handle as object);\n if (state === undefined) {\n if (typeof handle !== \"object\" || handle === null) {\n throw new TypeError(\"Expected a live Pibbl physics 2D body handle.\");\n }\n let external = externalBindings.get(handle as object);\n if (external?.binding !== undefined) {\n if (\n external.binding.controller === controller &&\n external.binding.bodyId === bodyId\n ) {\n return external.binding.bindingGeneration;\n }\n throw new Error(\n \"A Pibbl physics 2D body handle may bind to at most one live body.\",\n );\n }\n external ??= { binding: undefined, nextBindingGeneration: 0 };\n const bindingGeneration = ++external.nextBindingGeneration;\n external.binding = Object.freeze({ controller, bodyId, bindingGeneration });\n externalBindings.set(handle as object, external);\n return bindingGeneration;\n }\n const current = state.binding;\n if (current !== undefined) {\n if (current.controller === controller && current.bodyId === bodyId) {\n return current.bindingGeneration;\n }\n throw new Error(\n \"A Pibbl physics 2D body handle may bind to at most one live body.\",\n );\n }\n const bindingGeneration = ++state.nextBindingGeneration;\n state.binding = Object.freeze({ controller, bodyId, bindingGeneration });\n return bindingGeneration;\n}\n\nexport function unbindPhysicsBodyHandle2D(\n handle: PibblPhysicsBodyHandle2D,\n controller: PhysicsWorld2DController,\n bodyId: number,\n bindingGeneration: number,\n): void {\n const state = states.get(handle as object);\n if (state === undefined) {\n const external = externalBindings.get(handle as object);\n const binding = external?.binding;\n if (\n binding?.controller === controller &&\n binding.bodyId === bodyId &&\n binding.bindingGeneration === bindingGeneration\n ) {\n external!.binding = undefined;\n }\n return;\n }\n const binding = state?.binding;\n if (\n binding?.controller === controller &&\n binding.bodyId === bodyId &&\n binding.bindingGeneration === bindingGeneration\n ) {\n state!.binding = undefined;\n }\n}\n\nexport function physicsBodyHandleBinding2D(\n handle: PibblPhysicsBodyHandle2D,\n): PhysicsBodyHandleBinding2D | undefined {\n return (\n states.get(handle as object)?.binding ??\n externalBindings.get(handle as object)?.binding\n );\n}\n\nexport function isPhysicsBodyHandle2D(\n value: unknown,\n): value is PibblPhysicsBodyHandle2D {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (states.has(value) || externalBindings.has(value))\n );\n}\n\nexport function physicsBodyHandleOwner2D(\n handle: PibblPhysicsBodyHandle2D,\n): PibblInternalSimulationOwner {\n return requireState(handle).owner;\n}\n\nexport function stagePhysicsBodyHandle2D(\n batch: PibblInternalSignalBatch,\n handle: PibblPhysicsBodyHandle2D,\n values: PhysicsBodyHandleValues2D,\n writer: object,\n): void {\n const state = states.get(handle as object);\n if (state === undefined) {\n stageLegacyHandle(batch, handle, values, writer);\n return;\n }\n for (const field of BODY_FIELDS_2D) {\n const target = state.signals[field] as\n WritableSignal<BodyFieldValue2D[typeof field]> | undefined;\n if (target !== undefined) batch.stage(target, values[field], writer);\n }\n}\n\nexport function snapshotPhysicsBodyHandle2DForTest(\n handle: PibblPhysicsBodyHandle2D,\n): Readonly<{\n readonly bound: boolean;\n readonly bindingGeneration: number;\n readonly materializedFields: readonly PhysicsBodyHandleField2D[];\n}> {\n const state = requireState(handle);\n return Object.freeze({\n bound: state.binding !== undefined,\n bindingGeneration: state.binding?.bindingGeneration ?? 0,\n materializedFields: Object.freeze(\n BODY_FIELDS_2D.filter((field) => state.signals[field] !== undefined),\n ),\n });\n}\n\nfunction disposePhysicsBodyHandle2D(handle: PibblPhysicsBodyHandle2D): void {\n const state = states.get(handle as object);\n if (state === undefined || !state.active) return;\n state.active = false;\n state.binding = undefined;\n}\n\nfunction queueBodyCommand(\n handle: PibblPhysicsBodyHandle2D,\n command: PhysicsBodyCommand2D,\n): void {\n const state = requireState(handle);\n const captured = state.binding;\n pibblInternalQueueSimulationBegin(state.owner, () => {\n const current = state.binding;\n if (\n captured === undefined ||\n current === undefined ||\n current.bindingGeneration !== captured.bindingGeneration ||\n current.controller !== captured.controller ||\n current.bodyId !== captured.bodyId\n ) {\n traceStaleCommand(command.kind, captured?.bindingGeneration ?? 0);\n return;\n }\n if (\n !current.controller.acceptBodyHandleCommand(\n handle,\n current.bindingGeneration,\n Object.freeze({\n ...command,\n bodyId: current.bodyId,\n }) as PhysicsBodyCommand2D,\n )\n ) {\n traceStaleCommand(command.kind, current.bindingGeneration);\n }\n });\n}\n\nfunction traceStaleCommand(\n kind: PhysicsBodyCommand2D[\"kind\"],\n generation: number,\n): void {\n const runtime = globalThis as typeof globalThis & {\n readonly process?: Readonly<{\n readonly env?: Readonly<{ readonly NODE_ENV?: string }>;\n }>;\n };\n if (runtime.process?.env?.NODE_ENV === \"production\") return;\n console.warn(\n `[Pibbl physics] Ignored stale ${kind} command for body handle generation ${String(generation)}.`,\n );\n}\n\nfunction requireBoolean(value: boolean, path: string): boolean {\n if (typeof value !== \"boolean\")\n throw new TypeError(`${path} must be boolean.`);\n return value;\n}\n\nfunction requireState(\n handle: PibblPhysicsBodyHandle2D,\n): PhysicsBodyHandleState2D {\n const state =\n typeof handle === \"object\" && handle !== null\n ? states.get(handle as object)\n : undefined;\n if (state === undefined || !state.active) {\n throw new TypeError(\"Expected a live Pibbl physics 2D body handle.\");\n }\n return state;\n}\n\nfunction materializeSignal<Field extends PhysicsBodyHandleField2D>(\n state: PhysicsBodyHandleState2D,\n field: Field,\n): WritableSignal<BodyFieldValue2D[Field]> {\n let target = state.signals[field] as\n WritableSignal<BodyFieldValue2D[Field]> | undefined;\n if (target === undefined) {\n const binding = state.binding;\n const current =\n binding === undefined\n ? undefined\n : binding.controller.bodyHandleValues(binding.bodyId);\n target = signal(current?.[field] ?? INITIAL_VALUES_2D[field], {\n debugName: `PhysicsBody2D.${field}`,\n });\n state.signals[field] = target as never;\n }\n return target;\n}\n\nfunction stageLegacyHandle(\n batch: PibblInternalSignalBatch,\n handle: PibblPhysicsBodyHandle2D,\n values: PhysicsBodyHandleValues2D,\n writer: object,\n): void {\n for (const field of BODY_FIELDS_2D) {\n const target = handle[field] as WritableSignal<\n BodyFieldValue2D[typeof field]\n >;\n batch.stage(target, values[field], writer);\n }\n}\n\nconst ZERO_VECTOR_2D = Object.freeze([0, 0] as const);\n\nconst INITIAL_VALUES_2D: BodyFieldValue2D = Object.freeze({\n position: ZERO_VECTOR_2D,\n rotationDegrees: 0,\n linearVelocity: ZERO_VECTOR_2D,\n angularVelocityDegreesPerSecond: 0,\n sleeping: false,\n enabled: false,\n generation: 0,\n});\n\nconst BODY_FIELDS_2D = Object.freeze([\n \"position\",\n \"rotationDegrees\",\n \"linearVelocity\",\n \"angularVelocityDegreesPerSecond\",\n \"sleeping\",\n \"enabled\",\n \"generation\",\n] as const);\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["bindingGeneration", "binding"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { PhysicsWorld2DController } from "./controller.js";
|
|
2
|
+
export interface PhysicsBodyScope2D {
|
|
3
|
+
readonly world: PhysicsWorld2DController;
|
|
4
|
+
readonly bodyId: number;
|
|
5
|
+
}
|
|
6
|
+
export declare function pushPhysicsWorld2D(world: PhysicsWorld2DController): () => void;
|
|
7
|
+
export declare function requireCurrentPhysicsWorld2D(): PhysicsWorld2DController;
|
|
8
|
+
export declare function pushPhysicsBody2D(scope: PhysicsBodyScope2D): () => void;
|
|
9
|
+
export declare function requireCurrentPhysicsBody2D(): PhysicsBodyScope2D;
|