tosijs-3d 0.7.2 → 0.7.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/CHANGELOG.md +900 -0
- package/dist/b3d-aircraft.d.ts +14 -0
- package/dist/b3d-aircraft.d.ts.map +1 -1
- package/dist/b3d-aircraft.js +45 -0
- package/dist/b3d-aircraft.js.map +1 -1
- package/dist/b3d-ambient.d.ts +12 -0
- package/dist/b3d-ambient.d.ts.map +1 -1
- package/dist/b3d-ambient.js +83 -1
- package/dist/b3d-ambient.js.map +1 -1
- package/dist/b3d-biped.d.ts +290 -0
- package/dist/b3d-biped.d.ts.map +1 -1
- package/dist/b3d-biped.js +1366 -22
- package/dist/b3d-biped.js.map +1 -1
- package/dist/b3d-collisions.d.ts.map +1 -1
- package/dist/b3d-collisions.js +45 -7
- package/dist/b3d-collisions.js.map +1 -1
- package/dist/b3d-controllable.d.ts +50 -0
- package/dist/b3d-controllable.d.ts.map +1 -1
- package/dist/b3d-controllable.js +61 -0
- package/dist/b3d-controllable.js.map +1 -1
- package/dist/b3d-death.d.ts +26 -0
- package/dist/b3d-death.d.ts.map +1 -1
- package/dist/b3d-death.js +224 -2
- package/dist/b3d-death.js.map +1 -1
- package/dist/b3d-interactive.d.ts +80 -0
- package/dist/b3d-interactive.d.ts.map +1 -0
- package/dist/b3d-interactive.js +284 -0
- package/dist/b3d-interactive.js.map +1 -0
- package/dist/b3d-library.d.ts +39 -0
- package/dist/b3d-library.d.ts.map +1 -1
- package/dist/b3d-library.js +67 -0
- package/dist/b3d-library.js.map +1 -1
- package/dist/b3d-svg-plane.d.ts +35 -0
- package/dist/b3d-svg-plane.d.ts.map +1 -1
- package/dist/b3d-svg-plane.js +96 -8
- package/dist/b3d-svg-plane.js.map +1 -1
- package/dist/b3d-water.d.ts.map +1 -1
- package/dist/b3d-water.js +32 -6
- package/dist/b3d-water.js.map +1 -1
- package/dist/buoyancy.d.ts +90 -0
- package/dist/buoyancy.d.ts.map +1 -0
- package/dist/buoyancy.js +150 -0
- package/dist/buoyancy.js.map +1 -0
- package/dist/curve-field.d.ts +39 -0
- package/dist/curve-field.d.ts.map +1 -0
- package/dist/curve-field.js +491 -0
- package/dist/curve-field.js.map +1 -0
- package/dist/curve.d.ts +241 -0
- package/dist/curve.d.ts.map +1 -0
- package/dist/curve.js +559 -0
- package/dist/curve.js.map +1 -0
- package/dist/dialog-placement.d.ts +69 -7
- package/dist/dialog-placement.d.ts.map +1 -1
- package/dist/dialog-placement.js +90 -9
- package/dist/dialog-placement.js.map +1 -1
- package/dist/embed-font.d.ts +48 -0
- package/dist/embed-font.d.ts.map +1 -0
- package/dist/embed-font.js +135 -0
- package/dist/embed-font.js.map +1 -0
- package/dist/footprint-field.d.ts +30 -0
- package/dist/footprint-field.d.ts.map +1 -0
- package/dist/footprint-field.js +256 -0
- package/dist/footprint-field.js.map +1 -0
- package/dist/frame-panel.d.ts.map +1 -1
- package/dist/frame-panel.js +15 -12
- package/dist/frame-panel.js.map +1 -1
- package/dist/glb-manifest.d.ts +75 -0
- package/dist/glb-manifest.d.ts.map +1 -0
- package/dist/glb-manifest.js +198 -0
- package/dist/glb-manifest.js.map +1 -0
- package/dist/icon-data.d.ts.map +1 -1
- package/dist/icon-data.js +20 -1
- package/dist/icon-data.js.map +1 -1
- package/dist/index.d.ts +33 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +38 -3
- package/dist/index.js.map +1 -1
- package/dist/interaction.d.ts +66 -0
- package/dist/interaction.d.ts.map +1 -0
- package/dist/interaction.js +117 -0
- package/dist/interaction.js.map +1 -0
- package/dist/interactive-behavior.d.ts +105 -0
- package/dist/interactive-behavior.d.ts.map +1 -0
- package/dist/interactive-behavior.js +253 -0
- package/dist/interactive-behavior.js.map +1 -0
- package/dist/key-layout.d.ts +70 -0
- package/dist/key-layout.d.ts.map +1 -1
- package/dist/key-layout.js +122 -0
- package/dist/key-layout.js.map +1 -1
- package/dist/keyboard-gamepad.d.ts.map +1 -1
- package/dist/keyboard-gamepad.js +19 -6
- package/dist/keyboard-gamepad.js.map +1 -1
- package/dist/keyboard.d.ts +100 -1
- package/dist/keyboard.d.ts.map +1 -1
- package/dist/keyboard.js +280 -35
- package/dist/keyboard.js.map +1 -1
- package/dist/mantle.d.ts +56 -0
- package/dist/mantle.d.ts.map +1 -0
- package/dist/mantle.js +115 -0
- package/dist/mantle.js.map +1 -0
- package/dist/popup-surface.d.ts +5 -1
- package/dist/popup-surface.d.ts.map +1 -1
- package/dist/popup-surface.js +181 -14
- package/dist/popup-surface.js.map +1 -1
- package/dist/surface.d.ts.map +1 -1
- package/dist/surface.js +111 -15
- package/dist/surface.js.map +1 -1
- package/dist/svg-icons.d.ts.map +1 -1
- package/dist/svg-icons.js +13 -1
- package/dist/svg-icons.js.map +1 -1
- package/dist/svg-texture.d.ts.map +1 -1
- package/dist/svg-texture.js +40 -1
- package/dist/svg-texture.js.map +1 -1
- package/dist/swim-aim.d.ts +78 -0
- package/dist/swim-aim.d.ts.map +1 -0
- package/dist/swim-aim.js +140 -0
- package/dist/swim-aim.js.map +1 -0
- package/dist/theme-editor.d.ts +41 -0
- package/dist/theme-editor.d.ts.map +1 -0
- package/dist/theme-editor.js +303 -0
- package/dist/theme-editor.js.map +1 -0
- package/dist/tosi-b3d.d.ts +24 -4
- package/dist/tosi-b3d.d.ts.map +1 -1
- package/dist/tosi-b3d.js +238 -37
- package/dist/tosi-b3d.js.map +1 -1
- package/dist/vector-field.d.ts +58 -0
- package/dist/vector-field.d.ts.map +1 -0
- package/dist/vector-field.js +321 -0
- package/dist/vector-field.js.map +1 -0
- package/dist/virtual-gamepad.d.ts.map +1 -1
- package/dist/virtual-gamepad.js +46 -9
- package/dist/virtual-gamepad.js.map +1 -1
- package/dist/w3d-theme.d.ts +115 -17
- package/dist/w3d-theme.d.ts.map +1 -1
- package/dist/w3d-theme.js +311 -0
- package/dist/w3d-theme.js.map +1 -1
- package/dist/water-normal.d.ts +26 -0
- package/dist/water-normal.d.ts.map +1 -0
- package/dist/water-normal.js +105 -0
- package/dist/water-normal.js.map +1 -0
- package/dist/widgets3d-layout.d.ts +58 -0
- package/dist/widgets3d-layout.d.ts.map +1 -1
- package/dist/widgets3d-layout.js +79 -1
- package/dist/widgets3d-layout.js.map +1 -1
- package/dist/widgets3d.d.ts +51 -2
- package/dist/widgets3d.d.ts.map +1 -1
- package/dist/widgets3d.js +418 -112
- package/dist/widgets3d.js.map +1 -1
- package/dist/wreck-fall.d.ts +86 -0
- package/dist/wreck-fall.d.ts.map +1 -0
- package/dist/wreck-fall.js +129 -0
- package/dist/wreck-fall.js.map +1 -0
- package/package.json +9 -6
package/dist/b3d-svg-plane.js
CHANGED
|
@@ -399,7 +399,7 @@ const scene = b3d({ sceneCreated }, b3dLight({ intensity: 1 }), plane)
|
|
|
399
399
|
/*{ "parent": "UI" }*/
|
|
400
400
|
import * as BABYLON from '@babylonjs/core';
|
|
401
401
|
import { AbstractMesh, isOff, markUiMesh, collidable, sceneDelta, } from './b3d-utils';
|
|
402
|
-
import { gazeOffAxisDeg, gazeStep, newGazeState, bestCandidate, placementDistance, easeTo, } from './dialog-placement';
|
|
402
|
+
import { gazeOffAxisDeg, gazeStep, newGazeState, bestCandidate, placementDistance, facingYawDeg, easeTo, } from './dialog-placement';
|
|
403
403
|
import { roundedRectGeometry } from './rounded-rect';
|
|
404
404
|
/** The pointerId carried by pick-forwarded events — see the note at the dispatch. */
|
|
405
405
|
const SYNTHETIC_POINTER_ID = 0x53b3;
|
|
@@ -407,6 +407,16 @@ import { SvgTexture } from './svg-texture';
|
|
|
407
407
|
export class B3dSvgPlane extends AbstractMesh {
|
|
408
408
|
static styleSpec = { ':host': { display: 'none' } };
|
|
409
409
|
static initAttributes = {
|
|
410
|
+
/** Cast shadows onto the scene. Off by default — see `_meshName`. */
|
|
411
|
+
castShadow: false,
|
|
412
|
+
/**
|
|
413
|
+
* Take the world's shading. Off by default, so a panel reads the same
|
|
414
|
+
* whatever passes in front of the sun.
|
|
415
|
+
*
|
|
416
|
+
* Turn it on for UI that genuinely IS in the world — a cockpit instrument
|
|
417
|
+
* surface lit by the same sun as the dashboard around it.
|
|
418
|
+
*/
|
|
419
|
+
receiveShadows: false,
|
|
410
420
|
...AbstractMesh.initAttributes,
|
|
411
421
|
width: 1,
|
|
412
422
|
height: 1,
|
|
@@ -481,7 +491,44 @@ export class B3dSvgPlane extends AbstractMesh {
|
|
|
481
491
|
_gaze = newGazeState();
|
|
482
492
|
_dialogObs = null;
|
|
483
493
|
_dialogTarget = null;
|
|
494
|
+
_offOrigin = null;
|
|
484
495
|
_installWorldDialog(scene) {
|
|
496
|
+
/*
|
|
497
|
+
A WORLD-PLACED PANEL HOLDS A WORLD POSITION, SO IT HAS TO OPT IN.
|
|
498
|
+
|
|
499
|
+
Terrain rebases the world (B3d.shiftOrigin) and moves only what registered.
|
|
500
|
+
This panel keeps its position on the ELEMENT (`x`/`y`/`z` — the #35 rule) and
|
|
501
|
+
its destination in `_dialogTarget`, both in JS, both world coordinates. A
|
|
502
|
+
rebase during a paused or dying scene therefore slid the dialog away by the
|
|
503
|
+
shift, in the one kind of scene big enough to need rebasing.
|
|
504
|
+
|
|
505
|
+
A LISTENER, not `registerWorldRoot`: the element owns the transform and
|
|
506
|
+
rewrites the mesh from it every render, so shifting the node would be undone
|
|
507
|
+
a frame later. Fix the numbers the element is written FROM.
|
|
508
|
+
|
|
509
|
+
Gaze recovery would eventually drag it back, which is precisely what makes
|
|
510
|
+
this worth fixing rather than tolerating: the symptom is a dialog that
|
|
511
|
+
wanders and then returns, and "it sort of fixes itself" is how a bug avoids
|
|
512
|
+
being reported.
|
|
513
|
+
*/
|
|
514
|
+
const owner = this.owner;
|
|
515
|
+
if (owner != null) {
|
|
516
|
+
const onShift = (dx, dz) => {
|
|
517
|
+
const self = this;
|
|
518
|
+
self.x += dx;
|
|
519
|
+
self.z += dz;
|
|
520
|
+
if (this.mesh != null) {
|
|
521
|
+
this.mesh.position.x += dx;
|
|
522
|
+
this.mesh.position.z += dz;
|
|
523
|
+
}
|
|
524
|
+
if (this._dialogTarget != null) {
|
|
525
|
+
this._dialogTarget.x += dx;
|
|
526
|
+
this._dialogTarget.z += dz;
|
|
527
|
+
}
|
|
528
|
+
};
|
|
529
|
+
owner.addOriginListener(onShift);
|
|
530
|
+
this._offOrigin = () => owner.removeOriginListener(onShift);
|
|
531
|
+
}
|
|
485
532
|
// Straight ahead first, then progressively further off-axis: bestCandidate
|
|
486
533
|
// breaks ties toward EARLIER entries, so this order IS the preference.
|
|
487
534
|
const YAW_CANDIDATES = [0, -20, 20, -40, 40, -70, 70, 180];
|
|
@@ -502,7 +549,10 @@ export class B3dSvgPlane extends AbstractMesh {
|
|
|
502
549
|
collidable());
|
|
503
550
|
clearances.push(hit?.hit ? hit.distance : Infinity);
|
|
504
551
|
}
|
|
505
|
-
|
|
552
|
+
// `desired` matters: it makes this "the least deviation with room" rather
|
|
553
|
+
// than "the most room", so a follow camera's own subject stops pushing
|
|
554
|
+
// every dialog off-axis. See bestCandidate.
|
|
555
|
+
const i = bestCandidate(clearances, 0.7, desired);
|
|
506
556
|
// Nowhere is clear (boxed in): take straight ahead at the floor distance
|
|
507
557
|
// rather than refusing to show a modal at all.
|
|
508
558
|
const dir = dirs[i >= 0 ? i : 0];
|
|
@@ -567,10 +617,14 @@ export class B3dSvgPlane extends AbstractMesh {
|
|
|
567
617
|
mesh.position.set(next.x, next.y, next.z);
|
|
568
618
|
// Face the viewer — as YAW on the element, for the same reason.
|
|
569
619
|
// Rotating the mesh would be undone by the same render.
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
620
|
+
//
|
|
621
|
+
// `facingYawDeg` and not `atan2(dx, dz)`: a plane's visible face is
|
|
622
|
+
// local -Z, so the obvious version turns the panel's BACK to you, and a
|
|
623
|
+
// double-sided back reuses the front's UVs — the dialog rendered
|
|
624
|
+
// MIRRORED rather than vanishing, which is how it survived a release.
|
|
625
|
+
const eye = cam.globalPosition;
|
|
626
|
+
if (Math.hypot(eye.x - next.x, eye.z - next.z) > 1e-4) {
|
|
627
|
+
self.yaw = facingYawDeg(next, eye);
|
|
574
628
|
}
|
|
575
629
|
}
|
|
576
630
|
});
|
|
@@ -635,6 +689,38 @@ export class B3dSvgPlane extends AbstractMesh {
|
|
|
635
689
|
});
|
|
636
690
|
}
|
|
637
691
|
content = () => '';
|
|
692
|
+
/**
|
|
693
|
+
* The mesh name, which is how a panel opts into the world's lighting.
|
|
694
|
+
*
|
|
695
|
+
* **By default a panel neither casts nor receives.** Both fell out of
|
|
696
|
+
* `register()` rather than from a decision: registering is the shadow-caster
|
|
697
|
+
* contract AND makes `b3d-shadows` set `receiveShadows`, so a panel joined
|
|
698
|
+
* the lighting merely by existing — throwing a hard-edged rectangle across
|
|
699
|
+
* whatever it faced, and picking up shadows from scenery in front of it.
|
|
700
|
+
*
|
|
701
|
+
* Tonio's framing, which is the right one: *"by default the UI should live
|
|
702
|
+
* outside the world."* A HUD or an inspector is something you look THROUGH
|
|
703
|
+
* the world at. Shading it as though it were furniture makes it ambiguous
|
|
704
|
+
* whether it is IN the scene — and worse, unreadable exactly when something
|
|
705
|
+
* passes between it and the sun.
|
|
706
|
+
*
|
|
707
|
+
* Casting is also the worst case for the shadow map: a large flat quad which,
|
|
708
|
+
* camera-relative, sits permanently inside `activeDistance` and never culls.
|
|
709
|
+
*
|
|
710
|
+
* The two are separate because the cases are. A **cockpit instrument
|
|
711
|
+
* surface** genuinely is in the world and should receive — it is lit by the
|
|
712
|
+
* same sun as the dashboard around it — while still not needing to cast. A
|
|
713
|
+
* sign on a wall or a screen in a room wants both.
|
|
714
|
+
*/
|
|
715
|
+
_meshName() {
|
|
716
|
+
const attrs = this;
|
|
717
|
+
let name = 'svg-plane';
|
|
718
|
+
if (attrs.castShadow !== true)
|
|
719
|
+
name += '_nocast';
|
|
720
|
+
if (attrs.receiveShadows !== true)
|
|
721
|
+
name += '_noshadow';
|
|
722
|
+
return name;
|
|
723
|
+
}
|
|
638
724
|
sceneReady(owner, scene) {
|
|
639
725
|
super.sceneReady(owner, scene);
|
|
640
726
|
const attrs = this;
|
|
@@ -646,7 +732,7 @@ export class B3dSvgPlane extends AbstractMesh {
|
|
|
646
732
|
height: attrs.height,
|
|
647
733
|
radius: attrs.cornerRadius,
|
|
648
734
|
});
|
|
649
|
-
const mesh = new BABYLON.Mesh(
|
|
735
|
+
const mesh = new BABYLON.Mesh(this._meshName(), scene);
|
|
650
736
|
const data = new BABYLON.VertexData();
|
|
651
737
|
data.positions = g.positions;
|
|
652
738
|
data.indices = g.indices;
|
|
@@ -656,7 +742,7 @@ export class B3dSvgPlane extends AbstractMesh {
|
|
|
656
742
|
this.mesh = mesh;
|
|
657
743
|
}
|
|
658
744
|
else {
|
|
659
|
-
this.mesh = BABYLON.MeshBuilder.CreatePlane(
|
|
745
|
+
this.mesh = BABYLON.MeshBuilder.CreatePlane(this._meshName(), {
|
|
660
746
|
width: attrs.width,
|
|
661
747
|
height: attrs.height,
|
|
662
748
|
sideOrientation: isOff(attrs.doubleSided)
|
|
@@ -733,6 +819,8 @@ export class B3dSvgPlane extends AbstractMesh {
|
|
|
733
819
|
owner.register({ meshes: [this.mesh] });
|
|
734
820
|
}
|
|
735
821
|
sceneDispose() {
|
|
822
|
+
this._offOrigin?.();
|
|
823
|
+
this._offOrigin = null;
|
|
736
824
|
if (this._dialogObs && this.owner) {
|
|
737
825
|
this.owner.scene.onBeforeRenderObservable.remove(this._dialogObs);
|
|
738
826
|
this._dialogObs = null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"b3d-svg-plane.js","sourceRoot":"","sources":["../src/b3d-svg-plane.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"b3d-svg-plane.js","sourceRoot":"","sources":["../src/b3d-svg-plane.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6YE;AACF,sBAAsB;AAEtB,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAA;AAC1C,OAAO,EACL,YAAY,EACZ,KAAK,EACL,UAAU,EACV,UAAU,EACV,UAAU,GACX,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,cAAc,EACd,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,MAAM,GACP,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAEpD,qFAAqF;AACrF,MAAM,oBAAoB,GAAG,MAAM,CAAA;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAG1C,MAAM,OAAO,WAAY,SAAQ,YAAY;IAC3C,MAAM,CAAC,SAAS,GAAG,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAA;IAEnD,MAAM,CAAC,cAAc,GAAG;QACtB,qEAAqE;QACrE,UAAU,EAAE,KAAK;QACjB;;;;;;WAMG;QACH,cAAc,EAAE,KAAK;QACrB,GAAG,YAAY,CAAC,cAAc;QAC9B,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,CAAC;QACT,UAAU,EAAE,GAAG;QACf,GAAG,EAAE,EAAE;QACP,cAAc,EAAE,EAAE;QAClB,eAAe,EAAE,UAAU;QAC3B,cAAc,EAAE,KAAK;QACrB;;;;;;;;;;WAUG;QACH,SAAS,EAAE,QAA8B;QACzC;;;;;;WAMG;QACH,OAAO,EAAE,EAAE;QACX,aAAa,EAAE,IAAoB;QACnC,WAAW,EAAE,IAAoB;QACjC;;;;;;;;WAQG;QACH,YAAY,EAAE,CAAC;QACf;;;;WAIG;QACH,WAAW,EAAE,IAAoB;KAClC,CAAA;IAgBD;sEACkE;IAC1D,YAAY,GAAG,KAAK,CAAA;IAE5B,kDAAkD;IAClD,UAAU,GAAyB,IAAI,CAAA;IAE/B,WAAW,GAAsB,IAAI,CAAA;IACrC,SAAS,GAAoC,IAAI,CAAA;IACjD,gBAAgB,GAEpB,IAAI,CAAA;IACR,+DAA+D;IACvD,SAAS,GAAG,KAAK,CAAA;IACjB,SAAS,GAAG,CAAC,CAAA;IACb,SAAS,GAAG,CAAC,CAAA;IAErB;;;;;;;;;;;OAWG;IACK,KAAK,GAAG,YAAY,EAAE,CAAA;IACtB,UAAU,GAAsD,IAAI,CAAA;IACpE,aAAa,GAA2B,IAAI,CAAA;IAC5C,UAAU,GAAwB,IAAI,CAAA;IAEtC,mBAAmB,CAAC,KAAoB;QAC9C;;;;;;;;;;;;;;;;;UAiBE;QACF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACxB,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAClB,MAAM,OAAO,GAAG,CAAC,EAAU,EAAE,EAAU,EAAE,EAAE;gBACzC,MAAM,IAAI,GAAG,IAAW,CAAA;gBACxB,IAAI,CAAC,CAAC,IAAI,EAAE,CAAA;gBACZ,IAAI,CAAC,CAAC,IAAI,EAAE,CAAA;gBACZ,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;oBACtB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAA;oBAC1B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAA;gBAC5B,CAAC;gBACD,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE,CAAC;oBAC/B,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAA;oBAC1B,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAA;gBAC5B,CAAC;YACH,CAAC,CAAA;YACD,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAA;YAChC,IAAI,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAA;QAC7D,CAAC;QAED,2EAA2E;QAC3E,uEAAuE;QACvE,MAAM,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAA;QAC1D,MAAM,OAAO,GAAI,IAAY,CAAC,CAAC,IAAI,CAAC,CAAA;QACpC,MAAM,KAAK,GAAG,CAAC,GAAmB,EAAE,SAAkB,EAAE,EAAE;YACxD,MAAM,GAAG,GAAG,GAAG,CAAC,cAAc,CAAA;YAC9B,MAAM,GAAG,GAAG,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;YACvD,MAAM,UAAU,GAAa,EAAE,CAAA;YAC/B,MAAM,IAAI,GAAsB,EAAE,CAAA;YAClC,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;gBACpC,MAAM,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,YAAY,CACvC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,EACpB,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CACzB,CAAA;gBACD,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;gBAClC,GAAG,CAAC,uBAAuB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;gBACnC,GAAG,CAAC,SAAS,EAAE,CAAA;gBACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBACd,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,CAC3B,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,GAAG,CAAC,CAAC;gBACtC,oEAAoE;gBACpE,UAAU,EAAE,CACb,CAAA;gBACD,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;YACrD,CAAC;YACD,0EAA0E;YAC1E,uEAAuE;YACvE,4CAA4C;YAC5C,MAAM,CAAC,GAAG,aAAa,CAAC,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC,CAAA;YACjD,yEAAyE;YACzE,+CAA+C;YAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YAChC,MAAM,IAAI,GAAG,iBAAiB,CAC5B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC1B,OAAO,EACP,GAAG,EACH,IAAI,CACL,CAAA;YACD,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;YACvC,IAAI,CAAC,aAAa,GAAG,MAAM,CAAA;YAC3B,IAAI,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC3B,qEAAqE;gBACrE,qEAAqE;gBACrE,mDAAmD;gBACnD,MAAM,IAAI,GAAG,IAAW,CAAA;gBACxB,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAA;gBACjB,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAA;gBACjB,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAA;gBACjB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;YACrC,CAAC;QACH,CAAC,CAAA;QAED,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,wBAAwB,CAAC,GAAG,CAAC,GAAG,EAAE;YACxD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;YACtB,MAAM,GAAG,GAAG,KAAK,CAAC,YAAY,CAAA;YAC9B,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI;gBAAE,OAAM;YACvC,qEAAqE;YACrE,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;gBACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;gBAClB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAA;YAC3B,CAAC;YACD,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI;gBAAE,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;YAEhD,MAAM,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;YAC5B,MAAM,GAAG,GAAG,cAAc,CACxB,GAAG,CAAC,cAAc,EAClB,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAC3C,IAAI,CAAC,QAAQ,CACd,CAAA;YACD,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAA;YAC7C,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;YAC1B,IAAI,OAAO,CAAC,OAAO;gBAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;YAEtC,MAAM,CAAC,GAAG,IAAI,CAAC,aAAa,CAAA;YAC5B,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;gBACd;;;;;;;;;;;;;;;;kBAgBE;gBACF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;gBACzC,MAAM,IAAI,GAAG,IAAW,CAAA;gBACxB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;gBACf,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;gBACf,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;gBACf,qEAAqE;gBACrE,4CAA4C;gBAC5C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;gBAEzC,gEAAgE;gBAChE,wDAAwD;gBACxD,EAAE;gBACF,oEAAoE;gBACpE,wEAAwE;gBACxE,iEAAiE;gBACjE,sEAAsE;gBACtE,MAAM,GAAG,GAAG,GAAG,CAAC,cAAc,CAAA;gBAC9B,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC;oBACtD,IAAI,CAAC,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;gBACpC,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,+EAA+E;IACvE,SAAS,GAAG,CAAC,CAAA;IACb,SAAS,GAAsD,IAAI,CAAA;IAE3E;;;;;OAKG;IACK,kBAAkB,CAAC,KAAoB;QAC7C,MAAM,KAAK,GAAG,IAAI,CAAA,CAAC,iDAAiD;QACpE,MAAM,MAAM,GAAG,IAAI,CAAA,CAAC,qDAAqD;QACzE,IAAI,CAAC,SAAS,GAAI,IAAY,CAAC,CAAC,IAAI,CAAC,CAAA;QACrC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,wBAAwB,CAAC,GAAG,CAAC,GAAG,EAAE;YACvD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;YACtB,MAAM,GAAG,GAAG,KAAK,CAAC,YAAY,CAAA;YAC9B,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI;gBAAE,OAAM;YAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAA;YAC9B,IAAI,OAAO,IAAI,CAAC;gBAAE,OAAM;YACxB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;YAC7B,MAAM,IAAI,GAAG,GAAG,CAAC,cAAc,CAAA;YAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;YACrD,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,CAAA;YACzB,IAAI,CAAC,GAAG,OAAO,CAAA;YACf,IAAI,IAAI,GAAG,IAAI,EAAE,CAAC;gBAChB,GAAG,CAAC,SAAS,EAAE,CAAA;gBACf,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;gBAC5C,uEAAuE;gBACvE,kEAAkE;gBAClE,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC1D,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,CAAC,QAAQ,GAAG,OAAO,EAAE,CAAC;oBACvC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,GAAG,MAAM,CAAC,CAAA;gBAC5C,CAAC;YACH,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAA;YACrB,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAA;YACnB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;YAEtB;;;;;;;;;;;;;cAaE;YACF,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,KAAK,GAAG,CAAA;YACzC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,aAAa;gBAC7B,CAAC,CAAC,CAAE,IAAY,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,IAAI,GAAG,CAAC;gBACnD,CAAC,CAAE,IAAY,CAAC,CAAC,IAAI,CAAC,CAAA;QAC1B,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,GAAG,GAAG,EAAE,CAAC,EAAE,CAAA;IAElB;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACK,SAAS;QACf,MAAM,KAAK,GAAG,IAAW,CAAA;QACzB,IAAI,IAAI,GAAG,WAAW,CAAA;QACtB,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI;YAAE,IAAI,IAAI,SAAS,CAAA;QAChD,IAAI,KAAK,CAAC,cAAc,KAAK,IAAI;YAAE,IAAI,IAAI,WAAW,CAAA;QACtD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,UAAU,CAAC,KAAU,EAAE,KAAoB;QACzC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QAC9B,MAAM,KAAK,GAAG,IAAW,CAAA;QAEzB,IAAI,KAAK,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;YAC3B,yEAAyE;YACzE,6DAA6D;YAC7D,MAAM,CAAC,GAAG,mBAAmB,CAAC;gBAC5B,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,MAAM,EAAE,KAAK,CAAC,YAAY;aAC3B,CAAC,CAAA;YACF,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,CAAC,CAAA;YACtD,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,UAAU,EAAE,CAAA;YACrC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAA;YAC5B,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAA;YACxB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAA;YAChB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAA;YACxB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;YACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAClB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,WAAW,CACzC,IAAI,CAAC,SAAS,EAAE,EAChB;gBACE,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,eAAe,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC;oBACvC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS;oBACxB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU;aAC5B,EACD,KAAK,CACN,CAAA;QACH,CAAC;QAED,yEAAyE;QACzE,sEAAsE;QACtE,6BAA6B;QAC7B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAErB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAqCE;QACF,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;YACzB,IAAI,KAAK,CAAC,SAAS,KAAK,OAAO;gBAAE,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAA;;gBAC3D,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAA;QACrC,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,UAAU,CAAC;YAChC,KAAK;YACL,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,SAAS;YAC3B,OAAO,EAAE,IAAI,CAAC,UAAU,IAAI,SAAS;YACrC,cAAc,EAAE,KAAK,CAAC,cAAc;SACrC,CAAC,CAAA;QAEF,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,gBAAgB,CAAC,eAAe,EAAE,KAAK,CAAC,CAAA;QAChE,GAAG,CAAC,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;QAC9C,IAAI,CAAC,SAAS,GAAG,GAAG,CAAA;QACpB,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAA;QACxE,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAA;QAExB,IAAI,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;YAC/C,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,YAAY,CAAA;QACvC,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACnD,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAA;QACpC,CAAC;QAED,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACzC,CAAC;IAED,YAAY;QACV,IAAI,CAAC,UAAU,EAAE,EAAE,CAAA;QACnB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;QACtB,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAClC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,wBAAwB,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YACjE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;QACxB,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACjC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,wBAAwB,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YAChE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;QACvB,CAAC;QACD,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACxC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;YAClE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;QAC9B,CAAC;QACD,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,CAAA;QAC3B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;QACvB,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,CAAA;QACzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;QACrB,KAAK,CAAC,YAAY,EAAE,CAAA;IACtB,CAAC;IAED,MAAM;QACJ,KAAK,CAAC,MAAM,EAAE,CAAA;QACd,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAM;QACzC,MAAM,KAAK,GAAG,IAAW,CAAA;QAEzB,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;YACzB,yEAAyE;YACzE,0EAA0E;YAC1E,wEAAwE;YACxE,qEAAqE;YACrE,MAAM,MAAM,GAAI,IAAI,CAAC,KAAa,EAAE,QAAQ,CAAA;YAC5C,MAAM,SAAS,GACb,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;YAC5D,MAAM,MAAM,GAAG,SAAS,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,IAAI,IAAI,CAAA;YACnE,IAAI,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC1C,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;gBACzB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;YAC1B,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjD;;;;;;;;;;cAUE;YACF,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;YACvB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAA;QAC3B,CAAC;IACH,CAAC;IAED,2DAA2D;IAC3D,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;IAEO,aAAa,CACnB,GAA6B,EAC7B,OAAe,EACf,MAAM,GAAG,KAAK;QAEd,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAM;QAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAA;QACpC;;;;;;;;;;;UAWE;QACF,IAAI,CAAC,MAAM;YAAE,GAAG,CAAC,cAAc,GAAG,GAAG,CAAA;;YAChC,GAAG,CAAC,cAAc,GAAG,IAAI,CAAA;QAC9B,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;YAC3B,GAAG,CAAC,eAAe,GAAG,GAAG,CAAA;YACzB,GAAG,CAAC,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;YACzC,GAAG,CAAC,eAAe,GAAG,IAAI,CAAA;QAC5B,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,cAAc,GAAG,GAAG,CAAA;YACxB,GAAG,CAAC,eAAe,GAAG,IAAI,CAAA;YAC1B,GAAG,CAAC,eAAe,GAAG,KAAK,CAAA;QAC7B,CAAC;IACH,CAAC;IAEO,sBAAsB,CAAC,KAAoB;QACjD,+DAA+D;QAC/D,KAAK,CAAC,gCAAgC,GAAG,IAAI,CAAA;QAC7C,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAA;QACzE,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE;YACpE,MAAM,IAAI,GACR,WAAW,CAAC,IAAI,KAAK,WAAW;gBAC9B,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,WAAW,CAAC,IAAI,KAAK,SAAS;oBAChC,CAAC,CAAC,IAAI;oBACN,CAAC,CAAC,WAAW,CAAC,IAAI,KAAK,WAAW;wBAClC,CAAC,CAAC,MAAM;wBACR,CAAC,CAAC,EAAE,CAAA;YACR,IAAI,CAAC,IAAI;gBAAE,OAAM;YAEjB,MAAM,KAAK,GAAG,IAAI,CAAC,UAGX,CAAA;YACR,MAAM,MAAM,GACV,KAAK,IAAI,OAAO,KAAK,CAAC,aAAa,KAAK,UAAU;gBAChD,CAAC,CAAC,KAAK,CAAC,aAAa;gBACrB,CAAC,CAAC,IAAI,CAAA;YAEV,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAA;YACjC,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,IAAI,CAAA;YAC5D,MAAM,GAAG,GAAG,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;YAEjE,4EAA4E;YAC5E,4EAA4E;YAC5E,0EAA0E;YAC1E,2EAA2E;YAC3E,wDAAwD;YACxD,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,GAAG,IAAI,KAAK,EAAE,CAAC;oBACjB,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,OAAO,CAAA;oBACjC,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,CAAA;oBACvD,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,CAAA;gBAChE,CAAC;gBACD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;oBACpB,IAAI,CAAC,GAAG;wBAAE,OAAM;oBAChB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;oBACrB,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;gBAChD,CAAC;qBAAM,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;oBAC3B,IAAI,IAAI,CAAC,SAAS;wBAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;gBACpE,CAAC;qBAAM,CAAC;oBACN,IAAI,IAAI,CAAC,SAAS;wBAAE,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;oBAChE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;gBACxB,CAAC;gBACD,OAAM;YACR,CAAC;YAED,wEAAwE;YACxE,IAAI,CAAC,GAAG;gBAAE,OAAM;YAChB,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAA;QAChD,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,uBAAuB,CAC7B,WAAgC,EAChC,GAAoB;QAEpB,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAA;QAC7B,IAAI,CAAC,KAAK;YAAE,OAAM;QAElB,+DAA+D;QAC/D,qCAAqC;QACrC,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,OAAO,CAAA;QACjC,MAAM,IAAI,GAAG,EAAE,EAAE,KAAK,IAAI,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,CAAA;QAC9D,MAAM,IAAI,GAAG,EAAE,EAAE,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,UAAU,CAAA;QAEhE,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAA;QACzB,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;QAE/B,6DAA6D;QAC7D,MAAM,IAAI,GAAG,KAAK,CAAC,qBAAqB,EAAE,CAAA;QAC1C,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QACjD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAA;QACtD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;QAEtD,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAA;QAC5D,MAAM,IAAI,GACR,WAAW,CAAC,IAAI,KAAK,WAAW;YAC9B,CAAC,CAAC,aAAa;YACf,CAAC,CAAC,WAAW,CAAC,IAAI,KAAK,SAAS;gBAChC,CAAC,CAAC,WAAW;gBACb,CAAC,CAAC,aAAa,CAAA;QAEnB,MAAM,SAAS,GAAG,WAAW,CAAC,KAAqB,CAAA;QACnD,MAAM,MAAM,GAAG,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,KAAK,CAAA;QAEnE,MAAM,CAAC,aAAa,CAClB,IAAI,YAAY,CAAC,IAAI,EAAE;YACrB,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,IAAI;YAChB,OAAO;YACP,OAAO;YACP;;;;;;;;cAQE;YACF,SAAS,EAAE,oBAAoB;YAC/B,WAAW,EAAG,SAAiB,CAAC,WAAW,IAAI,OAAO;YACtD,OAAO,EAAE,SAAS,CAAC,OAAO;SAC3B,CAAC,CACH,CAAA;IACH,CAAC;;AAGH,MAAM,CAAC,MAAM,WAAW,GAAG,WAAW,CAAC,cAAc,CAAC;IACpD,GAAG,EAAE,oBAAoB;CAC1B,CAAC,CAAA;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,8EAA8E;AAC9E,+EAA+E;AAC/E,4EAA4E;AAC5E,8EAA8E;AAC9E,8EAA8E;AAC9E,uDAAuD;AACvD,8EAA8E;AAE9E,2EAA2E;AAC3E,MAAM,UAAU,WAAW,CACzB,EAA4B,EAC5B,GAAW,EACX,GAAW;IAEX,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAA;AAC/C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAA+B,EAC/B,MAAc,EACd,MAAc,EACd,GAAW,EACX,GAAW;IAEX,OAAO;QACL,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG;QACjC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG;KAClC,CAAA;AACH,CAAC;AA0BD;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAC1B,MAAe,EACf,EAAqB;IAErB,MAAM,OAAO,GAAyB,EAAE,CAAA;IACxC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,MAAM,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACvD,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,OAAO;gBACX,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;gBACf,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;aAChB,CAAC,CAAA;QACJ,CAAC;aAAM,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QAC1D,CAAC;QACD,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;YAC3B,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;QACnC,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;IAClC,CAAC;IACD,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;YACpC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;YAC7B,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAE,EAAE,CAAC,CAAA;YAC/D,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;QAClC,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAE,EAAE,CAAC,CAAA;QAChE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;IAC5B,CAAC;IACD,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM;QACpB,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IAC1D,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;AAC5B,CAAC;AAqCD,MAAM,UAAU,UAAU,CAAC,IAAuB;IAIhD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,GAAG,CAAA;IAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAA;IACrC,MAAM,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAChE,MAAM,MAAM,GAAG,KAAK,GAAG,MAAM,CAAA;IAC7B,MAAM,KAAK,GAAG,WAAW,CAAC;QACxB,KAAK;QACL,MAAM,EAAE,MAAM;QACd,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,GAAG;QAClC,cAAc,EAAE,IAAI,CAAC,cAAc,IAAI,EAAE;QACzC,eAAe,EAAE,UAAU;QAC3B,aAAa,EAAE,KAAK;KACrB,CAAgB,CAAA;IACjB,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAA;IAE3B,MAAM,OAAO,GAAG,GAA6B,EAAE;QAC7C,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAA;QACpC,OAAO;YACL,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACpC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SACvC,CAAA;IACH,CAAC,CAAA;IAED,MAAM,YAAY,GAAG,CAAC,EAAO,EAAQ,EAAE;QACrC,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,kBAAkB,EAAE,CAAA;QACxD,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,eAAe,CACrC,WAAW,EACX,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAClC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG,EAClC,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,GAAG,EAC1B,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EACtB,EAAE,CAAC,KAAK,CACT,CAAA;QACD,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,CAAA;QACvB,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAC/B,4DAA4D;QAC5D,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,kCAAkC,CAAC,CAAA;QAC3D,EAAE,CAAC,KAAK,CAAC,gCAAgC,GAAG,IAAI,CAAA;QAEhD,0EAA0E;QAC1E,4DAA4D;QAC5D,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,WAAW,CAC7C,eAAe,EACf,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,EAAE,EACxC,EAAE,CAAC,KAAK,CACT,CAAA;QACD,OAAO,CAAC,UAAU,GAAG,CAAC,CAAA;QACtB,OAAO,CAAC,UAAU,GAAG,KAAK,CAAA;QAC1B,IAAI,OAAO,GAA6D,IAAI,CAAA;QAE5E,MAAM,CAAC,GAAG,OAAO,CAAC,iBAAiB,CAAA;QACnC,MAAM,MAAM,GACV,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;QAC5E,IAAI,MAAM,GAAG,KAAK,CAAA;QAClB,EAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;YACtC,MAAM,IAAI,GACR,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,WAAW;gBACvB,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,SAAS;oBACzB,CAAC,CAAC,IAAI;oBACN,CAAC,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,WAAW;wBAC3B,CAAC,CAAC,MAAM;wBACR,CAAC,CAAC,EAAE,CAAA;YACR,IAAI,CAAC,IAAI;gBAAE,OAAM;YACjB,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAA;YAEtB,yEAAyE;YACzE,4EAA4E;YAC5E,MAAM,EAAE,GAAsB,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;YACtD,IAAI,MAAM,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;gBACjD,qEAAqE;gBACrE,kEAAkE;gBAClE,MAAM,GAAG,GAAG,EAAE,EAAE,GAAG,CAAA;gBACnB,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;gBACpD,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,IAAI,OAAO,EAAE,CAAC;oBACjD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAChD,GAAG,CAAC,WAAW,EACf,OAAO,CAAC,GAAG,CACZ,CAAA;oBACD,EAAE,CAAC,OAAO,GAAG,mBAAmB,CAC9B,KAAK,EACL,KAAK,EACL,MAAM,EACN,OAAO,CAAC,GAAG,EACX,OAAO,CAAC,GAAG,CACZ,CAAA;gBACH,CAAC;qBAAM,CAAC;oBACN,EAAE,CAAC,OAAO,GAAG,IAAI,CAAA;gBACnB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,UAAU,KAAK,KAAK,CAAC,IAAI,CAAC,CAAA;gBAChE,EAAE,CAAC,OAAO,GAAG,OAAO,CAAA;gBACpB,IAAI,OAAO,EAAE,CAAC;oBACZ,MAAM,EAAE,GAAG,EAAG,CAAC,qBAAqB,EAAE,CAAA;oBACtC,MAAM,EAAE,GAAG,OAAO,EAAE,CAAA;oBACpB,IAAI,EAAE,EAAE,CAAC;wBACP,MAAM,CAAC,GAAG,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;wBACrC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;wBACV,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;oBACZ,CAAC;yBAAM,CAAC;wBACN,EAAE,CAAC,CAAC,GAAG,CAAC,CAAA;wBACR,EAAE,CAAC,CAAC,GAAG,CAAC,CAAA;oBACV,CAAC;gBACH,CAAC;gBACD,IAAI,IAAI,KAAK,MAAM,IAAI,OAAO;oBAAE,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC,CAAE,EAAE,EAAE,CAAC,CAAE,CAAC,CAAA;YAClE,CAAC;YAED,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;YACrC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;YACpB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC7B,IAAI,CAAC,CAAC,EAAE,KAAK,OAAO;oBAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;qBAC5D,IAAI,CAAC,CAAC,EAAE,KAAK,OAAO;oBAAE,YAAY,EAAE,CAAA;;oBACpC,UAAU,EAAE,CAAA;YACnB,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,MAAM,UAAU,GAAG,GAAS,EAAE;YAC5B,OAAO,GAAG,IAAI,CAAA;YACd,OAAO,CAAC,UAAU,GAAG,KAAK,CAAA;YAC1B,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QACjC,CAAC,CAAA;QACD,MAAM,YAAY,GAAG,GAAS,EAAE;YAC9B,MAAM,EAAE,GAAG,OAAO,EAAE,CAAA;YACpB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAK,CAAA;YACxB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;YAC7B,OAAO,GAAG;gBACR,GAAG,EAAE,EAAE,CAAC,CAAC;gBACT,GAAG,EAAE,EAAE,CAAC,CAAC;gBACT,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE;aAC5C,CAAA;YACD,qEAAqE;YACrE,qEAAqE;YACrE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;YAChD,IAAI,IAAI,CAAC,kBAAkB;gBACzB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAA;YAC9D,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;YAChC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAA;YACzB,GAAG,CAAC,aAAa,EAAE,CAAA;QACrB,CAAC,CAAA;IACH,CAAC,CAAA;IACD,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,CAAA;AAChC,CAAC"}
|
package/dist/b3d-water.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"b3d-water.d.ts","sourceRoot":"","sources":["../src/b3d-water.ts"],"names":[],"mappings":"AA6EA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"b3d-water.d.ts","sourceRoot":"","sources":["../src/b3d-water.ts"],"names":[],"mappings":"AA6EA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAA;AAE1C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,OAAO,KAAK,EAAE,GAAG,EAAwC,MAAM,YAAY,CAAA;AAE3E,qBAAa,QAAS,SAAQ,YAAY;IACxC,MAAM,CAAC,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;MA+CpB;IAED,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,OAAO,CAAC,SAAS,CAAC,CAAsB;IACxC,OAAO,CAAC,iBAAiB,CAAC,CAAY;IACtC,OAAO,CAAC,eAAe,CAAC,CAAY;IACpC,OAAO,CAAC,aAAa,CAAC,CAAY;IAClC,OAAO,CAAC,OAAO,CAA2B;IAC1C,qFAAqF;IACrF,OAAO,CAAC,UAAU,CAAQ;IAC1B,gFAAgF;IAChF,OAAO,CAAC,aAAa,CAA+C;IACpE,OAAO,CAAC,WAAW,CAAC,CAAY;IAChC,OAAO,CAAC,cAAc,CAAQ;IAE9B,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,WAAW;IAsBnB,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,GAAG,IAAI;IAsKlD;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,OAAO,CAAC,UAAU;IAalB;;oDAEgD;IAChD,OAAO,CAAC,UAAU;IAiBlB,YAAY,IAAI,IAAI;IAsBpB;;;8DAG0D;IAC1D,OAAO,CAAC,YAAY;IAmBpB,MAAM;CAMP;AAED,eAAO,MAAM,QAAQ,2CAAqD,CAAA"}
|
package/dist/b3d-water.js
CHANGED
|
@@ -67,7 +67,7 @@ document.body.append(
|
|
|
67
67
|
b3d({},
|
|
68
68
|
b3dSun({}),
|
|
69
69
|
b3dSkybox({ timeOfDay: 12 }),
|
|
70
|
-
b3dWater({ y: -0.2, twoSided: true, waterSize: 1024
|
|
70
|
+
b3dWater({ y: -0.2, twoSided: true, waterSize: 1024 })
|
|
71
71
|
)
|
|
72
72
|
)
|
|
73
73
|
```
|
|
@@ -75,6 +75,7 @@ document.body.append(
|
|
|
75
75
|
/*{ "parent": "Environment" }*/
|
|
76
76
|
import { plane as mediumPlane } from './medium';
|
|
77
77
|
import * as BABYLON from '@babylonjs/core';
|
|
78
|
+
import { waterNormalTexture } from './water-normal';
|
|
78
79
|
import { WaterMaterial } from '@babylonjs/materials';
|
|
79
80
|
import { AbstractMesh } from './b3d-utils';
|
|
80
81
|
import { band } from './atmosphere';
|
|
@@ -97,10 +98,27 @@ export class B3dWater extends AbstractMesh {
|
|
|
97
98
|
// dragged along), and the reflection map refreshes every few frames instead of every one
|
|
98
99
|
// (a moving sea doesn't need a perfect mirror). Off by default (a small pond doesn't need it).
|
|
99
100
|
follow: false,
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
101
|
+
/*
|
|
102
|
+
EMPTY MEANS PROCEDURAL, and that is the default on purpose.
|
|
103
|
+
|
|
104
|
+
It used to default to `/waterbump.png` — root-absolute so it resolved the
|
|
105
|
+
same from every `/{slug}/` doc page, which was correct reasoning about the
|
|
106
|
+
wrong problem: **the file ships in this repo's `static/`, not in the
|
|
107
|
+
package**. So every consumer taking the documented default pointed at a file
|
|
108
|
+
they had never been told to serve.
|
|
109
|
+
|
|
110
|
+
And the failure is silent in the worst way. Babylon's `Texture` falls back
|
|
111
|
+
when a fetch does not decode, so the sea renders as a CHECKERBOARD — which
|
|
112
|
+
reads as a deliberate style rather than a missing asset. ensemble's owner
|
|
113
|
+
asked whether it was intentional and said it looked awesome (tosijs-3d#46).
|
|
114
|
+
|
|
115
|
+
A 59 KB PNG could have been shipped, but a path that must resolve at a
|
|
116
|
+
fixed URL is the footgun itself, not the file. `waterNormalTexture` builds
|
|
117
|
+
one from the Perlin noise this library already has: no file, no network, no
|
|
118
|
+
path to get wrong, and it works offline and inside a headset. Set
|
|
119
|
+
`normalMap` to override with something prettier.
|
|
120
|
+
*/
|
|
121
|
+
normalMap: '',
|
|
104
122
|
windForce: -5,
|
|
105
123
|
waveHeight: 0,
|
|
106
124
|
bumpHeight: 0.1,
|
|
@@ -182,7 +200,15 @@ export class B3dWater extends AbstractMesh {
|
|
|
182
200
|
*/
|
|
183
201
|
this.mesh.metadata = { ...(this.mesh.metadata ?? {}), b3dWater: true };
|
|
184
202
|
this.waterMaterial = new WaterMaterial('water', scene, new BABYLON.Vector2(attrs.textureSize, attrs.textureSize));
|
|
185
|
-
this.waterMaterial.bumpTexture =
|
|
203
|
+
this.waterMaterial.bumpTexture = attrs.normalMap
|
|
204
|
+
? // An explicit path: load it, but SAY SO if it fails. The checkerboard
|
|
205
|
+
// fallback is indistinguishable from a style choice, so silence here is
|
|
206
|
+
// what cost ensemble the confusion in the first place.
|
|
207
|
+
new BABYLON.Texture(attrs.normalMap, scene, undefined, undefined, undefined, undefined, () => {
|
|
208
|
+
console.error(`b3d-water: normalMap "${attrs.normalMap}" failed to load — the sea will render as a checkerboard. ` +
|
|
209
|
+
`Leave normalMap unset for the built-in procedural map.`);
|
|
210
|
+
})
|
|
211
|
+
: waterNormalTexture(scene);
|
|
186
212
|
this.updateWater();
|
|
187
213
|
this.mesh.material = this.waterMaterial;
|
|
188
214
|
this._callback = this.waterCallback.bind(this);
|
package/dist/b3d-water.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"b3d-water.js","sourceRoot":"","sources":["../src/b3d-water.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyEE;AACF,+BAA+B;AAE/B,OAAO,EAAE,KAAK,IAAI,WAAW,EAAoB,MAAM,UAAU,CAAA;AACjE,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAGnC,MAAM,OAAO,QAAS,SAAQ,YAAY;IACxC,MAAM,CAAC,cAAc,GAAG;QACtB,qFAAqF;QACrF,sFAAsF;QACtF,qDAAqD;QACrD,aAAa,EAAE,IAAI,EAAE,kCAAkC;QACvD,cAAc,EAAE,IAAI,EAAE,0DAA0D;QAChF,aAAa,EAAE,GAAG,EAAE,wDAAwD;QAC5E,GAAG,YAAY,CAAC,cAAc;QAC9B,SAAS,EAAE,KAAK;QAChB,SAAS,EAAE,GAAG;QACd,YAAY,EAAE,EAAE;QAChB,WAAW,EAAE,IAAI;QACjB,QAAQ,EAAE,KAAK;QACf,0FAA0F;QAC1F,8FAA8F;QAC9F,yFAAyF;QACzF,+FAA+F;QAC/F,MAAM,EAAE,KAAK;QACb
|
|
1
|
+
{"version":3,"file":"b3d-water.js","sourceRoot":"","sources":["../src/b3d-water.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyEE;AACF,+BAA+B;AAE/B,OAAO,EAAE,KAAK,IAAI,WAAW,EAAoB,MAAM,UAAU,CAAA;AACjE,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAA;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAGnC,MAAM,OAAO,QAAS,SAAQ,YAAY;IACxC,MAAM,CAAC,cAAc,GAAG;QACtB,qFAAqF;QACrF,sFAAsF;QACtF,qDAAqD;QACrD,aAAa,EAAE,IAAI,EAAE,kCAAkC;QACvD,cAAc,EAAE,IAAI,EAAE,0DAA0D;QAChF,aAAa,EAAE,GAAG,EAAE,wDAAwD;QAC5E,GAAG,YAAY,CAAC,cAAc;QAC9B,SAAS,EAAE,KAAK;QAChB,SAAS,EAAE,GAAG;QACd,YAAY,EAAE,EAAE;QAChB,WAAW,EAAE,IAAI;QACjB,QAAQ,EAAE,KAAK;QACf,0FAA0F;QAC1F,8FAA8F;QAC9F,yFAAyF;QACzF,+FAA+F;QAC/F,MAAM,EAAE,KAAK;QACb;;;;;;;;;;;;;;;;;;;UAmBE;QACF,SAAS,EAAE,EAAE;QACb,SAAS,EAAE,CAAC,CAAC;QACb,UAAU,EAAE,CAAC;QACb,UAAU,EAAE,GAAG;QACf,UAAU,EAAE,GAAG;QACf,UAAU,EAAE,SAAS;QACrB,gBAAgB,EAAE,GAAG;QACrB,cAAc,EAAE,GAAG;QACnB,cAAc,EAAE,GAAG;KACpB,CAAA;IAED,aAAa,CAAgB;IACrB,SAAS,CAAuB;IAChC,iBAAiB,CAAa;IAC9B,eAAe,CAAa;IAC5B,aAAa,CAAa;IAC1B,OAAO,GAAuB,IAAI,CAAA;IAC1C,qFAAqF;IAC7E,UAAU,GAAG,KAAK,CAAA;IAC1B,gFAAgF;IACxE,aAAa,GAAG,IAAI,OAAO,EAAiC,CAAA;IAC5D,WAAW,CAAa;IACxB,cAAc,GAAG,KAAK,CAAA;IAEtB,aAAa,CAAC,SAAyB;QAC7C,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;QAC5B,IAAI,MAAM,IAAI,IAAI;YAAE,OAAM;QAC1B,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACjC,IAAI,CAAC,aAAc,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;YAC3C,CAAC;QACH,CAAC;IACH,CAAC;IAEO,WAAW;QACjB,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI;YAAE,OAAM;QAC5D,MAAM,KAAK,GAAG,IAAW,CAAA;QACzB,IAAI,CAAC,aAAa,CAAC,eAAe,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAA;QACpD,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAA;QAC9C,IAAI,CAAC,aAAa,CAAC,aAAa,GAAG,IAAI,OAAO,CAAC,OAAO,CACpD,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,cAAc,CACrB,CAAA;QACD,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAA;QAChD,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAA;QAChD,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAA;QAChD,IAAI,KAAK,CAAC,gBAAgB,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,KAAK,CAAC,UAAoB,CAAA;YACtC,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAA;YAC7C,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAA;YAC7C,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAA;YAC7C,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QAC7D,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAA;IAC9D,CAAC;IAED,UAAU,CAAC,KAAU,EAAE,KAAoB;QACzC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QAC9B,MAAM,KAAK,GAAG,IAAW,CAAA;QAEzB,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,YAAY,CAC1C,cAAc,EACd,EAAE,QAAQ,EAAE,KAAK,CAAC,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,EAC3D,KAAK,CACN,CAAA;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,YAAY,CAC1C,cAAc,EACd;gBACE,KAAK,EAAE,KAAK,CAAC,SAAS;gBACtB,MAAM,EAAE,KAAK,CAAC,SAAS;gBACvB,YAAY,EAAE,KAAK,CAAC,YAAY;aACjC,EACD,KAAK,CACN,CAAA;QACH,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAA;QACjC;;;;;;;;;;;;;;UAcE;QACF,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;QAEtE,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CACpC,OAAO,EACP,KAAK,EACL,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,CAC1D,CAAA;QACD,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,KAAK,CAAC,SAAS;YAC9C,CAAC,CAAC,sEAAsE;gBACtE,wEAAwE;gBACxE,uDAAuD;gBACvD,IAAI,OAAO,CAAC,OAAO,CACjB,KAAK,CAAC,SAAS,EACf,KAAK,EACL,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,GAAG,EAAE;oBACH,OAAO,CAAC,KAAK,CACX,yBAAyB,KAAK,CAAC,SAAS,4DAA4D;wBAClG,wDAAwD,CAC3D,CAAA;gBACH,CAAC,CACF;YACH,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAA;QAC7B,IAAI,CAAC,WAAW,EAAE,CAAA;QAClB,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAA;QAEvC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC9C,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAEtC,4FAA4F;QAC5F,2FAA2F;QAC3F,0FAA0F;QAC1F,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,0FAA0F;YAC1F,yFAAyF;YACzF,2EAA2E;YAC3E,IAAI,CAAC,WAAW,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAA;YAC5C,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QAC9C,CAAC;QAED,0CAA0C;QAC1C,EAAE;QACF,oFAAoF;QACpF,0FAA0F;QAC1F,sFAAsF;QACtF,WAAW;QACX,EAAE;QACF,qFAAqF;QACrF,sFAAsF;QACtF,iFAAiF;QACjF;;;;;;;;;;;UAWE;QACF,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC;YACzB,IAAI,EAAE,OAAO;YACb,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,IAAK,IAAY,CAAC,CAAC,IAAI,CAAC;YACxD,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAG,IAAY,CAAC,aAAa,CAAC;YACjD,0EAA0E;YAC1E,4DAA4D;YAC5D,IAAI,EAAE,EAAE;YACR,OAAO,EAAE,IAAI;YACb;;;;;;;;;;cAUE;YACF,MAAM,EAAE;gBACN,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE;gBAChC,OAAO,EAAG,IAAY,CAAC,aAAa;gBACpC,IAAI,EAAG,IAAY,CAAC,cAAc;gBAClC,SAAS,EAAE,EAAE;gBACb,aAAa,EAAE,CAAC;aACjB;SACF,CAAC,CAAA;QACF,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,OAAsB,CAAC,CAAA;QAEjE,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;YAC5C,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;gBAC9C,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAA;YAC/C,CAAC;YACD,MAAM,GAAG,GAAG,KAAK,CAAC,YAAY,CAAA;YAC9B,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAA;YACnC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,GAAG,GAAG,CAAC,cAAc,CAAC,CAAC,CAAA;YACjE,8EAA8E;YAC9E,EAAE;YACF,iFAAiF;YACjF,qFAAqF;YACrF,sFAAsF;YACtF,wFAAwF;YACxF,iEAAiE;YACjE,MAAM,KAAK,GAAG,IAAW,CAAA;YACzB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAA;YACjE,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;YACtB,IAAI,CAAC,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAA;YACvB,sFAAsF;YACtF,8DAA8D;YAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC,CAAA;YACnD,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,cAAc,GAAG,MAAM,CAAA;YACnE,OAAO;gBACL,MAAM,EAAE,CAAC;gBACT,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE;gBAChC,OAAO;gBACP,yFAAyF;gBACzF,uFAAuF;gBACvF,wEAAwE;gBACxE,KAAK,EAAE,CAAC;gBACR,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;aAC9B,CAAA;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACK,UAAU,CAAC,SAAkB;QACnC,IAAI,SAAS,KAAK,IAAI,CAAC,UAAU;YAAE,OAAM;QACzC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAA;QAC3B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;YACpC,IAAI,SAAS,EAAE,CAAC;gBACd,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAA;gBACzC,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAA;YACrB,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,CAAA;YACrD,CAAC;QACH,CAAC;IACH,CAAC;IAED;;oDAEgD;IACxC,UAAU;QAChB,MAAM,GAAG,GAA2B,EAAE,CAAA;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACxB,IAAI,KAAK,IAAI,IAAI;YAAE,OAAO,GAAG,CAAA;QAC7B,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC3D,MAAM,CAAC,GAAI,EAAwD,CAAC,IAAI,CAAA;YACxE,IAAI,CAAC;gBAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACpB,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,GAAG,CAAA;QAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAA;QACzB,IAAI,KAAK,IAAI,IAAI;YAAE,OAAO,GAAG,CAAA;QAC7B,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YAC7B,IAAI,CAAC,CAAC,gBAAgB,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;gBAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACvE,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,YAAY;QACV,IAAI,CAAC,aAAa,EAAE,EAAE,CAAA;QACtB,IAAI,CAAC,aAAa,GAAG,SAAS,CAAA;QAC9B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QACnB,2EAA2E;QAC3E,wCAAwC;QACxC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;QACtB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAChD,CAAC;QACD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,sBAAsB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;YAC1D,IAAI,CAAC,WAAW,GAAG,SAAS,CAAA;QAC9B,CAAC;QACD,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,IAAI,CAAC,eAAe,EAAE,CAAA,CAAC,gEAAgE;YACvF,IAAI,CAAC,eAAe,GAAG,SAAS,CAAA;QAClC,CAAC;QACD,IAAI,CAAC,aAAa,GAAG,SAAS,CAAA;QAC9B,KAAK,CAAC,YAAY,EAAE,CAAA;IACtB,CAAC;IAED;;;8DAG0D;IAClD,YAAY;QAClB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,YAAY,CAAA;QAC1C,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAM;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAG,IAAY,CAAC,SAAS,CAAC,CAAA;QACjD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,CAAA,CAAC,qEAAqE;QAC5F,MAAM,CAAC,GAAG,GAAG,CAAC,cAAc,CAAA;QAC5B,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;QACxC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;QACxC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE;YAAE,OAAM;QACtE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAA;QACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAA;QACzB,0FAA0F;QAC1F,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,WAA0C,CAAA;QAC3E,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAA;YAC/C,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAA;QACjD,CAAC;IACH,CAAC;IAED,MAAM;QACJ,KAAK,CAAC,MAAM,EAAE,CAAA;QACd,IAAI,CAAC,WAAW,EAAE,CAAA;QAClB,4FAA4F;QAC5F,IAAI,IAAI,CAAC,WAAW;YAAE,IAAI,CAAC,YAAY,EAAE,CAAA;IAC3C,CAAC;;AAGH,MAAM,CAAC,MAAM,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,EAAE,GAAG,EAAE,gBAAgB,EAAE,CAAC,CAAA"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
export interface BuoyancyParams {
|
|
2
|
+
/** Metres per second squared, negative. Default −9.81. */
|
|
3
|
+
gravity?: number;
|
|
4
|
+
/**
|
|
5
|
+
* Upward push at FULL submersion, as a multiple of weight. `> 1` floats,
|
|
6
|
+
* `< 1` sinks. Equilibrium submersion is `1 / buoyancy`. Default 1.15.
|
|
7
|
+
*/
|
|
8
|
+
buoyancy?: number;
|
|
9
|
+
/** Quadratic drag through water. Much higher than air. Default 4. */
|
|
10
|
+
waterDrag?: number;
|
|
11
|
+
/** Quadratic drag through air, for the part of you that is out. Default 0.02. */
|
|
12
|
+
airDrag?: number;
|
|
13
|
+
/**
|
|
14
|
+
* Vertical thrust, m/s², signed (positive up) — a swimmer kicking. Added to
|
|
15
|
+
* the acceleration, so it competes with buoyancy rather than overriding it:
|
|
16
|
+
* stop kicking and physics takes over again. Default 0.
|
|
17
|
+
*/
|
|
18
|
+
thrust?: number;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* How much of a body of height `height`, standing with its feet at `feetY`, is
|
|
22
|
+
* under a surface at `surfaceY`. `0` = dry, `1` = fully under.
|
|
23
|
+
*
|
|
24
|
+
* Clamped both ends, so a caller can hand it any geometry — including a body
|
|
25
|
+
* above the water, which is the common case and must cost nothing.
|
|
26
|
+
*/
|
|
27
|
+
export declare function submergedFraction(feetY: number, height: number, surfaceY: number): number;
|
|
28
|
+
/**
|
|
29
|
+
* Advance vertical velocity by one step. Returns the new velocity (m/s, up
|
|
30
|
+
* positive) — the caller integrates position, so this composes with whatever
|
|
31
|
+
* else is moving the body.
|
|
32
|
+
*
|
|
33
|
+
* Drag is blended by submersion rather than switched, so crossing the surface
|
|
34
|
+
* is continuous. A hard switch put a step change in the acceleration exactly at
|
|
35
|
+
* the waterline, which reads as a bounce off the surface — the same "kill the
|
|
36
|
+
* discontinuity, not the contrast" lesson the underwater fog learned.
|
|
37
|
+
*/
|
|
38
|
+
export declare function buoyantStep(vy: number, submerged: number, dt: number, params?: BuoyancyParams): number;
|
|
39
|
+
/**
|
|
40
|
+
* The submersion at which the push balances the weight — where a body floating
|
|
41
|
+
* freely comes to rest. `1` (fully under, i.e. it sinks) when `buoyancy <= 1`.
|
|
42
|
+
*/
|
|
43
|
+
export declare function equilibriumSubmersion(buoyancy?: number): number;
|
|
44
|
+
/**
|
|
45
|
+
* Is this body swimming rather than standing?
|
|
46
|
+
*
|
|
47
|
+
* Swimming is **deep enough AND not resting on the floor**. Note the second
|
|
48
|
+
* term carefully: it is _resting on_, not _within reach of_. Those differ, and
|
|
49
|
+
* the difference is the whole behaviour — a body in six metres of water is
|
|
50
|
+
* floating whether or not its feet could touch the bottom, because buoyancy has
|
|
51
|
+
* already lifted it off. Asking "is there ground below me?" instead left a
|
|
52
|
+
* character standing on the seabed under six metres of water, technically
|
|
53
|
+
* grounded and visibly wrong.
|
|
54
|
+
*
|
|
55
|
+
* So the caller integrates buoyancy first and passes what actually happened.
|
|
56
|
+
* The floor is a floor — it stops you sinking; it does not hold you down.
|
|
57
|
+
*/
|
|
58
|
+
export declare function isSwimming(submerged: number, restingOnFloor: boolean, wasSwimming?: boolean): boolean;
|
|
59
|
+
/**
|
|
60
|
+
* **Buoyancy for a swimmer, which is not buoyancy for a floating body.**
|
|
61
|
+
*
|
|
62
|
+
* A relaxed body corks to the surface; a diver holds depth. Both are true — the
|
|
63
|
+
* difference is that a swimmer manages it (exhaling, finning) and a log does
|
|
64
|
+
* not. So once your head is properly under, buoyancy blends from the floating
|
|
65
|
+
* value toward `neutral`, which is set **just above 1 on purpose**: hold still
|
|
66
|
+
* underwater and you drift slowly up, so you surface if you stop paying
|
|
67
|
+
* attention, but you do not cork the moment you stop kicking.
|
|
68
|
+
*
|
|
69
|
+
* Tonio chose the behaviour: _"holding with a slow drift upward by default."_
|
|
70
|
+
* Games usually hold depth and real bodies cork; holding is the comfortable
|
|
71
|
+
* choice and the drift is what keeps it honest.
|
|
72
|
+
*
|
|
73
|
+
* `headDepth` is how far the TOP of the body is below the surface — negative
|
|
74
|
+
* while any part is still out. The blend is gradual so breaking the surface is
|
|
75
|
+
* continuous, for the same reason the drag blend is.
|
|
76
|
+
*
|
|
77
|
+
* **The blend distance is the difference between diving and drowning.** At half
|
|
78
|
+
* a metre — the first value here — a swimmer whose head dipped barely under was
|
|
79
|
+
* already fully neutral, so they held there instead of bobbing back up, and the
|
|
80
|
+
* up-thrust is throttled near the surface too (`surfaceAimLimit`), which left
|
|
81
|
+
* nothing to get them out. Tonio: *"still treading water with head underwater
|
|
82
|
+
* and it's hard to swim up."* Over 1.5 m the hold belongs to DIVING, which is
|
|
83
|
+
* what it was for, and the surface stays buoyant.
|
|
84
|
+
*/
|
|
85
|
+
export declare function swimBuoyancy(headDepth: number, params?: {
|
|
86
|
+
buoyancy?: number;
|
|
87
|
+
neutral?: number;
|
|
88
|
+
blend?: number;
|
|
89
|
+
}): number;
|
|
90
|
+
//# sourceMappingURL=buoyancy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buoyancy.d.ts","sourceRoot":"","sources":["../src/buoyancy.ts"],"names":[],"mappings":"AAqCA,MAAM,WAAW,cAAc;IAC7B,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iFAAiF;IACjF,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,MAAM,CAIR;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CACzB,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,MAAM,EACV,MAAM,GAAE,cAAmB,GAC1B,MAAM,CAmBR;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,SAAO,GAAG,MAAM,CAE7D;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CACxB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,OAAO,EACvB,WAAW,UAAQ,GAClB,OAAO,CAmBT;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,YAAY,CAC1B,SAAS,EAAE,MAAM,EACjB,MAAM,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GACnE,MAAM,CAKR"}
|
package/dist/buoyancy.js
ADDED
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/*#
|
|
2
|
+
# buoyancy
|
|
3
|
+
|
|
4
|
+
**Falling in water is not falling in air.** The pure vertical model behind the
|
|
5
|
+
biped's swimming: how fast a body sinks, why it comes back up, and where it
|
|
6
|
+
settles. Babylon-free, deterministic, unit tested.
|
|
7
|
+
|
|
8
|
+
## Why a model rather than a constant
|
|
9
|
+
|
|
10
|
+
The obvious version — "use a smaller gravity underwater" — sinks you forever,
|
|
11
|
+
just slowly. What actually happens is that a body is slightly **less dense than
|
|
12
|
+
water**, so it is pushed up in proportion to how much of it is submerged, and it
|
|
13
|
+
comes to rest at the depth where that push balances its weight. That is one
|
|
14
|
+
equation, and everything readable falls out of it for free:
|
|
15
|
+
|
|
16
|
+
- Drop in from a height and you plunge, decelerate hard, and **bob back up**.
|
|
17
|
+
- Settle and your head is out of the water, because equilibrium is at partial
|
|
18
|
+
submersion — not because anything targets a head height.
|
|
19
|
+
- Wade in from a beach and nothing happens until the water is deep enough to
|
|
20
|
+
lift you, because the push scales with submersion.
|
|
21
|
+
|
|
22
|
+
Aiming at a target depth instead would have to special-case every one of those.
|
|
23
|
+
|
|
24
|
+
## The numbers, and what they mean
|
|
25
|
+
|
|
26
|
+
`buoyancy` is the ratio of the upward push at FULL submersion to weight. Above 1
|
|
27
|
+
you float, and the equilibrium submersion is `1 / buoyancy` — so the default
|
|
28
|
+
`1.15` rests with about 87% of you under, which is roughly a person treading
|
|
29
|
+
water. Below 1 you sink forever, which is the honest way to model armour, and
|
|
30
|
+
`waterDrag` then sets how fast.
|
|
31
|
+
|
|
32
|
+
Drag is quadratic, so terminal speed is `sqrt(|a| / drag)` — the default gives
|
|
33
|
+
about 1.5 m/s sinking, an order slower than the ~20 m/s of a fall through air.
|
|
34
|
+
Slow enough to see, fast enough not to feel broken.
|
|
35
|
+
*/
|
|
36
|
+
/*{ "parent": "Effects" }*/
|
|
37
|
+
/**
|
|
38
|
+
* How much of a body of height `height`, standing with its feet at `feetY`, is
|
|
39
|
+
* under a surface at `surfaceY`. `0` = dry, `1` = fully under.
|
|
40
|
+
*
|
|
41
|
+
* Clamped both ends, so a caller can hand it any geometry — including a body
|
|
42
|
+
* above the water, which is the common case and must cost nothing.
|
|
43
|
+
*/
|
|
44
|
+
export function submergedFraction(feetY, height, surfaceY) {
|
|
45
|
+
if (height <= 0)
|
|
46
|
+
return feetY <= surfaceY ? 1 : 0;
|
|
47
|
+
const under = (surfaceY - feetY) / height;
|
|
48
|
+
return under <= 0 ? 0 : under >= 1 ? 1 : under;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Advance vertical velocity by one step. Returns the new velocity (m/s, up
|
|
52
|
+
* positive) — the caller integrates position, so this composes with whatever
|
|
53
|
+
* else is moving the body.
|
|
54
|
+
*
|
|
55
|
+
* Drag is blended by submersion rather than switched, so crossing the surface
|
|
56
|
+
* is continuous. A hard switch put a step change in the acceleration exactly at
|
|
57
|
+
* the waterline, which reads as a bounce off the surface — the same "kill the
|
|
58
|
+
* discontinuity, not the contrast" lesson the underwater fog learned.
|
|
59
|
+
*/
|
|
60
|
+
export function buoyantStep(vy, submerged, dt, params = {}) {
|
|
61
|
+
const { gravity = -9.81, buoyancy = 1.15, waterDrag = 4, airDrag = 0.02, thrust = 0, } = params;
|
|
62
|
+
if (dt <= 0)
|
|
63
|
+
return vy;
|
|
64
|
+
const s = submerged <= 0 ? 0 : submerged >= 1 ? 1 : submerged;
|
|
65
|
+
// Weight always; the push scales with how much of you is in the water. Thrust
|
|
66
|
+
// only works against something to push on, so it scales with submersion too —
|
|
67
|
+
// kicking in mid-air should not launch you.
|
|
68
|
+
const accel = gravity + -gravity * buoyancy * s + thrust * s;
|
|
69
|
+
const drag = airDrag + (waterDrag - airDrag) * s;
|
|
70
|
+
const next = vy + accel * dt;
|
|
71
|
+
// Drag opposes motion and is applied on the NEW speed, which keeps it stable
|
|
72
|
+
// at large dt instead of overshooting into an oscillation.
|
|
73
|
+
return next - drag * Math.abs(next) * next * dt;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* The submersion at which the push balances the weight — where a body floating
|
|
77
|
+
* freely comes to rest. `1` (fully under, i.e. it sinks) when `buoyancy <= 1`.
|
|
78
|
+
*/
|
|
79
|
+
export function equilibriumSubmersion(buoyancy = 1.15) {
|
|
80
|
+
return buoyancy <= 1 ? 1 : 1 / buoyancy;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Is this body swimming rather than standing?
|
|
84
|
+
*
|
|
85
|
+
* Swimming is **deep enough AND not resting on the floor**. Note the second
|
|
86
|
+
* term carefully: it is _resting on_, not _within reach of_. Those differ, and
|
|
87
|
+
* the difference is the whole behaviour — a body in six metres of water is
|
|
88
|
+
* floating whether or not its feet could touch the bottom, because buoyancy has
|
|
89
|
+
* already lifted it off. Asking "is there ground below me?" instead left a
|
|
90
|
+
* character standing on the seabed under six metres of water, technically
|
|
91
|
+
* grounded and visibly wrong.
|
|
92
|
+
*
|
|
93
|
+
* So the caller integrates buoyancy first and passes what actually happened.
|
|
94
|
+
* The floor is a floor — it stops you sinking; it does not hold you down.
|
|
95
|
+
*/
|
|
96
|
+
export function isSwimming(submerged, restingOnFloor, wasSwimming = false) {
|
|
97
|
+
if (restingOnFloor)
|
|
98
|
+
return false;
|
|
99
|
+
/*
|
|
100
|
+
HYSTERESIS, and it is a concession worth naming.
|
|
101
|
+
|
|
102
|
+
MOBILITY-DESIGN.md argues that modes should be DERIVED rather than entered,
|
|
103
|
+
and lists exactly this as what would falsify it: "if deriving cover every
|
|
104
|
+
frame proves too noisy — flickering in and out at a boundary — then it needs
|
|
105
|
+
hysteresis, and hysteresis is a state." It fired here first. Walking down a
|
|
106
|
+
ramp into water, submersion hovers around the threshold and the character
|
|
107
|
+
flickers between swimming and standing — Tonio: "there's sometimes a twitch
|
|
108
|
+
and you go back to standing as you ramp into water."
|
|
109
|
+
|
|
110
|
+
So: enter swimming at 0.5, keep it until 0.35. One bit of state, and the
|
|
111
|
+
narrowest kind — it changes when you SWITCH, never what you can do. The
|
|
112
|
+
broader claim survives with a caveat rather than intact, which is worth more
|
|
113
|
+
than pretending the falsifier did not fire.
|
|
114
|
+
*/
|
|
115
|
+
return submerged >= (wasSwimming ? 0.35 : 0.5);
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* **Buoyancy for a swimmer, which is not buoyancy for a floating body.**
|
|
119
|
+
*
|
|
120
|
+
* A relaxed body corks to the surface; a diver holds depth. Both are true — the
|
|
121
|
+
* difference is that a swimmer manages it (exhaling, finning) and a log does
|
|
122
|
+
* not. So once your head is properly under, buoyancy blends from the floating
|
|
123
|
+
* value toward `neutral`, which is set **just above 1 on purpose**: hold still
|
|
124
|
+
* underwater and you drift slowly up, so you surface if you stop paying
|
|
125
|
+
* attention, but you do not cork the moment you stop kicking.
|
|
126
|
+
*
|
|
127
|
+
* Tonio chose the behaviour: _"holding with a slow drift upward by default."_
|
|
128
|
+
* Games usually hold depth and real bodies cork; holding is the comfortable
|
|
129
|
+
* choice and the drift is what keeps it honest.
|
|
130
|
+
*
|
|
131
|
+
* `headDepth` is how far the TOP of the body is below the surface — negative
|
|
132
|
+
* while any part is still out. The blend is gradual so breaking the surface is
|
|
133
|
+
* continuous, for the same reason the drag blend is.
|
|
134
|
+
*
|
|
135
|
+
* **The blend distance is the difference between diving and drowning.** At half
|
|
136
|
+
* a metre — the first value here — a swimmer whose head dipped barely under was
|
|
137
|
+
* already fully neutral, so they held there instead of bobbing back up, and the
|
|
138
|
+
* up-thrust is throttled near the surface too (`surfaceAimLimit`), which left
|
|
139
|
+
* nothing to get them out. Tonio: *"still treading water with head underwater
|
|
140
|
+
* and it's hard to swim up."* Over 1.5 m the hold belongs to DIVING, which is
|
|
141
|
+
* what it was for, and the surface stays buoyant.
|
|
142
|
+
*/
|
|
143
|
+
export function swimBuoyancy(headDepth, params = {}) {
|
|
144
|
+
const { buoyancy = 1.15, neutral = 1.02, blend = 1.5 } = params;
|
|
145
|
+
if (headDepth <= 0)
|
|
146
|
+
return buoyancy;
|
|
147
|
+
const t = blend <= 0 ? 1 : Math.min(1, headDepth / blend);
|
|
148
|
+
return buoyancy + (neutral - buoyancy) * t;
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=buoyancy.js.map
|