@fundamental-engine/core 0.9.2 → 0.9.4
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/README.md +12 -11
- package/dist/agents/event-agent.d.ts.map +1 -1
- package/dist/agents/event-agent.js +13 -9
- package/dist/agents/event-agent.js.map +1 -1
- package/dist/config/forces.config.d.ts +1 -1
- package/dist/config/forces.config.d.ts.map +1 -1
- package/dist/config/forces.config.js +2 -2
- package/dist/config/forces.config.js.map +1 -1
- package/dist/config/themes.d.ts +1 -1
- package/dist/conformance/run.d.ts +3 -3
- package/dist/conformance/run.d.ts.map +1 -1
- package/dist/conformance/run.js +36 -33
- package/dist/conformance/run.js.map +1 -1
- package/dist/conformance/types.d.ts +4 -1
- package/dist/conformance/types.d.ts.map +1 -1
- package/dist/contracts/guards.d.ts +4 -2
- package/dist/contracts/guards.d.ts.map +1 -1
- package/dist/contracts/guards.js.map +1 -1
- package/dist/contracts/passport.d.ts +1 -1
- package/dist/contracts/passport.d.ts.map +1 -1
- package/dist/contracts/passport.js +9 -0
- package/dist/contracts/passport.js.map +1 -1
- package/dist/diagnostics/energy.d.ts +1 -1
- package/dist/diagnostics/energy.d.ts.map +1 -1
- package/dist/diagnostics/fields.d.ts +1 -1
- package/dist/diagnostics/fields.d.ts.map +1 -1
- package/dist/diagnostics/modes.d.ts +1 -1
- package/dist/diagnostics/modes.d.ts.map +1 -1
- package/dist/diagnostics/modes.js +1 -1
- package/dist/diagnostics/modes.js.map +1 -1
- package/dist/diagnostics/potential.d.ts +1 -1
- package/dist/diagnostics/potential.d.ts.map +1 -1
- package/dist/diagnostics/probes.d.ts +1 -1
- package/dist/diagnostics/probes.d.ts.map +1 -1
- package/dist/diagnostics/probes.js +1 -1
- package/dist/diagnostics/probes.js.map +1 -1
- package/dist/diagnostics/render.d.ts +1 -1
- package/dist/diagnostics/render.d.ts.map +1 -1
- package/dist/{core → engine}/accretion.d.ts +1 -1
- package/dist/engine/accretion.d.ts.map +1 -0
- package/dist/{core → engine}/accretion.js +1 -1
- package/dist/engine/accretion.js.map +1 -0
- package/dist/engine/agents.d.ts.map +1 -0
- package/dist/engine/agents.js.map +1 -0
- package/dist/engine/attention.d.ts.map +1 -0
- package/dist/engine/attention.js.map +1 -0
- package/dist/engine/causality.d.ts.map +1 -0
- package/dist/engine/causality.js.map +1 -0
- package/dist/engine/conditions.d.ts.map +1 -0
- package/dist/engine/conditions.js.map +1 -0
- package/dist/{core → engine}/currents.d.ts +1 -1
- package/dist/engine/currents.d.ts.map +1 -0
- package/dist/engine/currents.js.map +1 -0
- package/dist/engine/dock.d.ts.map +1 -0
- package/dist/engine/dock.js.map +1 -0
- package/dist/{core → engine}/events.d.ts +7 -4
- package/dist/engine/events.d.ts.map +1 -0
- package/dist/{core → engine}/events.js +8 -1
- package/dist/engine/events.js.map +1 -0
- package/dist/{core → engine}/feedback-sink.d.ts +1 -1
- package/dist/engine/feedback-sink.d.ts.map +1 -0
- package/dist/{core → engine}/feedback-sink.js +1 -2
- package/dist/engine/feedback-sink.js.map +1 -0
- package/dist/engine/feedback.d.ts.map +1 -0
- package/dist/engine/feedback.js.map +1 -0
- package/dist/engine/field-snapshot.d.ts.map +1 -0
- package/dist/engine/field-snapshot.js.map +1 -0
- package/dist/engine/field-store.d.ts.map +1 -0
- package/dist/engine/field-store.js.map +1 -0
- package/dist/engine/field.d.ts.map +1 -0
- package/dist/{core → engine}/field.js +844 -83
- package/dist/engine/field.js.map +1 -0
- package/dist/engine/fieldline-seeds.d.ts.map +1 -0
- package/dist/engine/fieldline-seeds.js.map +1 -0
- package/dist/engine/fieldlines.d.ts.map +1 -0
- package/dist/{core → engine}/fieldlines.js +1 -1
- package/dist/engine/fieldlines.js.map +1 -0
- package/dist/engine/flow.d.ts.map +1 -0
- package/dist/engine/flow.js.map +1 -0
- package/dist/engine/formations.d.ts.map +1 -0
- package/dist/engine/formations.js.map +1 -0
- package/dist/{core → engine}/frame-harness.d.ts +2 -2
- package/dist/engine/frame-harness.d.ts.map +1 -0
- package/dist/{core → engine}/frame-harness.js +2 -2
- package/dist/engine/frame-harness.js.map +1 -0
- package/dist/engine/governance.d.ts.map +1 -0
- package/dist/engine/governance.js.map +1 -0
- package/dist/engine/heatmap.d.ts.map +1 -0
- package/dist/{core → engine}/heatmap.js +1 -1
- package/dist/engine/heatmap.js.map +1 -0
- package/dist/engine/host-headless.d.ts.map +1 -0
- package/dist/engine/host-headless.js.map +1 -0
- package/dist/engine/host.d.ts +127 -0
- package/dist/engine/host.d.ts.map +1 -0
- package/dist/engine/host.js +63 -0
- package/dist/engine/host.js.map +1 -0
- package/dist/{core → engine}/integrator.d.ts +22 -0
- package/dist/engine/integrator.d.ts.map +1 -0
- package/dist/{core → engine}/integrator.js +123 -18
- package/dist/engine/integrator.js.map +1 -0
- package/dist/engine/lane-registry.d.ts.map +1 -0
- package/dist/engine/lane-registry.js.map +1 -0
- package/dist/engine/projection-agent-json.d.ts.map +1 -0
- package/dist/engine/projection-agent-json.js.map +1 -0
- package/dist/engine/query-lens.d.ts.map +1 -0
- package/dist/engine/query-lens.js.map +1 -0
- package/dist/{core → engine}/reactions.d.ts +7 -0
- package/dist/engine/reactions.d.ts.map +1 -0
- package/dist/{core → engine}/reactions.js +7 -0
- package/dist/engine/reactions.js.map +1 -0
- package/dist/engine/registry.d.ts.map +1 -0
- package/dist/engine/registry.js.map +1 -0
- package/dist/engine/render-backend.d.ts.map +1 -0
- package/dist/engine/render-backend.js.map +1 -0
- package/dist/engine/render-modes.d.ts +106 -0
- package/dist/engine/render-modes.d.ts.map +1 -0
- package/dist/engine/render-modes.js +306 -0
- package/dist/engine/render-modes.js.map +1 -0
- package/dist/engine/reservoir.d.ts.map +1 -0
- package/dist/engine/reservoir.js.map +1 -0
- package/dist/engine/scalar-grid.d.ts.map +1 -0
- package/dist/engine/scalar-grid.js.map +1 -0
- package/dist/{core → engine}/scanner.d.ts +29 -3
- package/dist/engine/scanner.d.ts.map +1 -0
- package/dist/{core → engine}/scanner.js +41 -3
- package/dist/engine/scanner.js.map +1 -0
- package/dist/engine/shadow.d.ts.map +1 -0
- package/dist/engine/shadow.js.map +1 -0
- package/dist/{core → engine}/spatial-hash.d.ts +8 -0
- package/dist/engine/spatial-hash.d.ts.map +1 -0
- package/dist/{core → engine}/spatial-hash.js +26 -3
- package/dist/engine/spatial-hash.js.map +1 -0
- package/dist/engine/streamlines.d.ts.map +1 -0
- package/dist/engine/streamlines.js.map +1 -0
- package/dist/engine/surface.d.ts.map +1 -0
- package/dist/engine/surface.js.map +1 -0
- package/dist/engine/temporal.d.ts.map +1 -0
- package/dist/engine/temporal.js.map +1 -0
- package/dist/engine/thermo.d.ts.map +1 -0
- package/dist/engine/thermo.js.map +1 -0
- package/dist/{core → engine}/types.d.ts +413 -16
- package/dist/engine/types.d.ts.map +1 -0
- package/dist/engine/types.js.map +1 -0
- package/dist/engine/weights.d.ts.map +1 -0
- package/dist/engine/weights.js.map +1 -0
- package/dist/forces/extended.d.ts +2 -2
- package/dist/forces/extended.d.ts.map +1 -1
- package/dist/forces/extended.js +9 -3
- package/dist/forces/extended.js.map +1 -1
- package/dist/forces/index.d.ts +2 -2
- package/dist/forces/index.d.ts.map +1 -1
- package/dist/forces/natural.d.ts +2 -2
- package/dist/forces/natural.d.ts.map +1 -1
- package/dist/forces/natural.js +11 -12
- package/dist/forces/natural.js.map +1 -1
- package/dist/index.d.ts +40 -40
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +40 -40
- package/dist/index.js.map +1 -1
- package/dist/{core → math}/geometry.d.ts +10 -1
- package/dist/math/geometry.d.ts.map +1 -0
- package/dist/{core → math}/geometry.js +16 -0
- package/dist/{core → math}/geometry.js.map +1 -1
- package/dist/{core → math}/math.d.ts.map +1 -1
- package/dist/{core → math}/math.js.map +1 -1
- package/dist/recipes/catalog.d.ts +6 -2
- package/dist/recipes/catalog.d.ts.map +1 -1
- package/dist/recipes/catalog.js +9 -5
- package/dist/recipes/catalog.js.map +1 -1
- package/dist/recipes/compile.d.ts +7 -3
- package/dist/recipes/compile.d.ts.map +1 -1
- package/dist/recipes/compile.js +6 -2
- package/dist/recipes/compile.js.map +1 -1
- package/dist/recipes/focus.d.ts +18 -0
- package/dist/recipes/focus.d.ts.map +1 -0
- package/dist/recipes/focus.js +34 -0
- package/dist/recipes/focus.js.map +1 -0
- package/dist/recipes/index.d.ts +1 -0
- package/dist/recipes/index.d.ts.map +1 -1
- package/dist/recipes/index.js +1 -0
- package/dist/recipes/index.js.map +1 -1
- package/dist/recipes/schema.d.ts +10 -5
- package/dist/recipes/schema.d.ts.map +1 -1
- package/dist/recipes/schema.js +2 -1
- package/dist/recipes/schema.js.map +1 -1
- package/dist/recipes/wayfinding.d.ts +4 -2
- package/dist/recipes/wayfinding.d.ts.map +1 -1
- package/dist/recipes/wayfinding.js +6 -2
- package/dist/recipes/wayfinding.js.map +1 -1
- package/dist/record/record.d.ts +2 -2
- package/dist/record/record.d.ts.map +1 -1
- package/dist/record/record.js +3 -3
- package/dist/record/record.js.map +1 -1
- package/dist/semantic/layers.d.ts +16 -2
- package/dist/semantic/layers.d.ts.map +1 -1
- package/dist/semantic/layers.js +20 -3
- package/dist/semantic/layers.js.map +1 -1
- package/dist/semantic/materials.js +3 -3
- package/dist/semantic/materials.js.map +1 -1
- package/dist/semantic/states.js +1 -1
- package/dist/semantic/states.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/visual/channels.js +1 -1
- package/dist/visual/mapping.js +1 -1
- package/dist/visual/visualization.d.ts.map +1 -1
- package/dist/visual/visualization.js +4 -0
- package/dist/visual/visualization.js.map +1 -1
- package/package.json +2 -1
- package/dist/core/accretion.d.ts.map +0 -1
- package/dist/core/accretion.js.map +0 -1
- package/dist/core/agents.d.ts.map +0 -1
- package/dist/core/agents.js.map +0 -1
- package/dist/core/attention.d.ts.map +0 -1
- package/dist/core/attention.js.map +0 -1
- package/dist/core/causality.d.ts.map +0 -1
- package/dist/core/causality.js.map +0 -1
- package/dist/core/conditions.d.ts.map +0 -1
- package/dist/core/conditions.js.map +0 -1
- package/dist/core/currents.d.ts.map +0 -1
- package/dist/core/currents.js.map +0 -1
- package/dist/core/dock.d.ts.map +0 -1
- package/dist/core/dock.js.map +0 -1
- package/dist/core/events.d.ts.map +0 -1
- package/dist/core/events.js.map +0 -1
- package/dist/core/feedback-sink.d.ts.map +0 -1
- package/dist/core/feedback-sink.js.map +0 -1
- package/dist/core/feedback.d.ts.map +0 -1
- package/dist/core/feedback.js.map +0 -1
- package/dist/core/field-snapshot.d.ts.map +0 -1
- package/dist/core/field-snapshot.js.map +0 -1
- package/dist/core/field-store.d.ts.map +0 -1
- package/dist/core/field-store.js.map +0 -1
- package/dist/core/field.d.ts.map +0 -1
- package/dist/core/field.js.map +0 -1
- package/dist/core/fieldline-seeds.d.ts.map +0 -1
- package/dist/core/fieldline-seeds.js.map +0 -1
- package/dist/core/fieldlines.d.ts.map +0 -1
- package/dist/core/fieldlines.js.map +0 -1
- package/dist/core/flow.d.ts.map +0 -1
- package/dist/core/flow.js.map +0 -1
- package/dist/core/formations.d.ts.map +0 -1
- package/dist/core/formations.js.map +0 -1
- package/dist/core/frame-harness.d.ts.map +0 -1
- package/dist/core/frame-harness.js.map +0 -1
- package/dist/core/geometry.d.ts.map +0 -1
- package/dist/core/governance.d.ts.map +0 -1
- package/dist/core/governance.js.map +0 -1
- package/dist/core/heatmap.d.ts.map +0 -1
- package/dist/core/heatmap.js.map +0 -1
- package/dist/core/host-headless.d.ts.map +0 -1
- package/dist/core/host-headless.js.map +0 -1
- package/dist/core/host.d.ts +0 -53
- package/dist/core/host.d.ts.map +0 -1
- package/dist/core/host.js +0 -11
- package/dist/core/host.js.map +0 -1
- package/dist/core/integrator.d.ts.map +0 -1
- package/dist/core/integrator.js.map +0 -1
- package/dist/core/lane-registry.d.ts.map +0 -1
- package/dist/core/lane-registry.js.map +0 -1
- package/dist/core/projection-agent-json.d.ts.map +0 -1
- package/dist/core/projection-agent-json.js.map +0 -1
- package/dist/core/query-lens.d.ts.map +0 -1
- package/dist/core/query-lens.js.map +0 -1
- package/dist/core/reactions.d.ts.map +0 -1
- package/dist/core/reactions.js.map +0 -1
- package/dist/core/registry.d.ts.map +0 -1
- package/dist/core/registry.js.map +0 -1
- package/dist/core/render-backend.d.ts.map +0 -1
- package/dist/core/render-backend.js.map +0 -1
- package/dist/core/render-modes.d.ts +0 -42
- package/dist/core/render-modes.d.ts.map +0 -1
- package/dist/core/render-modes.js +0 -141
- package/dist/core/render-modes.js.map +0 -1
- package/dist/core/reservoir.d.ts.map +0 -1
- package/dist/core/reservoir.js.map +0 -1
- package/dist/core/scalar-grid.d.ts.map +0 -1
- package/dist/core/scalar-grid.js.map +0 -1
- package/dist/core/scanner.d.ts.map +0 -1
- package/dist/core/scanner.js.map +0 -1
- package/dist/core/shadow.d.ts.map +0 -1
- package/dist/core/shadow.js.map +0 -1
- package/dist/core/spatial-hash.d.ts.map +0 -1
- package/dist/core/spatial-hash.js.map +0 -1
- package/dist/core/streamlines.d.ts.map +0 -1
- package/dist/core/streamlines.js.map +0 -1
- package/dist/core/surface.d.ts.map +0 -1
- package/dist/core/surface.js.map +0 -1
- package/dist/core/temporal.d.ts.map +0 -1
- package/dist/core/temporal.js.map +0 -1
- package/dist/core/thermo.d.ts.map +0 -1
- package/dist/core/thermo.js.map +0 -1
- package/dist/core/types.d.ts.map +0 -1
- package/dist/core/types.js.map +0 -1
- package/dist/core/weights.d.ts.map +0 -1
- package/dist/core/weights.js.map +0 -1
- /package/dist/{core → engine}/agents.d.ts +0 -0
- /package/dist/{core → engine}/agents.js +0 -0
- /package/dist/{core → engine}/attention.d.ts +0 -0
- /package/dist/{core → engine}/attention.js +0 -0
- /package/dist/{core → engine}/causality.d.ts +0 -0
- /package/dist/{core → engine}/causality.js +0 -0
- /package/dist/{core → engine}/conditions.d.ts +0 -0
- /package/dist/{core → engine}/conditions.js +0 -0
- /package/dist/{core → engine}/currents.js +0 -0
- /package/dist/{core → engine}/dock.d.ts +0 -0
- /package/dist/{core → engine}/dock.js +0 -0
- /package/dist/{core → engine}/feedback.d.ts +0 -0
- /package/dist/{core → engine}/feedback.js +0 -0
- /package/dist/{core → engine}/field-snapshot.d.ts +0 -0
- /package/dist/{core → engine}/field-snapshot.js +0 -0
- /package/dist/{core → engine}/field-store.d.ts +0 -0
- /package/dist/{core → engine}/field-store.js +0 -0
- /package/dist/{core → engine}/field.d.ts +0 -0
- /package/dist/{core → engine}/fieldline-seeds.d.ts +0 -0
- /package/dist/{core → engine}/fieldline-seeds.js +0 -0
- /package/dist/{core → engine}/fieldlines.d.ts +0 -0
- /package/dist/{core → engine}/flow.d.ts +0 -0
- /package/dist/{core → engine}/flow.js +0 -0
- /package/dist/{core → engine}/formations.d.ts +0 -0
- /package/dist/{core → engine}/formations.js +0 -0
- /package/dist/{core → engine}/governance.d.ts +0 -0
- /package/dist/{core → engine}/governance.js +0 -0
- /package/dist/{core → engine}/heatmap.d.ts +0 -0
- /package/dist/{core → engine}/host-headless.d.ts +0 -0
- /package/dist/{core → engine}/host-headless.js +0 -0
- /package/dist/{core → engine}/lane-registry.d.ts +0 -0
- /package/dist/{core → engine}/lane-registry.js +0 -0
- /package/dist/{core → engine}/projection-agent-json.d.ts +0 -0
- /package/dist/{core → engine}/projection-agent-json.js +0 -0
- /package/dist/{core → engine}/query-lens.d.ts +0 -0
- /package/dist/{core → engine}/query-lens.js +0 -0
- /package/dist/{core → engine}/registry.d.ts +0 -0
- /package/dist/{core → engine}/registry.js +0 -0
- /package/dist/{core → engine}/render-backend.d.ts +0 -0
- /package/dist/{core → engine}/render-backend.js +0 -0
- /package/dist/{core → engine}/reservoir.d.ts +0 -0
- /package/dist/{core → engine}/reservoir.js +0 -0
- /package/dist/{core → engine}/scalar-grid.d.ts +0 -0
- /package/dist/{core → engine}/scalar-grid.js +0 -0
- /package/dist/{core → engine}/shadow.d.ts +0 -0
- /package/dist/{core → engine}/shadow.js +0 -0
- /package/dist/{core → engine}/streamlines.d.ts +0 -0
- /package/dist/{core → engine}/streamlines.js +0 -0
- /package/dist/{core → engine}/surface.d.ts +0 -0
- /package/dist/{core → engine}/surface.js +0 -0
- /package/dist/{core → engine}/temporal.d.ts +0 -0
- /package/dist/{core → engine}/temporal.js +0 -0
- /package/dist/{core → engine}/thermo.d.ts +0 -0
- /package/dist/{core → engine}/thermo.js +0 -0
- /package/dist/{core → engine}/types.js +0 -0
- /package/dist/{core → engine}/weights.d.ts +0 -0
- /package/dist/{core → engine}/weights.js +0 -0
- /package/dist/{core → math}/math.d.ts +0 -0
- /package/dist/{core → math}/math.js +0 -0
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FieldHost — the renderer/environment seam (Phase: frontier). `createField`'s engine is
|
|
3
|
+
* renderer-agnostic: every DOM-global touchpoint (viewport size, scroll, rAF, reduced-motion,
|
|
4
|
+
* visibility, the scan root, and event wiring) goes through this injected host instead of `window` /
|
|
5
|
+
* `document` / `requestAnimationFrame` directly. `browserHost()` (in `@fundamental-engine/dom`)
|
|
6
|
+
* binds it to the browser; an alternative host could drive the same engine from a headless renderer,
|
|
7
|
+
* a different document, or a test harness. This interface is pure types — no globals — so `field.ts`
|
|
8
|
+
* imports zero DOM (enforced by `dom-boundary.test.ts`).
|
|
9
|
+
*/
|
|
10
|
+
/** The host's current viewport, in CSS px plus device-pixel ratio. */
|
|
11
|
+
export interface HostViewport {
|
|
12
|
+
width: number;
|
|
13
|
+
height: number;
|
|
14
|
+
dpr: number;
|
|
15
|
+
/** field-space origin in the host's measurement coords — the top-left the field is drawn from.
|
|
16
|
+
* `0,0` for a window-scoped host (the default); a CONTAINED host (`containerHost`) returns its
|
|
17
|
+
* element's `left,top` so the field, its bodies, and its canvas all live in container-local space.
|
|
18
|
+
* `measureBodies` and the thread/move readouts subtract it. Optional → 0 keeps every window host
|
|
19
|
+
* and test byte-identical. */
|
|
20
|
+
originX?: number;
|
|
21
|
+
originY?: number;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* `MinimalFieldHost` — the SMALLEST surface a host must supply for the engine to run. It is the
|
|
25
|
+
* required core of {@link FieldHost}; everything else (scroll, reduced-motion, visibility, the heatmap
|
|
26
|
+
* canvas, and every event subscription) is an OPTIONAL capability the engine degrades around when
|
|
27
|
+
* absent (see {@link hostCapabilities}). A host that supplies only these four members runs the full
|
|
28
|
+
* simulation + feedback pipeline headlessly — it just never scrolls, never pauses on visibility, and
|
|
29
|
+
* cannot draw a heatmap.
|
|
30
|
+
*
|
|
31
|
+
* The three things a host MUST provide:
|
|
32
|
+
* - **geometry** — `root` (the scan root) + `viewport()` (size + DPR + optional origin): *where* the
|
|
33
|
+
* field lives and in what coordinate space.
|
|
34
|
+
* - **time** — `raf()` / `cancelRaf()`: how the frame loop is scheduled (a real rAF, a manual `tick`,
|
|
35
|
+
* a native display link).
|
|
36
|
+
*/
|
|
37
|
+
export interface MinimalFieldHost {
|
|
38
|
+
/** the subtree scanned for `[data-body]` / `[data-move]` / `[data-on]` / `[data-hot]` / `[data-formation]`. */
|
|
39
|
+
root: ParentNode;
|
|
40
|
+
/** the current viewport size + DPR (read each resize). */
|
|
41
|
+
viewport(): HostViewport;
|
|
42
|
+
/** schedule the next frame; returns a handle. */
|
|
43
|
+
raf(cb: (t: number) => void): number;
|
|
44
|
+
/** cancel a scheduled frame. */
|
|
45
|
+
cancelRaf(id: number): void;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* `FieldHost` — the full renderer/environment SPI: the {@link MinimalFieldHost} required core plus the
|
|
49
|
+
* OPTIONAL capabilities the engine consumes when a host offers them. Absent capabilities degrade
|
|
50
|
+
* gracefully (scroll → 0, reduced-motion / hidden → false, subscriptions → no-op, and a drawing mode
|
|
51
|
+
* that needs `createCanvas` throws a clear error rather than the field silently misbehaving). Existing
|
|
52
|
+
* hosts that implement every member keep satisfying this contract unchanged; a new host only has to
|
|
53
|
+
* supply the four required members. Use {@link hostCapabilities} to detect what a given host offers,
|
|
54
|
+
* or {@link defineHost} to fill the no-op defaults from a minimal host.
|
|
55
|
+
*/
|
|
56
|
+
export interface FieldHost extends MinimalFieldHost {
|
|
57
|
+
/** current vertical scroll offset in px. Absent ⇒ the field treats scroll as 0 (never scrolls). */
|
|
58
|
+
scrollY?(): number;
|
|
59
|
+
/** the scrollable height of the page (cached by the caller — reading it forces reflow). Absent ⇒ falls back to the viewport height. */
|
|
60
|
+
scrollHeight?(): number;
|
|
61
|
+
/** whether the user prefers reduced motion (freezes the sim). Absent ⇒ `false` (motion allowed). */
|
|
62
|
+
reducedMotion?(): boolean;
|
|
63
|
+
/** whether the surface is hidden (backgrounded tab) — pauses the loop. Absent ⇒ `false` (never auto-pauses). */
|
|
64
|
+
hidden?(): boolean;
|
|
65
|
+
/** an offscreen canvas for the heatmap buffer. Absent ⇒ any drawing mode that needs it throws a clear error; signals-first (`render: 'none'`) never calls it. */
|
|
66
|
+
createCanvas?(): HTMLCanvasElement;
|
|
67
|
+
/** subscribe to viewport-resize; returns an unsubscribe. Absent ⇒ the field never re-reads its viewport on resize. */
|
|
68
|
+
onResize?(cb: () => void): () => void;
|
|
69
|
+
/** subscribe to scroll; returns an unsubscribe. Absent ⇒ no scroll-driven readouts. */
|
|
70
|
+
onScroll?(cb: () => void): () => void;
|
|
71
|
+
/** subscribe to surface visibility changes; returns an unsubscribe. Absent ⇒ the loop never auto-pauses. */
|
|
72
|
+
onVisibility?(cb: () => void): () => void;
|
|
73
|
+
/** subscribe to user input activity (pointer/wheel/key/touch); returns an unsubscribe. Absent ⇒ no input-activity signal. */
|
|
74
|
+
onInput?(cb: () => void): () => void;
|
|
75
|
+
/** subscribe to a composed shadow-DOM body event by name; returns an unsubscribe. Absent ⇒ programmatic bodies only (no DOM body-event registration). */
|
|
76
|
+
onBodyEvent?(type: string, cb: (e: Event) => void): () => void;
|
|
77
|
+
/** release host-side state when the field is destroyed — called once by `FieldHandle.destroy()`
|
|
78
|
+
* after every event subscription is unsubscribed. A contained host (`containerHost`) uses it to
|
|
79
|
+
* remove its `data-field-boundary` ownership marker so the outer/page field re-adopts the bodies
|
|
80
|
+
* on its next rescan (#980). Absent ⇒ nothing to release. Idempotent by contract. */
|
|
81
|
+
detach?(): void;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* What optional capabilities a {@link FieldHost} actually supplies — the "host conformance" read-out.
|
|
85
|
+
* A capability is present when the host provides the backing member(s); the engine degrades gracefully
|
|
86
|
+
* around any that are absent. This is the third parity/testing category alongside API-surface parity
|
|
87
|
+
* and mathematical conformance: *does this host tick time, provide geometry, feed back, project…?*
|
|
88
|
+
*/
|
|
89
|
+
export interface HostCapabilities {
|
|
90
|
+
/** always true — the required core (`root` + `viewport` + `raf`/`cancelRaf`) is present by type. */
|
|
91
|
+
geometry: boolean;
|
|
92
|
+
/** the host schedules frames (`raf`/`cancelRaf`) — always true for a valid host. */
|
|
93
|
+
time: boolean;
|
|
94
|
+
/** the host reports scroll position/height (`scrollY` and/or `scrollHeight`). */
|
|
95
|
+
scroll: boolean;
|
|
96
|
+
/** the host can create the offscreen heatmap canvas (`createCanvas`) — required for heatmap draw modes. */
|
|
97
|
+
canvas: boolean;
|
|
98
|
+
/** the host reports the reduced-motion preference (`reducedMotion`). */
|
|
99
|
+
reducedMotion: boolean;
|
|
100
|
+
/** the host reports surface visibility (`hidden` and/or `onVisibility`) so the loop can auto-pause. */
|
|
101
|
+
visibility: boolean;
|
|
102
|
+
/** the host emits at least one subscription (`onResize`/`onScroll`/`onVisibility`/`onInput`/`onBodyEvent`). */
|
|
103
|
+
events: boolean;
|
|
104
|
+
/** the host relays composed shadow-DOM body events (`onBodyEvent`) — DOM body registration. */
|
|
105
|
+
bodyEvents: boolean;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Inspect which optional capabilities a host supplies — see {@link HostCapabilities}. Pure, allocation-
|
|
109
|
+
* light, and safe on a `MinimalFieldHost` (every optional lane reads `false`). Use it to branch on host
|
|
110
|
+
* shape (e.g. only enable a heatmap mode when `caps.canvas`) or as the basis of a host-conformance check.
|
|
111
|
+
*/
|
|
112
|
+
export declare function hostCapabilities(host: FieldHost): HostCapabilities;
|
|
113
|
+
/**
|
|
114
|
+
* Build a full {@link FieldHost} from a {@link MinimalFieldHost} plus any optional capabilities you
|
|
115
|
+
* choose to override — the no-op / graceful defaults are filled for the rest. This is the sanctioned
|
|
116
|
+
* way to author a host without hand-writing the whole subscription boilerplate: supply geometry + time
|
|
117
|
+
* (and whatever else your environment offers) and the field runs. Pure; touches no globals.
|
|
118
|
+
*
|
|
119
|
+
* ```ts
|
|
120
|
+
* const host = defineHost({
|
|
121
|
+
* root, viewport, raf, cancelRaf, // the required core
|
|
122
|
+
* reducedMotion: () => prefersReducedMotion(), // one optional capability
|
|
123
|
+
* });
|
|
124
|
+
* ```
|
|
125
|
+
*/
|
|
126
|
+
export declare function defineHost(host: MinimalFieldHost & Partial<FieldHost>): FieldHost;
|
|
127
|
+
//# sourceMappingURL=host.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../src/engine/host.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,sEAAsE;AACtE,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ;;;;mCAI+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+GAA+G;IAC/G,IAAI,EAAE,UAAU,CAAC;IACjB,0DAA0D;IAC1D,QAAQ,IAAI,YAAY,CAAC;IACzB,iDAAiD;IACjD,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,CAAC;IACrC,gCAAgC;IAChC,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,SAAU,SAAQ,gBAAgB;IACjD,mGAAmG;IACnG,OAAO,CAAC,IAAI,MAAM,CAAC;IACnB,uIAAuI;IACvI,YAAY,CAAC,IAAI,MAAM,CAAC;IACxB,oGAAoG;IACpG,aAAa,CAAC,IAAI,OAAO,CAAC;IAC1B,gHAAgH;IAChH,MAAM,CAAC,IAAI,OAAO,CAAC;IACnB,iKAAiK;IACjK,YAAY,CAAC,IAAI,iBAAiB,CAAC;IACnC,sHAAsH;IACtH,QAAQ,CAAC,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;IACtC,uFAAuF;IACvF,QAAQ,CAAC,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;IACtC,4GAA4G;IAC5G,YAAY,CAAC,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;IAC1C,6HAA6H;IAC7H,OAAO,CAAC,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;IACrC,yJAAyJ;IACzJ,WAAW,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAC/D;;;0FAGsF;IACtF,MAAM,CAAC,IAAI,IAAI,CAAC;CACjB;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oGAAoG;IACpG,QAAQ,EAAE,OAAO,CAAC;IAClB,oFAAoF;IACpF,IAAI,EAAE,OAAO,CAAC;IACd,iFAAiF;IACjF,MAAM,EAAE,OAAO,CAAC;IAChB,2GAA2G;IAC3G,MAAM,EAAE,OAAO,CAAC;IAChB,wEAAwE;IACxE,aAAa,EAAE,OAAO,CAAC;IACvB,uGAAuG;IACvG,UAAU,EAAE,OAAO,CAAC;IACpB,+GAA+G;IAC/G,MAAM,EAAE,OAAO,CAAC;IAChB,+FAA+F;IAC/F,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,GAAG,gBAAgB,CAgBlE;AAID;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAiBjF"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FieldHost — the renderer/environment seam (Phase: frontier). `createField`'s engine is
|
|
3
|
+
* renderer-agnostic: every DOM-global touchpoint (viewport size, scroll, rAF, reduced-motion,
|
|
4
|
+
* visibility, the scan root, and event wiring) goes through this injected host instead of `window` /
|
|
5
|
+
* `document` / `requestAnimationFrame` directly. `browserHost()` (in `@fundamental-engine/dom`)
|
|
6
|
+
* binds it to the browser; an alternative host could drive the same engine from a headless renderer,
|
|
7
|
+
* a different document, or a test harness. This interface is pure types — no globals — so `field.ts`
|
|
8
|
+
* imports zero DOM (enforced by `dom-boundary.test.ts`).
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Inspect which optional capabilities a host supplies — see {@link HostCapabilities}. Pure, allocation-
|
|
12
|
+
* light, and safe on a `MinimalFieldHost` (every optional lane reads `false`). Use it to branch on host
|
|
13
|
+
* shape (e.g. only enable a heatmap mode when `caps.canvas`) or as the basis of a host-conformance check.
|
|
14
|
+
*/
|
|
15
|
+
export function hostCapabilities(host) {
|
|
16
|
+
return {
|
|
17
|
+
geometry: true,
|
|
18
|
+
time: typeof host.raf === 'function' && typeof host.cancelRaf === 'function',
|
|
19
|
+
scroll: typeof host.scrollY === 'function' || typeof host.scrollHeight === 'function',
|
|
20
|
+
canvas: typeof host.createCanvas === 'function',
|
|
21
|
+
reducedMotion: typeof host.reducedMotion === 'function',
|
|
22
|
+
visibility: typeof host.hidden === 'function' || typeof host.onVisibility === 'function',
|
|
23
|
+
events: typeof host.onResize === 'function' ||
|
|
24
|
+
typeof host.onScroll === 'function' ||
|
|
25
|
+
typeof host.onVisibility === 'function' ||
|
|
26
|
+
typeof host.onInput === 'function' ||
|
|
27
|
+
typeof host.onBodyEvent === 'function',
|
|
28
|
+
bodyEvents: typeof host.onBodyEvent === 'function',
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
const NEVER_UNSUBSCRIBE = () => { };
|
|
32
|
+
/**
|
|
33
|
+
* Build a full {@link FieldHost} from a {@link MinimalFieldHost} plus any optional capabilities you
|
|
34
|
+
* choose to override — the no-op / graceful defaults are filled for the rest. This is the sanctioned
|
|
35
|
+
* way to author a host without hand-writing the whole subscription boilerplate: supply geometry + time
|
|
36
|
+
* (and whatever else your environment offers) and the field runs. Pure; touches no globals.
|
|
37
|
+
*
|
|
38
|
+
* ```ts
|
|
39
|
+
* const host = defineHost({
|
|
40
|
+
* root, viewport, raf, cancelRaf, // the required core
|
|
41
|
+
* reducedMotion: () => prefersReducedMotion(), // one optional capability
|
|
42
|
+
* });
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
export function defineHost(host) {
|
|
46
|
+
return {
|
|
47
|
+
root: host.root,
|
|
48
|
+
viewport: host.viewport,
|
|
49
|
+
raf: host.raf,
|
|
50
|
+
cancelRaf: host.cancelRaf,
|
|
51
|
+
scrollY: host.scrollY,
|
|
52
|
+
scrollHeight: host.scrollHeight,
|
|
53
|
+
reducedMotion: host.reducedMotion,
|
|
54
|
+
hidden: host.hidden,
|
|
55
|
+
createCanvas: host.createCanvas,
|
|
56
|
+
onResize: host.onResize ?? (() => NEVER_UNSUBSCRIBE),
|
|
57
|
+
onScroll: host.onScroll ?? (() => NEVER_UNSUBSCRIBE),
|
|
58
|
+
onVisibility: host.onVisibility ?? (() => NEVER_UNSUBSCRIBE),
|
|
59
|
+
onInput: host.onInput ?? (() => NEVER_UNSUBSCRIBE),
|
|
60
|
+
onBodyEvent: host.onBodyEvent ?? (() => NEVER_UNSUBSCRIBE),
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=host.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host.js","sourceRoot":"","sources":["../../src/engine/host.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAuGH;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAe;IAC9C,OAAO;QACL,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,OAAO,IAAI,CAAC,GAAG,KAAK,UAAU,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,UAAU;QAC5E,MAAM,EAAE,OAAO,IAAI,CAAC,OAAO,KAAK,UAAU,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,UAAU;QACrF,MAAM,EAAE,OAAO,IAAI,CAAC,YAAY,KAAK,UAAU;QAC/C,aAAa,EAAE,OAAO,IAAI,CAAC,aAAa,KAAK,UAAU;QACvD,UAAU,EAAE,OAAO,IAAI,CAAC,MAAM,KAAK,UAAU,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,UAAU;QACxF,MAAM,EACJ,OAAO,IAAI,CAAC,QAAQ,KAAK,UAAU;YACnC,OAAO,IAAI,CAAC,QAAQ,KAAK,UAAU;YACnC,OAAO,IAAI,CAAC,YAAY,KAAK,UAAU;YACvC,OAAO,IAAI,CAAC,OAAO,KAAK,UAAU;YAClC,OAAO,IAAI,CAAC,WAAW,KAAK,UAAU;QACxC,UAAU,EAAE,OAAO,IAAI,CAAC,WAAW,KAAK,UAAU;KACnD,CAAC;AACJ,CAAC;AAED,MAAM,iBAAiB,GAAG,GAAS,EAAE,GAAE,CAAC,CAAC;AAEzC;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,UAAU,CAAC,IAA2C;IACpE,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC;QACpD,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC;QACpD,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC;QAC5D,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC;QAClD,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC;KAC3D,CAAC;AACJ,CAAC"}
|
|
@@ -5,6 +5,28 @@
|
|
|
5
5
|
* then integrate and damp. Under first-class mass (§21.3) each additive body force is
|
|
6
6
|
* scaled by `1/m` as it applies, while velocity-replacing (`kinematic`) forces are left
|
|
7
7
|
* untouched. Reduced motion (`dt = 0`) freezes the sim (§18).
|
|
8
|
+
*
|
|
9
|
+
* INTEGRATION SCHEMES (`Env.integrator`): the default `'legacy'` is semi-implicit Euler
|
|
10
|
+
* (forces update v, then `x += v·dt`, then a per-frame decay); `'fixed'` keeps the same order
|
|
11
|
+
* but dt-scales the decays (doc 04 §Step 3). `'velocity-verlet'` (#659) is the opt-in
|
|
12
|
+
* second-order scheme, in the stored-acceleration form:
|
|
13
|
+
*
|
|
14
|
+
* x(t+dt) = x(t) + v(t)·dt + ½·a(t)·dt² (position full-step, BEFORE the force pass)
|
|
15
|
+
* a′ = Δv/dt from the force pass (forces evaluated at x(t+dt))
|
|
16
|
+
* v(t+dt) = v(t) + ½·(a(t) + a′)·dt (velocity half-step average)
|
|
17
|
+
*
|
|
18
|
+
* Approximations, deliberate and documented (physics caveat canon): (1) the engine's force model
|
|
19
|
+
* is impulse-based and velocity-dependent (drag-like forces read the CURRENT v), so a′ is taken
|
|
20
|
+
* as the pass's net Δv/dt rather than re-evaluating forces at the averaged velocity — the
|
|
21
|
+
* standard stored-acceleration treatment; (2) the per-step `FRICTION`/`HEAT_DECAY` decays stay
|
|
22
|
+
* outside the scheme (dt-scaled, like `'fixed'`), which alone makes it NON-symplectic — this
|
|
23
|
+
* buys positional accuracy, it does NOT make energy/momentum conserved (they are non-conserved
|
|
24
|
+
* by design; particle COUNT remains the invariant); (3) a *kinematic* (velocity-REPLACING)
|
|
25
|
+
* force — `jet`/`wall`/`lens`/`gate`/`warp` — is a discontinuity, not an acceleration: when one
|
|
26
|
+
* fires, the replaced velocity stands un-averaged and the stored acceleration resets, so the
|
|
27
|
+
* next position step doesn't extrapolate across the break; (4) a pair force's equal-and-opposite
|
|
28
|
+
* leg on the NEIGHBOUR (`collide`/`link`) folds into that neighbour's own v(t) or Δv whenever
|
|
29
|
+
* its turn comes — same class of caveat the fixed-timestep note below already carries.
|
|
8
30
|
*/
|
|
9
31
|
import type { Body, ConditionRegistry, Env, FieldImpulseAccumulator, Force, ForceRegistry, Particle } from './types.ts';
|
|
10
32
|
import type { FieldStore } from './field-store.ts';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integrator.d.ts","sourceRoot":"","sources":["../../src/engine/integrator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,uBAAuB,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACxH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EAAoC,KAAK,IAAI,EAAE,MAAM,eAAe,CAAC;AAK5E,eAAO,MAAM,QAAQ,OAAO,CAAC;AAC7B,eAAO,MAAM,UAAU,QAAQ,CAAC;AAGhC,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,UAAU,CAAC;IAClB,MAAM,EAAE,SAAS,IAAI,EAAE,CAAC;IACxB,GAAG,EAAE,GAAG,CAAC;IACT,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,iBAAiB,CAAC;IAC9B,yEAAyE;IACzE,KAAK,CAAC,EAAE,SAAS,IAAI,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAClC,UAAU,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAmBD;;;;;;;GAOG;AACH;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,SAAI,GAAG,IAAI,CAiEtF;AAyCD,oGAAoG;AACpG,wBAAgB,eAAe,IAAI,uBAAuB,CAEzD;AAwBD,wBAAgB,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CA4b3C"}
|
|
@@ -5,11 +5,33 @@
|
|
|
5
5
|
* then integrate and damp. Under first-class mass (§21.3) each additive body force is
|
|
6
6
|
* scaled by `1/m` as it applies, while velocity-replacing (`kinematic`) forces are left
|
|
7
7
|
* untouched. Reduced motion (`dt = 0`) freezes the sim (§18).
|
|
8
|
+
*
|
|
9
|
+
* INTEGRATION SCHEMES (`Env.integrator`): the default `'legacy'` is semi-implicit Euler
|
|
10
|
+
* (forces update v, then `x += v·dt`, then a per-frame decay); `'fixed'` keeps the same order
|
|
11
|
+
* but dt-scales the decays (doc 04 §Step 3). `'velocity-verlet'` (#659) is the opt-in
|
|
12
|
+
* second-order scheme, in the stored-acceleration form:
|
|
13
|
+
*
|
|
14
|
+
* x(t+dt) = x(t) + v(t)·dt + ½·a(t)·dt² (position full-step, BEFORE the force pass)
|
|
15
|
+
* a′ = Δv/dt from the force pass (forces evaluated at x(t+dt))
|
|
16
|
+
* v(t+dt) = v(t) + ½·(a(t) + a′)·dt (velocity half-step average)
|
|
17
|
+
*
|
|
18
|
+
* Approximations, deliberate and documented (physics caveat canon): (1) the engine's force model
|
|
19
|
+
* is impulse-based and velocity-dependent (drag-like forces read the CURRENT v), so a′ is taken
|
|
20
|
+
* as the pass's net Δv/dt rather than re-evaluating forces at the averaged velocity — the
|
|
21
|
+
* standard stored-acceleration treatment; (2) the per-step `FRICTION`/`HEAT_DECAY` decays stay
|
|
22
|
+
* outside the scheme (dt-scaled, like `'fixed'`), which alone makes it NON-symplectic — this
|
|
23
|
+
* buys positional accuracy, it does NOT make energy/momentum conserved (they are non-conserved
|
|
24
|
+
* by design; particle COUNT remains the invariant); (3) a *kinematic* (velocity-REPLACING)
|
|
25
|
+
* force — `jet`/`wall`/`lens`/`gate`/`warp` — is a discontinuity, not an acceleration: when one
|
|
26
|
+
* fires, the replaced velocity stands un-averaged and the stored acceleration resets, so the
|
|
27
|
+
* next position step doesn't extrapolate across the break; (4) a pair force's equal-and-opposite
|
|
28
|
+
* leg on the NEIGHBOUR (`collide`/`link`) folds into that neighbour's own v(t) or Δv whenever
|
|
29
|
+
* its turn comes — same class of caveat the fixed-timestep note below already carries.
|
|
8
30
|
*/
|
|
9
31
|
import { accretionTarget } from "./formations.js";
|
|
10
32
|
import { waveYat, waveSlope, waveDistance } from "./currents.js";
|
|
11
33
|
import { netField } from "./streamlines.js";
|
|
12
|
-
import { screenFactor } from "
|
|
34
|
+
import { screenFactor } from "../math/math.js";
|
|
13
35
|
import { classifyBodyTokens } from "../config/forces.config.js";
|
|
14
36
|
export const FRICTION = 0.95;
|
|
15
37
|
export const HEAT_DECAY = 0.972;
|
|
@@ -60,6 +82,9 @@ export function applyAndRecord(f, b, p, env, inv = 1) {
|
|
|
60
82
|
if (p.vz !== undefined)
|
|
61
83
|
p.vz = bvz + (p.vz - bvz) * inv;
|
|
62
84
|
}
|
|
85
|
+
// velocity-Verlet (#659): mirror the fast path's discontinuity mark on the capture path too.
|
|
86
|
+
if (f.kinematic && env.integrator === 'velocity-verlet' && (p.vx !== bvx || p.vy !== bvy || (p.vz ?? 0) !== bvz))
|
|
87
|
+
env.kinTouch = true;
|
|
63
88
|
const acc = env.accum;
|
|
64
89
|
if (acc !== undefined) {
|
|
65
90
|
const dvx = p.vx - bvx;
|
|
@@ -120,6 +145,18 @@ function applyForce(f, b, p, env, inv) {
|
|
|
120
145
|
// Default hot path: byte-identical to the pre-accumulator engine (zero overhead — no capture).
|
|
121
146
|
if (env.accum === undefined) {
|
|
122
147
|
if (inv === 1 || f.kinematic) {
|
|
148
|
+
// velocity-Verlet (#659): a kinematic force that actually changes velocity marks the
|
|
149
|
+
// particle's pass as a discontinuity (env.kinTouch) — the half-step average is skipped.
|
|
150
|
+
// One boolean test on the default path; the capture only runs under the opt-in mode.
|
|
151
|
+
if (f.kinematic && env.integrator === 'velocity-verlet') {
|
|
152
|
+
const bvx = p.vx;
|
|
153
|
+
const bvy = p.vy;
|
|
154
|
+
const bvz = p.vz ?? 0;
|
|
155
|
+
f.apply(b, p, env);
|
|
156
|
+
if (p.vx !== bvx || p.vy !== bvy || (p.vz ?? 0) !== bvz)
|
|
157
|
+
env.kinTouch = true;
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
123
160
|
f.apply(b, p, env);
|
|
124
161
|
return;
|
|
125
162
|
}
|
|
@@ -142,15 +179,13 @@ function applyForce(f, b, p, env, inv) {
|
|
|
142
179
|
export function makeAccumulator() {
|
|
143
180
|
return { linear: { x: 0, y: 0, z: 0 }, attribution: [] };
|
|
144
181
|
}
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
// superposition of every body's field() — the same vector the streamlines view draws.
|
|
153
|
-
env.fieldAt = (x, y) => netField(bodies, forces, x, y);
|
|
182
|
+
/**
|
|
183
|
+
* Zero the per-frame density + thermodynamic accumulators on every body. Runs at the top of
|
|
184
|
+
* every step — including the frozen (`dt === 0`) path (#967) — so `b.count` never carries a
|
|
185
|
+
* stale value into `writeFeedback()`. The subsequent particle pass re-accumulates when the sim
|
|
186
|
+
* is live; when frozen, the counts stay at 0 and `--d` drains to the engagement-only baseline.
|
|
187
|
+
*/
|
|
188
|
+
function resetDensity(bodies) {
|
|
154
189
|
for (const b of bodies) {
|
|
155
190
|
b.count = 0;
|
|
156
191
|
// thermodynamic accumulators (workover v0.3 §"Metrics") share the density window/cadence.
|
|
@@ -164,6 +199,29 @@ export function step(input) {
|
|
|
164
199
|
th.sh = 0;
|
|
165
200
|
}
|
|
166
201
|
}
|
|
202
|
+
}
|
|
203
|
+
export function step(input) {
|
|
204
|
+
const { store, bodies, env, forces, conditions, waves, separation } = input;
|
|
205
|
+
const dt = env.dt;
|
|
206
|
+
if (dt === 0) {
|
|
207
|
+
// Motion is frozen (reduced-motion / maxMotionBudget 0): skip integration, but the
|
|
208
|
+
// density/thermo bookkeeping MUST still drain. `writeFeedback()` runs unconditionally
|
|
209
|
+
// every frame, easing `b.d` toward `feedbackTarget(b.count, b.on)`. If we returned before
|
|
210
|
+
// zeroing the counts, `b.count` would hold its last live value forever — `--d`/`--field-density`
|
|
211
|
+
// (and the font-weight channel) would report particle presence from a sim that is no longer
|
|
212
|
+
// running (#967). The doctrine is "motion freezes; the signals stay honest": engagement
|
|
213
|
+
// (`b.on`, dt-independent) still reads truthfully, so `b.d` eases to `feedbackTarget(0, b.on)`
|
|
214
|
+
// — the engagement-only baseline — instead of lying about frozen density.
|
|
215
|
+
resetDensity(bodies);
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
// the opt-in second-order scheme (#659) — see the header doc for the math + approximations.
|
|
219
|
+
const verlet = env.integrator === 'velocity-verlet';
|
|
220
|
+
const { W, H, form } = env;
|
|
221
|
+
// expose the net structure field so field-following forces (`fieldflow`) can read the
|
|
222
|
+
// superposition of every body's field() — the same vector the streamlines view draws.
|
|
223
|
+
env.fieldAt = (x, y) => netField(bodies, forces, x, y);
|
|
224
|
+
resetDensity(bodies);
|
|
167
225
|
// visible `screen` bodies (workover v0.3): each damps OTHER bodies' forces on matter inside
|
|
168
226
|
// its range (quiet zones / text shielding). No screens on the page (the common case) ⇒ this
|
|
169
227
|
// stays null and the whole pass is skipped — zero cost and zero behavior change.
|
|
@@ -189,6 +247,10 @@ export function step(input) {
|
|
|
189
247
|
p.y += (p.cap.cy - p.y) * 0.18;
|
|
190
248
|
if (p.z)
|
|
191
249
|
p.z += -p.z * 0.18;
|
|
250
|
+
// held matter has no acceleration of its own — drop any stored Verlet lane so a later
|
|
251
|
+
// release doesn't extrapolate a stale a(t). Only ever defined under the opt-in mode.
|
|
252
|
+
if (p.ax !== undefined)
|
|
253
|
+
p.ax = p.ay = p.az = 0;
|
|
192
254
|
continue;
|
|
193
255
|
}
|
|
194
256
|
// normalize the optional lane once: after this the lane is concrete numbers for
|
|
@@ -197,6 +259,22 @@ export function step(input) {
|
|
|
197
259
|
p.z = 0;
|
|
198
260
|
if (p.vz === undefined)
|
|
199
261
|
p.vz = 0;
|
|
262
|
+
// velocity-Verlet (#659): the position FULL-STEP runs first, from last step's velocity and
|
|
263
|
+
// stored acceleration — x(t+dt) = x(t) + v(t)·dt + ½·a(t)·dt² — so the force pass below
|
|
264
|
+
// evaluates a′ at x(t+dt). v0 keeps v(t) for the half-step average after the pass.
|
|
265
|
+
let v0x = 0;
|
|
266
|
+
let v0y = 0;
|
|
267
|
+
let v0z = 0;
|
|
268
|
+
if (verlet) {
|
|
269
|
+
const h = 0.5 * dt * dt;
|
|
270
|
+
p.x += p.vx * dt + (p.ax ?? 0) * h;
|
|
271
|
+
p.y += p.vy * dt + (p.ay ?? 0) * h;
|
|
272
|
+
p.z += p.vz * dt + (p.az ?? 0) * h;
|
|
273
|
+
v0x = p.vx;
|
|
274
|
+
v0y = p.vy;
|
|
275
|
+
v0z = p.vz;
|
|
276
|
+
env.kinTouch = false;
|
|
277
|
+
}
|
|
200
278
|
const pz = p.z;
|
|
201
279
|
// wave current (§2.3): near a wave line, drift along its slope like debris.
|
|
202
280
|
if (hasWaves) {
|
|
@@ -392,8 +470,10 @@ export function step(input) {
|
|
|
392
470
|
// 1 = neutral (the default, so the live field is untouched until opted in).
|
|
393
471
|
const attn = b.attn ?? 1;
|
|
394
472
|
// the composed effective-strength multiplier: resonate's S(t) × the attention
|
|
395
|
-
// budget × the screen attenuation. 1 ⇒ the untouched fast path.
|
|
396
|
-
|
|
473
|
+
// budget × the screen attenuation × the focus well. 1 ⇒ the untouched fast path.
|
|
474
|
+
// focusMul (EXPERIMENTAL, ≥1, clamped) deepens a FOCUSED body's forces so the field gathers
|
|
475
|
+
// where attention currently is; `undefined` when unfocused, preserving the `mul === 1` fast path.
|
|
476
|
+
const mul = sMul * attn * screenMul * (b.focusMul ?? 1);
|
|
397
477
|
if (!hasModifier && mul === 1) {
|
|
398
478
|
for (const tok of b.tokens) {
|
|
399
479
|
const f = forces[tok];
|
|
@@ -440,6 +520,28 @@ export function step(input) {
|
|
|
440
520
|
}
|
|
441
521
|
}
|
|
442
522
|
}
|
|
523
|
+
// velocity-Verlet second half (#659): fold this step's impulse into the half-step average.
|
|
524
|
+
if (verlet) {
|
|
525
|
+
// the pass's net Δv is a′·dt — every force above evaluated at the updated position.
|
|
526
|
+
const dvx = p.vx - v0x;
|
|
527
|
+
const dvy = p.vy - v0y;
|
|
528
|
+
const dvz = p.vz - v0z;
|
|
529
|
+
if (env.kinTouch) {
|
|
530
|
+
// a kinematic (velocity-REPLACING) force fired: a discontinuity, not an acceleration.
|
|
531
|
+
// The replaced velocity stands as-is; the stored acceleration resets so the next
|
|
532
|
+
// position step doesn't extrapolate across the break.
|
|
533
|
+
p.ax = p.ay = p.az = 0;
|
|
534
|
+
}
|
|
535
|
+
else {
|
|
536
|
+
// v(t+dt) = v(t) + ½·(a(t) + a′)·dt — ½·a(t)·dt from the stored lane, ½·Δv for a′.
|
|
537
|
+
p.vx = v0x + 0.5 * ((p.ax ?? 0) * dt + dvx);
|
|
538
|
+
p.vy = v0y + 0.5 * ((p.ay ?? 0) * dt + dvy);
|
|
539
|
+
p.vz = v0z + 0.5 * ((p.az ?? 0) * dt + dvz);
|
|
540
|
+
p.ax = dvx / dt;
|
|
541
|
+
p.ay = dvy / dt;
|
|
542
|
+
p.az = dvz / dt;
|
|
543
|
+
}
|
|
544
|
+
}
|
|
443
545
|
// global safety cap (§20.10): no token or composite may drive a free particle past
|
|
444
546
|
// c (the unit system's "speed of light"). The natural primitives self-clamp; this
|
|
445
547
|
// enforces it for *every* force. A non-finite velocity slips the `> c²` test — the
|
|
@@ -467,11 +569,14 @@ export function step(input) {
|
|
|
467
569
|
// integrate, then damp (§2.2). The z lane integrates identically — inert at 0. Under the opt-in
|
|
468
570
|
// fixed-timestep integrator (doc 04 §Step 3) the per-step damping scales with `dt` (`FRICTION^dt`)
|
|
469
571
|
// so it is frame-rate independent; at `dt === 1` `Math.pow(FRICTION, 1) === FRICTION`, so the
|
|
470
|
-
// default path is byte-identical.
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
572
|
+
// default path is byte-identical. Velocity-Verlet already took its position full-step before
|
|
573
|
+
// the force pass (its decays are dt-scaled like fixed's).
|
|
574
|
+
if (!verlet) {
|
|
575
|
+
p.x += p.vx * dt;
|
|
576
|
+
p.y += p.vy * dt;
|
|
577
|
+
p.z += p.vz * dt;
|
|
578
|
+
}
|
|
579
|
+
const fr = env.integrator === 'fixed' || verlet ? Math.pow(FRICTION, dt) : FRICTION;
|
|
475
580
|
p.vx *= fr;
|
|
476
581
|
p.vy *= fr;
|
|
477
582
|
p.vz *= fr;
|
|
@@ -501,7 +606,7 @@ export function step(input) {
|
|
|
501
606
|
p.vy += Math.sin(cn) * 0.013 * form.wander;
|
|
502
607
|
}
|
|
503
608
|
}
|
|
504
|
-
p.heat *= env.integrator === 'fixed' ? Math.pow(HEAT_DECAY, dt) : HEAT_DECAY;
|
|
609
|
+
p.heat *= env.integrator === 'fixed' || verlet ? Math.pow(HEAT_DECAY, dt) : HEAT_DECAY;
|
|
505
610
|
// mortal matter ages (the class-[S] sink): spawned particles carry a finite `age`
|
|
506
611
|
// and despawn at ≤ 0, so a continuous source stays budgeted. Immortal base-field
|
|
507
612
|
// matter (age undefined) is untouched — the conserved field is unchanged.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integrator.js","sourceRoot":"","sources":["../../src/engine/integrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lane-registry.d.ts","sourceRoot":"","sources":["../../src/engine/lane-registry.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD;6FAC6F;AAC7F,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,WAAW,GAAG,WAAW,GAAG,eAAe,CAAC;AAE7E,+FAA+F;AAC/F,eAAO,MAAM,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC,CAKnE,CAAC;AAEH,yFAAyF;AACzF,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAKzD;AAED;;;qEAGqE;AACrE,wBAAgB,aAAa,CAAC,KAAK,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAc,GAAG,iBAAiB,EAAE,CAqBlH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lane-registry.js","sourceRoot":"","sources":["../../src/engine/lane-registry.ts"],"names":[],"mappings":"AAAA,qGAAqG;AACrG,iGAAiG;AACjG,uGAAuG;AACvG,0GAA0G;AAC1G,oGAAoG;AACpG,8CAA8C;AAC9C,EAAE;AACF,oEAAoE;AACpE,uGAAuG;AACvG,yGAAyG;AACzG,0GAA0G;AAC1G,sGAAsG;AACtG,uGAAuG;AACvG,sGAAsG;AACtG,yGAAyG;AACzG,yGAAyG;AACzG,yGAAyG;AACzG,4FAA4F;AAE5F,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAO1D,+FAA+F;AAC/F,MAAM,CAAC,MAAM,UAAU,GAAkD,MAAM,CAAC,MAAM,CAAC;IACrF,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;IAC7B,SAAS,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACtC,SAAS,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,6BAA6B;IAC/F,aAAa,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;CAC/C,CAAC,CAAC;AAEH,yFAAyF;AACzF,MAAM,UAAU,MAAM,CAAC,IAAY;IACjC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAe,EAAE,CAAC;QACzD,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;IACnD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;qEAGqE;AACrE,MAAM,UAAU,aAAa,CAAC,QAAqD,UAAU;IAC3F,MAAM,IAAI,GAAG,IAAI,GAAG,EAAoB,CAAC,CAAC,6BAA6B;IACvE,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACnC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IACD,MAAM,GAAG,GAAwB,EAAE,CAAC;IACpC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;QACjC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,GAAG,CAAC,IAAI,CAAC;gBACP,IAAI,EAAE,4BAA4B;gBAClC,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,IAAI,IAAI,gBAAgB,KAAK,CAAC,MAAM,WAAW,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,0CAA0C;aACnH,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projection-agent-json.d.ts","sourceRoot":"","sources":["../../src/engine/projection-agent-json.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEnE;kEACkE;AAClE,wBAAgB,eAAe,IAAI,eAAe,CAajD;AAED;;gGAEgG;AAChG,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,EAAE,EAClB,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,uBAAuB,CAAC,EAAE,MAAM,CAAA;CAAO,GAC9D,eAAe,CAWjB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projection-agent-json.js","sourceRoot":"","sources":["../../src/engine/projection-agent-json.ts"],"names":[],"mappings":"AAAA,sGAAsG;AACtG,sGAAsG;AACtG,uGAAuG;AACvG,qGAAqG;AACrG,+FAA+F;AAI/F;kEACkE;AAClE,MAAM,UAAU,eAAe;IAC7B,IAAI,IAAI,GAAkC,IAAI,CAAC;IAC/C,OAAO;QACL,OAAO,CAAC,OAAO;YACb,IAAI,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;QACxB,CAAC;QACD,KAAK;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI;YACF,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;gGAEgG;AAChG,MAAM,UAAU,mBAAmB,CACjC,EAAU,EACV,QAAkB,EAClB,OAA6D,EAAE;IAE/D,OAAO;QACL,EAAE;QACF,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;QACvB,QAAQ,EAAE,QAAQ,CAAC,KAAK,EAAE;QAC1B,QAAQ,EAAE,CAAC,YAAY,CAAC;QACxB,GAAG,CAAC,IAAI,CAAC,uBAAuB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,uBAAuB,EAAE,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChH,KAAK,CAAC,OAAO,EAAE,MAAM;YAClB,MAAmC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC;QAC1D,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-lens.d.ts","sourceRoot":"","sources":["../../src/engine/query-lens.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAK9D;;0EAE0E;AAC1E,wBAAgB,SAAS,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,SAAS,GAAG,gBAAgB,CAarF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-lens.js","sourceRoot":"","sources":["../../src/engine/query-lens.ts"],"names":[],"mappings":"AAAA,mGAAmG;AACnG,uGAAuG;AACvG,uGAAuG;AACvG,oGAAoG;AACpG,2EAA2E;AAI3E,MAAM,IAAI,GAAG,CAAC,CAAyB,EAAE,IAAgC,EAA0B,EAAE,CACnG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAEhF;;0EAE0E;AAC1E,MAAM,UAAU,SAAS,CAAC,MAAwB,EAAE,IAAe;IACjE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,CAAS,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1E,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAS,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACpE,OAAO;QACL,GAAG,MAAM;QACT,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC;QACzC,MAAM,EAAE,MAAM,CAAC,MAAM;aAClB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aACnE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;QAC3G,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU;QACrH,IAAI,EAAE,IAAI,CAAC,EAAE;KACd,CAAC;AACJ,CAAC"}
|
|
@@ -15,6 +15,13 @@ export declare function sparkCount(power: number, rand?: () => number): number;
|
|
|
15
15
|
* (Phase 6). A heavier agent barely budges.
|
|
16
16
|
*/
|
|
17
17
|
export declare function recoilImpulse(dpx: number, dpy: number, mOther: number): Vec2;
|
|
18
|
+
/**
|
|
19
|
+
* The reach of a one-shot `field.burst(x, y)` blast, in engine (page-pixel) units: matter
|
|
20
|
+
* within this radius is shoved + heated, matter outside is inert (see `burstImpulse`). Exported
|
|
21
|
+
* so a UI affordance that visualizes a burst (e.g. an expanding shock ring) can size itself to
|
|
22
|
+
* the real blast front rather than painting an arbitrary radius.
|
|
23
|
+
*/
|
|
24
|
+
export declare const BURST_RADIUS = 160;
|
|
18
25
|
/**
|
|
19
26
|
* A discrete radial burst impulse (§11) — the velocity kick and heat a one-shot
|
|
20
27
|
* `field.burst(x, y)` imparts to matter at offset `(dx, dy[, dz])` from the blast,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reactions.d.ts","sourceRoot":"","sources":["../../src/engine/reactions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,wFAAwF;AACxF,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED,4EAA4E;AAC5E,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,SAAI,EAAE,IAAI,SAAM,GAAG,MAAM,CAGvE;AAED,8EAA8E;AAC9E,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,MAAoB,GAAG,MAAM,CAElF;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAK5E;AAED;;;;;GAKG;AACH,eAAO,MAAM,YAAY,MAAM,CAAC;AAEhC;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,CAAC,EAAE,MAAM,EACT,KAAK,SAAI,EACT,EAAE,SAAI,GACL;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAMtD"}
|
|
@@ -26,6 +26,13 @@ export function recoilImpulse(dpx, dpy, mOther) {
|
|
|
26
26
|
// impulses compare cleanly (deepStrictEqual treats −0 and 0 as distinct).
|
|
27
27
|
return { x: -dpx / m + 0, y: -dpy / m + 0 };
|
|
28
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* The reach of a one-shot `field.burst(x, y)` blast, in engine (page-pixel) units: matter
|
|
31
|
+
* within this radius is shoved + heated, matter outside is inert (see `burstImpulse`). Exported
|
|
32
|
+
* so a UI affordance that visualizes a burst (e.g. an expanding shock ring) can size itself to
|
|
33
|
+
* the real blast front rather than painting an arbitrary radius.
|
|
34
|
+
*/
|
|
35
|
+
export const BURST_RADIUS = 160;
|
|
29
36
|
/**
|
|
30
37
|
* A discrete radial burst impulse (§11) — the velocity kick and heat a one-shot
|
|
31
38
|
* `field.burst(x, y)` imparts to matter at offset `(dx, dy[, dz])` from the blast,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reactions.js","sourceRoot":"","sources":["../../src/engine/reactions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,wFAAwF;AACxF,MAAM,UAAU,WAAW,CAAC,CAAS,EAAE,OAAe,EAAE,MAAc;IACpE,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC;AACzD,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,iBAAiB,CAAC,EAAU,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG;IAC7D,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;IACjB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,UAAU,CAAC,KAAa,EAAE,OAAqB,IAAI,CAAC,MAAM;IACxE,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,GAAW,EAAE,MAAc;IACpE,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,uEAAuE;IACvE,0EAA0E;IAC1E,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;AAC9C,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,CAAC;AAEhC;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAC1B,EAAU,EACV,EAAU,EACV,CAAS,EACT,KAAK,GAAG,CAAC,EACT,EAAE,GAAG,CAAC;IAEN,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IACpD,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1B,MAAM,CAAC,GAAG,OAAO,GAAG,KAAK,CAAC;IAC1B,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,GAAG,GAAG,EAAE,CAAC;AACvF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/engine/registry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGrF,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IACvC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IACtB,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,GAAG,IAAI,CAAC;CAC5C;AAED,wBAAgB,cAAc,IAAI,QAAQ,CAazC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/engine/registry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,UAAU,IAAI,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AASlE,MAAM,UAAU,cAAc;IAC5B,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,MAAM,UAAU,GAAsB,EAAE,GAAG,iBAAiB,EAAE,CAAC;IAC/D,OAAO;QACL,MAAM;QACN,UAAU;QACV,KAAK,CAAC,CAAC;YACL,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;QACD,SAAS,CAAC,EAAE,EAAE,EAAE;YACd,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;QACtB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render-backend.d.ts","sourceRoot":"","sources":["../../src/engine/render-backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,2FAA2F;AAC3F,MAAM,WAAW,MAAM;IACrB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,+EAA+E;IAC/E,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACvD,+BAA+B;IAC/B,KAAK,IAAI,IAAI,CAAC;IACd,8FAA8F;IAC9F,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1D,iGAAiG;IACjG,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1D,wDAAwD;IACxD,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACvG,wEAAwE;IACxE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAChG,qEAAqE;IACrE,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CACpC;AAID;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,iBAAiB,EAAE,GAAG,EAAE,wBAAwB,GAAG,aAAa,CAkDvG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render-backend.js","sourceRoot":"","sources":["../../src/engine/render-backend.ts"],"names":[],"mappings":"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"}
|