incanto 0.52.0 → 0.53.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/2d.d.ts +51 -3
- package/dist/2d.js +3 -3
- package/dist/3d.d.ts +9 -3
- package/dist/3d.js +4 -4
- package/dist/{behavior-uPEuZrUB.d.ts → behavior-Do0Da56m.d.ts} +98 -0
- package/dist/{create-game-B_e9hJf7.js → create-game-9D87XaiX.js} +26 -11
- package/dist/{create-game-CGnoypjL.js → create-game-CDJ1lVqK.js} +21 -13
- package/dist/debug.d.ts +1 -1
- package/dist/{duplicate-B-OtSRFL.js → duplicate-MNLMAcbz.js} +1 -1
- package/dist/editor.js +14 -0
- package/dist/{environment-presets-DSZwsKPs.js → environment-presets-SkGanr2s.js} +2 -2
- package/dist/{gameplay-B6jqvYeM.js → gameplay-CRYw_Q-T.js} +2 -2
- package/dist/gameplay.d.ts +1 -1
- package/dist/gameplay.js +1 -1
- package/dist/index.d.ts +177 -5
- package/dist/index.js +8 -8
- package/dist/{loader-B-Gft32x.js → loader-BTkHYrQn.js} +54 -18
- package/dist/{loader-B9iTqs27.d.ts → loader-Cu_7kJDy.d.ts} +1 -1
- package/dist/{log-report-lxrQY9cH.js → log-report-CPFm4OXf.js} +0 -0
- package/dist/net.d.ts +2 -2
- package/dist/net.js +1 -1
- package/dist/{pathfinding-CAR9DjQQ.d.ts → pathfinding-HNGFqGUZ.d.ts} +24 -1
- package/dist/{physics-2d-Dns-oZlE.js → physics-2d-BhZZ-HAp.js} +2 -2
- package/dist/{physics-3d-BhI0ehpe.js → physics-3d-DmyO2oaN.js} +3 -3
- package/dist/react.d.ts +1 -1
- package/dist/react.js +1 -1
- package/dist/{register-DVwlnZAZ.js → register-BTomIiYG.js} +304 -24
- package/dist/{register-Trx7WHnD.js → register-DROK2l7J.js} +2 -2
- package/dist/{replay-BU1CCM15.d.ts → replay-9Fy6C10F.d.ts} +1 -1
- package/dist/{replay-BicPOMX0.js → replay-DYNUL4BU.js} +2 -2
- package/dist/{split-screen-CZ9ccBBQ.js → split-screen-CaF9hO7g.js} +2 -2
- package/dist/{split-screen-paxkQs_q.d.ts → split-screen-DNmcX1Pz.d.ts} +1 -1
- package/dist/{src-5gbZO47I.js → src-C9xyZW7M.js} +1 -1
- package/dist/{teardown-ks3d5W9n.js → teardown-Bw2aeyGI.js} +30 -1
- package/dist/{test-DAojuFdb.js → test-CJRsciFk.js} +11 -11
- package/dist/test.d.ts +4 -4
- package/dist/test.js +2 -2
- package/dist/{touch-BoNg_MnF.js → touch-BnMyy9tr.js} +4 -4
- package/dist/vite.js +2 -2
- package/editor/assets/{agent8-CCvckvbw.js → agent8-PlFHzJsh.js} +1 -1
- package/editor/assets/{debug-CLNCOnbc.js → debug-CebV7CDW.js} +1 -1
- package/editor/assets/{index-Cb5Brupb.js → index-CdbsY31G.js} +91 -91
- package/editor/index.html +1 -1
- package/package.json +1 -1
- package/schemas/scene.schema.json +213 -0
- package/skills/incanto-audio.md +97 -10
- package/skills/incanto-building-2d-games.md +20 -3
- package/skills/incanto-hud.md +7 -0
- package/skills/incanto-node-reference.md +34 -0
- package/skills/incanto-physics-and-input.md +38 -0
- package/skills/incanto-verifying-your-game.md +19 -1
- package/skills/incanto-web-integration.md +1 -0
- package/templates-app/beacon-isle-3d/index.html +3 -3
- package/templates-app/beacon-isle-3d/package.json +1 -1
- package/templates-app/tps-3d/index.html +3 -3
- package/templates-app/tps-3d/package.json +1 -1
- package/templates-app/village-quest-3d/index.html +3 -3
- package/templates-app/village-quest-3d/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { $ as T_PREFIX, A as SettingsValues, At as LogEntry, B as captureBehaviors, C as EngineStats, Ct as MusicTrack, Dt as Node, E as DeviceHints, Et as BusName, F as BehaviorState, G as ORDER_GROUP_BASE, H as savesWithoutUid, I as RestoreReport, J as effectiveOrder, K as OrderGroup, L as SaveSlot, M as readDeviceHints, Mt as LogManager, N as suggestQuality, Nt as Signal, O as QualityTier, Ot as NodeLifecycle, P as Scene, Pt as SignalListener, Q as Localization, R as SaveSlots, S as Scheduler, St as MusicManager, T as RendererStats, Tt as AudioBuses, U as SaveStore, V as restoreBehaviors, W as createSaveStore, X as BASE_LOCALE, Y as resolveOrderGroups, Z as LocaleTables, _ as mergeStaticSignals, _t as SfxParams, a as clearBehaviors, at as isAudioContextAvailable, b as Engine, bt as synthSfx, c as registeredBehaviors, ct as Listener, d as PropSchema, dt as SpatialParams, et as suggestLocale, f as clearRegistry, ft as Vec3, g as getNodeType, gt as SFX_PRESET_NAMES, h as getNodeSignals, ht as SFX_PRESETS, i as behaviorSignals, it as SfxPlayOptions, j as qualityEnvironment, jt as LogLevel, k as Settings, kt as SceneTree, l as NodeCtor, lt as ROLLOFF_MODELS, m as getNodeSchema, mt as spatialPan, n as BehaviorCtor, nt as InputMap, o as getBehavior, ot as Voice, p as createNode, pt as spatialGain, q as OrderGroupTable, r as behaviorSchema, rt as SfxEngine, s as registerBehavior, st as VoicePreset, t as Behavior, tt as translationKey, u as PropDef, ut as RolloffModel, v as registerNode, vt as SfxWave, w as GameStats, wt as PlayMusicOptions, x as EngineOptions, xt as MusicBackend, y as registeredTypes, yt as SynthOptions, z as behaviorsWithoutSave } from "./behavior-
|
|
1
|
+
import { $ as T_PREFIX, A as SettingsValues, At as LogEntry, B as captureBehaviors, C as EngineStats, Ct as MusicTrack, Dt as Node, E as DeviceHints, Et as BusName, F as BehaviorState, G as ORDER_GROUP_BASE, H as savesWithoutUid, I as RestoreReport, J as effectiveOrder, K as OrderGroup, L as SaveSlot, M as readDeviceHints, Mt as LogManager, N as suggestQuality, Nt as Signal, O as QualityTier, Ot as NodeLifecycle, P as Scene, Pt as SignalListener, Q as Localization, R as SaveSlots, S as Scheduler, St as MusicManager, T as RendererStats, Tt as AudioBuses, U as SaveStore, V as restoreBehaviors, W as createSaveStore, X as BASE_LOCALE, Y as resolveOrderGroups, Z as LocaleTables, _ as mergeStaticSignals, _t as SfxParams, a as clearBehaviors, at as isAudioContextAvailable, b as Engine, bt as synthSfx, c as registeredBehaviors, ct as Listener, d as PropSchema, dt as SpatialParams, et as suggestLocale, f as clearRegistry, ft as Vec3, g as getNodeType, gt as SFX_PRESET_NAMES, h as getNodeSignals, ht as SFX_PRESETS, i as behaviorSignals, it as SfxPlayOptions, j as qualityEnvironment, jt as LogLevel, k as Settings, kt as SceneTree, l as NodeCtor, lt as ROLLOFF_MODELS, m as getNodeSchema, mt as spatialPan, n as BehaviorCtor, nt as InputMap, o as getBehavior, ot as Voice, p as createNode, pt as spatialGain, q as OrderGroupTable, r as behaviorSchema, rt as SfxEngine, s as registerBehavior, st as VoicePreset, t as Behavior, tt as translationKey, u as PropDef, ut as RolloffModel, v as registerNode, vt as SfxWave, w as GameStats, wt as PlayMusicOptions, x as EngineOptions, xt as MusicBackend, y as registeredTypes, yt as SynthOptions, z as behaviorsWithoutSave } from "./behavior-Do0Da56m.js";
|
|
2
2
|
import { a as Rng, c as JsonValue, d as jsonKind, i as SceneJson, l as jsonClone, n as NodeJson, o as JsonKind, r as SCENE_FORMAT, s as JsonObject, t as ConnectionJson, u as jsonEquals } from "./schema-CFeioQRE.js";
|
|
3
|
-
import { n as loadScene, t as LoadSceneOptions } from "./loader-
|
|
3
|
+
import { n as loadScene, t as LoadSceneOptions } from "./loader-Cu_7kJDy.js";
|
|
4
4
|
import { i as resolveFrames, n as AnimationEntry, r as resolveAnimation, t as AnimationDef } from "./sprite-animation-CMr6f1K2.js";
|
|
5
5
|
import { n as ParticleSimConfig, r as ParticleView, t as ParticleSim } from "./particle-sim-BzJ1yxoE.js";
|
|
6
|
-
import { a as AudioElementLike, i as gridFromRows, n as PathGrid, o as AudioPlayer, r as findPath, t as FindPathOptions } from "./pathfinding-
|
|
7
|
-
import { a as startRecording, c as IncantoErrorDetails, i as replay, l as auditScene, n as ReplayEvent, o as IncantoError, r as ReplayJson, s as IncantoErrorCode, t as Recorder } from "./replay-
|
|
6
|
+
import { a as AudioElementLike, i as gridFromRows, n as PathGrid, o as AudioPlayer, r as findPath, t as FindPathOptions } from "./pathfinding-HNGFqGUZ.js";
|
|
7
|
+
import { a as startRecording, c as IncantoErrorDetails, i as replay, l as auditScene, n as ReplayEvent, o as IncantoError, r as ReplayJson, s as IncantoErrorCode, t as Recorder } from "./replay-9Fy6C10F.js";
|
|
8
8
|
|
|
9
9
|
//#region src/core/audio/crossfade.d.ts
|
|
10
10
|
/**
|
|
@@ -38,6 +38,7 @@ declare class WebAudioMusicBackend implements MusicBackend {
|
|
|
38
38
|
private ensure;
|
|
39
39
|
createTrack(src: string): MusicTrack;
|
|
40
40
|
unlock(): void;
|
|
41
|
+
dispose(): void;
|
|
41
42
|
}
|
|
42
43
|
//#endregion
|
|
43
44
|
//#region src/core/debug-draw.d.ts
|
|
@@ -697,6 +698,177 @@ declare class UiSelect extends HudWidgetBase {
|
|
|
697
698
|
private fillOptions;
|
|
698
699
|
protected override _sync(): void;
|
|
699
700
|
}
|
|
701
|
+
/**
|
|
702
|
+
* The language picker, done — because every game needs the same one.
|
|
703
|
+
*
|
|
704
|
+
* A plain `UiSelect` bound to the locale would take a behavior, a signal
|
|
705
|
+
* connection, and the knowledge that `Settings` persists it: three things an
|
|
706
|
+
* agent has to get right to ship a feature the engine already has. This is one
|
|
707
|
+
* node.
|
|
708
|
+
*
|
|
709
|
+
* ```json
|
|
710
|
+
* { "name": "Language", "type": "UiLanguageSelect",
|
|
711
|
+
* "props": { "label": "@t:settings.language" } }
|
|
712
|
+
* ```
|
|
713
|
+
*
|
|
714
|
+
* Options are the locales the SCENE declares, so a game shipping only English
|
|
715
|
+
* shows only English and the widget quietly costs nothing. Each is labeled with
|
|
716
|
+
* its own endonym, because a player who cannot read the language currently on
|
|
717
|
+
* screen still has to be able to find theirs.
|
|
718
|
+
*/
|
|
719
|
+
declare class UiLanguageSelect extends UiSelect {
|
|
720
|
+
static override readonly typeName: string;
|
|
721
|
+
static override readonly props: PropSchema;
|
|
722
|
+
override label: string;
|
|
723
|
+
/** Last locale we PUSHED into `value`, to tell an engine change from a player one. */
|
|
724
|
+
private lastLocale;
|
|
725
|
+
protected override _sync(): void;
|
|
726
|
+
protected override _optionLabel(value: string): string;
|
|
727
|
+
}
|
|
728
|
+
/**
|
|
729
|
+
* A select bound to one persisted setting — the shape all three graphics
|
|
730
|
+
* controls share.
|
|
731
|
+
*
|
|
732
|
+
* The engine owns quality tiers, the frame cap and the resolution scale, and
|
|
733
|
+
* every one of them was reachable only from TypeScript. A vibe-coded game whose
|
|
734
|
+
* whole world is JSON could not put a graphics menu on screen without a
|
|
735
|
+
* behavior, a signal connection, and the knowledge that `Settings` persists —
|
|
736
|
+
* which is how "supports low-end devices" quietly becomes "does not".
|
|
737
|
+
*
|
|
738
|
+
* Subclasses say which setting, what the options are, and what they read as.
|
|
739
|
+
*/
|
|
740
|
+
declare abstract class UiSettingSelect extends UiSelect {
|
|
741
|
+
/** Last value we PUSHED into the select, to tell an engine change from a player one. */
|
|
742
|
+
private lastPushed;
|
|
743
|
+
/** The settings key this control owns. */
|
|
744
|
+
protected abstract _key(): string;
|
|
745
|
+
/** The stored value, as the string the select carries. */
|
|
746
|
+
protected abstract _read(engine: NonNullable<ReturnType<UiSettingSelect["_engine"]>>): string;
|
|
747
|
+
/** Apply a player's pick. */
|
|
748
|
+
protected abstract _write(engine: NonNullable<ReturnType<UiSettingSelect["_engine"]>>, value: string): void;
|
|
749
|
+
protected _engine(): Engine | null;
|
|
750
|
+
/**
|
|
751
|
+
* The translated option label, or the English one.
|
|
752
|
+
*
|
|
753
|
+
* `locale.t` returns the KEY when nothing declares it, and a menu reading
|
|
754
|
+
* `settings.quality.high` is worse than one reading `High`. English is the
|
|
755
|
+
* base language and the fallback, always.
|
|
756
|
+
*/
|
|
757
|
+
protected _tOr(key: string, fallback: string): string;
|
|
758
|
+
protected override _sync(): void;
|
|
759
|
+
}
|
|
760
|
+
/**
|
|
761
|
+
* The graphics quality picker.
|
|
762
|
+
*
|
|
763
|
+
* ```json
|
|
764
|
+
* { "name": "Quality", "type": "UiQualitySelect" }
|
|
765
|
+
* ```
|
|
766
|
+
*
|
|
767
|
+
* Writes through `chooseQuality`, NOT `set('quality')`: a tier a person picked
|
|
768
|
+
* has to survive the next launch's device detection, and the two are
|
|
769
|
+
* indistinguishable afterwards unless the choice is recorded as one.
|
|
770
|
+
*
|
|
771
|
+
* Shadows, bloom, post and clouds follow immediately. Antialiasing follows on
|
|
772
|
+
* the next launch — it is a WebGL context attribute and cannot change while a
|
|
773
|
+
* context exists.
|
|
774
|
+
*/
|
|
775
|
+
declare class UiQualitySelect extends UiSettingSelect {
|
|
776
|
+
static override readonly typeName: string;
|
|
777
|
+
static override readonly props: PropSchema;
|
|
778
|
+
override label: string;
|
|
779
|
+
override options: string;
|
|
780
|
+
protected override _key(): string;
|
|
781
|
+
protected override _read(engine: Engine): string;
|
|
782
|
+
protected override _write(engine: Engine, value: string): void;
|
|
783
|
+
protected override _optionLabel(value: string): string;
|
|
784
|
+
}
|
|
785
|
+
/**
|
|
786
|
+
* The frame-rate cap: fewer frames, a cooler phone, a longer battery.
|
|
787
|
+
*
|
|
788
|
+
* ```json
|
|
789
|
+
* { "name": "FrameCap", "type": "UiFrameCapSelect" }
|
|
790
|
+
* ```
|
|
791
|
+
*
|
|
792
|
+
* `0` is uncapped and is the default — a cap nobody asked for is a downgrade.
|
|
793
|
+
* The cap gates the whole frame, so it saves the CPU as well as the GPU.
|
|
794
|
+
*/
|
|
795
|
+
declare class UiFrameCapSelect extends UiSettingSelect {
|
|
796
|
+
static override readonly typeName: string;
|
|
797
|
+
static override readonly props: PropSchema;
|
|
798
|
+
override label: string;
|
|
799
|
+
override options: string;
|
|
800
|
+
protected override _key(): string;
|
|
801
|
+
protected override _read(engine: Engine): string;
|
|
802
|
+
protected override _write(engine: Engine, value: string): void;
|
|
803
|
+
protected override _optionLabel(value: string): string;
|
|
804
|
+
}
|
|
805
|
+
/**
|
|
806
|
+
* The resolution scale — the cheapest frames on a weak GPU.
|
|
807
|
+
*
|
|
808
|
+
* ```json
|
|
809
|
+
* { "name": "Resolution", "type": "UiRenderScaleSelect" }
|
|
810
|
+
* ```
|
|
811
|
+
*
|
|
812
|
+
* At 75% the fragment shaders run over 56% of the pixels for a slightly softer
|
|
813
|
+
* image and nothing else, where dropping a quality tier costs the shadows
|
|
814
|
+
* outright. Reads as a percentage, because `0.75` means nothing to a player.
|
|
815
|
+
*/
|
|
816
|
+
declare class UiRenderScaleSelect extends UiSettingSelect {
|
|
817
|
+
static override readonly typeName: string;
|
|
818
|
+
static override readonly props: PropSchema;
|
|
819
|
+
override label: string;
|
|
820
|
+
override options: string;
|
|
821
|
+
protected override _key(): string;
|
|
822
|
+
protected override _read(engine: Engine): string;
|
|
823
|
+
protected override _write(engine: Engine, value: string): void;
|
|
824
|
+
protected override _optionLabel(value: string): string;
|
|
825
|
+
}
|
|
826
|
+
/** The three buses a player is ever offered a slider for. */
|
|
827
|
+
declare const VOLUME_BUSES: readonly ["master", "sfx", "music"];
|
|
828
|
+
type VolumeBus = (typeof VOLUME_BUSES)[number];
|
|
829
|
+
/**
|
|
830
|
+
* The volume slider — the settings row every game has.
|
|
831
|
+
*
|
|
832
|
+
* ```json
|
|
833
|
+
* { "name": "Music", "type": "UiVolumeSlider", "props": { "bus": "music" } }
|
|
834
|
+
* ```
|
|
835
|
+
*
|
|
836
|
+
* The graphics controls above became nodes because a game whose whole world is
|
|
837
|
+
* JSON could not put a menu on screen without a behavior, a signal connection
|
|
838
|
+
* and the knowledge that `Settings` persists. All of that was just as true of
|
|
839
|
+
* volume, which is the control a player looks for FIRST and the only one some
|
|
840
|
+
* games need at all — so an audio menu meant hand-rolled DOM, and hand-rolled
|
|
841
|
+
* DOM is out of scene JSON, out of the editor, and out of every headless check.
|
|
842
|
+
*
|
|
843
|
+
* It writes the bus; the bus persists itself (`bindAudio`, which
|
|
844
|
+
* `createGame2D/3D` wire), so there is nothing to save.
|
|
845
|
+
*/
|
|
846
|
+
declare class UiVolumeSlider extends UiSlider {
|
|
847
|
+
static override readonly typeName: string;
|
|
848
|
+
static override readonly props: PropSchema;
|
|
849
|
+
bus: VolumeBus;
|
|
850
|
+
/** Last value we PUSHED in, to tell an engine-side change from a player drag. */
|
|
851
|
+
private lastPushed;
|
|
852
|
+
protected override _build(): HTMLElement;
|
|
853
|
+
protected override _sync(): void;
|
|
854
|
+
}
|
|
855
|
+
/**
|
|
856
|
+
* The mute switch.
|
|
857
|
+
*
|
|
858
|
+
* ```json
|
|
859
|
+
* { "name": "Mute", "type": "UiMuteToggle" }
|
|
860
|
+
* ```
|
|
861
|
+
*
|
|
862
|
+
* Checked means silent. Like the slider it writes `engine.audio`, which
|
|
863
|
+
* persists itself.
|
|
864
|
+
*/
|
|
865
|
+
declare class UiMuteToggle extends UiToggle {
|
|
866
|
+
static override readonly typeName: string;
|
|
867
|
+
static override readonly props: PropSchema;
|
|
868
|
+
private lastPushed;
|
|
869
|
+
protected override _build(): HTMLElement;
|
|
870
|
+
protected override _sync(): void;
|
|
871
|
+
}
|
|
700
872
|
//#endregion
|
|
701
873
|
//#region src/core/noise.d.ts
|
|
702
874
|
/**
|
|
@@ -917,4 +1089,4 @@ declare function computeViewport(canvasW: number, canvasH: number, viewport: {
|
|
|
917
1089
|
/** Engine version. Kept in sync with package.json by the release pipeline. */
|
|
918
1090
|
declare const VERSION: string;
|
|
919
1091
|
//#endregion
|
|
920
|
-
export { type AnimationDef, type AnimationEntry, type AssetFailure, AudioBuses, type AudioElementLike, AudioPlayer, BASE_LOCALE, Behavior, type BehaviorCtor, type BehaviorState, type BusName, CONST_REF_KEY, type ComputedViewport, type ConnectionJson, type CrossfadeGains, type DebugLineSource, type DeviceHints, type DriveScript, type DriveStep, Engine, type EngineOptions, type EngineStats, type FindPathOptions, type GameStats, type GroupedLog, type HudAnchor, HudLayer, IncantoError, type IncantoErrorCode, type IncantoErrorDetails, InputMap, type JsonKind, type JsonObject, type JsonValue, type Listener, type LiveInput, type LiveReport, type LoadSceneOptions, type LocaleTables, Localization, type LogEntry, type LogLevel, LogManager, type MusicBackend, MusicManager, type MusicTrack, Node, type NodeCtor, type NodeJson, type NodeLifecycle, ORDER_GROUP_BASE, type OrderGroup, type OrderGroupTable, PARTICLE_PRESETS, PARTICLE_PRESET_NAMES, type ParsedNodePath, type ParticlePresetValues, ParticleSim, type ParticleSimConfig, type ParticleView, type PathGrid, type PlayMusicOptions, type PreloadResult, type PropDef, type PropSchema, type QualityTier, ROLLOFF_MODELS, type Recorder, type RefNode, type RefProblem, type RefResult, type RendererStats, type ReplayEvent, type ReplayJson, type ResolvedRendering, type ResolvedViewport, type RestoreReport, Rng, type RolloffModel, SCENE_FORMAT, SFX_PRESETS, SFX_PRESET_NAMES, type SaveSlot, SaveSlots, type SaveStore, Scene, type SceneJson, SceneTree, type Scheduler, Settings, type SettingsValues, SfxEngine, type SfxParams, type SfxPlayOptions, type SfxWave, Signal, type SignalListener, type SpatialParams, type SynthOptions, T_PREFIX, Timer, TouchControls, type TouchControlsOptions, UiBanner, UiBar, UiButton, UiDialogue, UiImage, UiPanel, UiSelect, UiSlider, UiText, UiToggle, VERSION, type Vec3, type ViewportFit, type Voice, type VoicePreset, WebAudioMusicBackend, applyParticlePreset, assetUrls, attachTouchControls, auditScene, behaviorSchema, behaviorSignals, behaviorsWithoutSave, captureBehaviors, clearBehaviors, clearRegistry, computeViewport, createNode, createNoise2D, createSaveStore, crossfadeGains, describeRefProblem, duplicateNode, effectiveOrder, fadeGain, findPath, getBehavior, getNodeSchema, getNodeSignals, getNodeType, gridFromRows, isAudioContextAvailable, isConstRef, joystickVector, jsonClone, jsonEquals, jsonKind, loadScene, logReport, logText, mergeStaticSignals, newUid, nodeRefWarnings, parseDrive, parseNodePath, preloadUrls, qualityEnvironment, readDeviceHints, registerBehavior, registerCoreNodes, registerNode, registeredBehaviors, registeredTypes, replay, resolveAnimation, resolveConstants, resolveFrames, resolveOrderGroups, resolveRefInJson, resolveRendering, resolveViewport, restoreBehaviors, savesWithoutUid, serializeNode, spatialGain, spatialPan, startRecording, suggestLocale, suggestQuality, synthSfx, translationKey };
|
|
1092
|
+
export { type AnimationDef, type AnimationEntry, type AssetFailure, AudioBuses, type AudioElementLike, AudioPlayer, BASE_LOCALE, Behavior, type BehaviorCtor, type BehaviorState, type BusName, CONST_REF_KEY, type ComputedViewport, type ConnectionJson, type CrossfadeGains, type DebugLineSource, type DeviceHints, type DriveScript, type DriveStep, Engine, type EngineOptions, type EngineStats, type FindPathOptions, type GameStats, type GroupedLog, type HudAnchor, HudLayer, IncantoError, type IncantoErrorCode, type IncantoErrorDetails, InputMap, type JsonKind, type JsonObject, type JsonValue, type Listener, type LiveInput, type LiveReport, type LoadSceneOptions, type LocaleTables, Localization, type LogEntry, type LogLevel, LogManager, type MusicBackend, MusicManager, type MusicTrack, Node, type NodeCtor, type NodeJson, type NodeLifecycle, ORDER_GROUP_BASE, type OrderGroup, type OrderGroupTable, PARTICLE_PRESETS, PARTICLE_PRESET_NAMES, type ParsedNodePath, type ParticlePresetValues, ParticleSim, type ParticleSimConfig, type ParticleView, type PathGrid, type PlayMusicOptions, type PreloadResult, type PropDef, type PropSchema, type QualityTier, ROLLOFF_MODELS, type Recorder, type RefNode, type RefProblem, type RefResult, type RendererStats, type ReplayEvent, type ReplayJson, type ResolvedRendering, type ResolvedViewport, type RestoreReport, Rng, type RolloffModel, SCENE_FORMAT, SFX_PRESETS, SFX_PRESET_NAMES, type SaveSlot, SaveSlots, type SaveStore, Scene, type SceneJson, SceneTree, type Scheduler, Settings, type SettingsValues, SfxEngine, type SfxParams, type SfxPlayOptions, type SfxWave, Signal, type SignalListener, type SpatialParams, type SynthOptions, T_PREFIX, Timer, TouchControls, type TouchControlsOptions, UiBanner, UiBar, UiButton, UiDialogue, UiFrameCapSelect, UiImage, UiLanguageSelect, UiMuteToggle, UiPanel, UiQualitySelect, UiRenderScaleSelect, UiSelect, UiSlider, UiText, UiToggle, UiVolumeSlider, VERSION, type Vec3, type ViewportFit, type Voice, type VoicePreset, WebAudioMusicBackend, applyParticlePreset, assetUrls, attachTouchControls, auditScene, behaviorSchema, behaviorSignals, behaviorsWithoutSave, captureBehaviors, clearBehaviors, clearRegistry, computeViewport, createNode, createNoise2D, createSaveStore, crossfadeGains, describeRefProblem, duplicateNode, effectiveOrder, fadeGain, findPath, getBehavior, getNodeSchema, getNodeSignals, getNodeType, gridFromRows, isAudioContextAvailable, isConstRef, joystickVector, jsonClone, jsonEquals, jsonKind, loadScene, logReport, logText, mergeStaticSignals, newUid, nodeRefWarnings, parseDrive, parseNodePath, preloadUrls, qualityEnvironment, readDeviceHints, registerBehavior, registerCoreNodes, registerNode, registeredBehaviors, registeredTypes, replay, resolveAnimation, resolveConstants, resolveFrames, resolveOrderGroups, resolveRefInJson, resolveRendering, resolveViewport, restoreBehaviors, savesWithoutUid, serializeNode, spatialGain, spatialPan, startRecording, suggestLocale, suggestQuality, synthSfx, translationKey };
|
package/dist/index.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { A as registerBehavior, D as behaviorSignals, E as behaviorSchema, M as Signal, O as clearBehaviors, S as InputMap, T as Behavior, _ as savesWithoutUid, a as SCENE_FORMAT, b as effectiveOrder, c as SceneTree, d as resolveConstants, f as Node, g as restoreBehaviors, h as captureBehaviors, i as serializeNode, j as registeredBehaviors, k as getBehavior, l as CONST_REF_KEY, m as behaviorsWithoutSave, n as loadScene, o as computeViewport, p as SaveSlots, r as Scene, s as resolveViewport, u as isConstRef, v as createSaveStore, w as parseNodePath, x as resolveOrderGroups, y as ORDER_GROUP_BASE } from "./loader-
|
|
2
|
-
import { A as
|
|
1
|
+
import { A as registerBehavior, D as behaviorSignals, E as behaviorSchema, M as Signal, O as clearBehaviors, S as InputMap, T as Behavior, _ as savesWithoutUid, a as SCENE_FORMAT, b as effectiveOrder, c as SceneTree, d as resolveConstants, f as Node, g as restoreBehaviors, h as captureBehaviors, i as serializeNode, j as registeredBehaviors, k as getBehavior, l as CONST_REF_KEY, m as behaviorsWithoutSave, n as loadScene, o as computeViewport, p as SaveSlots, r as Scene, s as resolveViewport, u as isConstRef, v as createSaveStore, w as parseNodePath, x as resolveOrderGroups, y as ORDER_GROUP_BASE } from "./loader-BTkHYrQn.js";
|
|
2
|
+
import { A as Localization, B as SFX_PRESET_NAMES, D as suggestQuality, E as readDeviceHints, F as isAudioContextAvailable, G as fadeGain, H as MusicManager, I as ROLLOFF_MODELS, K as AudioBuses, L as spatialGain, M as suggestLocale, N as translationKey, O as LogManager, P as SfxEngine, R as spatialPan, S as Settings, U as WebAudioMusicBackend, V as synthSfx, W as crossfadeGains, _ as UiBanner, a as UiMuteToggle, b as AudioPlayer, c as UiRenderScaleSelect, d as UiToggle, f as UiVolumeSlider, g as HudLayer, h as UiDialogue, i as UiLanguageSelect, j as T_PREFIX, k as BASE_LOCALE, l as UiSelect, m as UiButton, n as UiFrameCapSelect, o as UiPanel, p as Timer, r as UiImage, s as UiQualitySelect, t as registerCoreNodes, u as UiSlider, v as UiBar, w as qualityEnvironment, x as Engine, y as UiText, z as SFX_PRESETS } from "./register-BTomIiYG.js";
|
|
3
3
|
import { t as IncantoError } from "./errors-BpWbnbb_.js";
|
|
4
4
|
import { t as Rng } from "./rng-DP-SR7eg.js";
|
|
5
5
|
import { n as jsonEquals, r as jsonKind, t as jsonClone } from "./json-BLk7H2Qa.js";
|
|
6
6
|
import { a as getNodeSignals, c as mergeStaticSignals, i as getNodeSchema, l as registerNode, n as clearRegistry, o as getNodeType, r as createNode, u as registeredTypes } from "./registry-C7u42TID.js";
|
|
7
|
-
import { a as nodeRefWarnings, i as describeRefProblem, n as startRecording, o as resolveRefInJson, r as auditScene, t as replay } from "./replay-
|
|
8
|
-
import { n as logText, r as parseDrive, t as logReport } from "./log-report-
|
|
7
|
+
import { a as nodeRefWarnings, i as describeRefProblem, n as startRecording, o as resolveRefInJson, r as auditScene, t as replay } from "./replay-DYNUL4BU.js";
|
|
8
|
+
import { n as logText, r as parseDrive, t as logReport } from "./log-report-CPFm4OXf.js";
|
|
9
9
|
import { t as createNoise2D } from "./noise-CGUMx44x.js";
|
|
10
10
|
import { a as PARTICLE_PRESETS, i as ParticleSim, n as resolveFrames, o as PARTICLE_PRESET_NAMES, s as applyParticlePreset, t as resolveAnimation } from "./sprite-animation-D_p28jwU.js";
|
|
11
|
-
import { a as findPath, i as preloadUrls, n as newUid, o as gridFromRows, r as assetUrls, t as VERSION } from "./src-
|
|
12
|
-
import { i as resolveRendering, n as attachTouchControls, r as joystickVector, t as TouchControls } from "./touch-
|
|
13
|
-
import { t as duplicateNode } from "./duplicate-
|
|
14
|
-
export { AudioBuses, AudioPlayer, BASE_LOCALE, Behavior, CONST_REF_KEY, Engine, HudLayer, IncantoError, InputMap, Localization, LogManager, MusicManager, Node, ORDER_GROUP_BASE, PARTICLE_PRESETS, PARTICLE_PRESET_NAMES, ParticleSim, ROLLOFF_MODELS, Rng, SCENE_FORMAT, SFX_PRESETS, SFX_PRESET_NAMES, SaveSlots, Scene, SceneTree, Settings, SfxEngine, Signal, T_PREFIX, Timer, TouchControls, UiBanner, UiBar, UiButton, UiDialogue, UiImage, UiPanel, UiSelect, UiSlider, UiText, UiToggle, VERSION, WebAudioMusicBackend, applyParticlePreset, assetUrls, attachTouchControls, auditScene, behaviorSchema, behaviorSignals, behaviorsWithoutSave, captureBehaviors, clearBehaviors, clearRegistry, computeViewport, createNode, createNoise2D, createSaveStore, crossfadeGains, describeRefProblem, duplicateNode, effectiveOrder, fadeGain, findPath, getBehavior, getNodeSchema, getNodeSignals, getNodeType, gridFromRows, isAudioContextAvailable, isConstRef, joystickVector, jsonClone, jsonEquals, jsonKind, loadScene, logReport, logText, mergeStaticSignals, newUid, nodeRefWarnings, parseDrive, parseNodePath, preloadUrls, qualityEnvironment, readDeviceHints, registerBehavior, registerCoreNodes, registerNode, registeredBehaviors, registeredTypes, replay, resolveAnimation, resolveConstants, resolveFrames, resolveOrderGroups, resolveRefInJson, resolveRendering, resolveViewport, restoreBehaviors, savesWithoutUid, serializeNode, spatialGain, spatialPan, startRecording, suggestLocale, suggestQuality, synthSfx, translationKey };
|
|
11
|
+
import { a as findPath, i as preloadUrls, n as newUid, o as gridFromRows, r as assetUrls, t as VERSION } from "./src-C9xyZW7M.js";
|
|
12
|
+
import { i as resolveRendering, n as attachTouchControls, r as joystickVector, t as TouchControls } from "./touch-BnMyy9tr.js";
|
|
13
|
+
import { t as duplicateNode } from "./duplicate-MNLMAcbz.js";
|
|
14
|
+
export { AudioBuses, AudioPlayer, BASE_LOCALE, Behavior, CONST_REF_KEY, Engine, HudLayer, IncantoError, InputMap, Localization, LogManager, MusicManager, Node, ORDER_GROUP_BASE, PARTICLE_PRESETS, PARTICLE_PRESET_NAMES, ParticleSim, ROLLOFF_MODELS, Rng, SCENE_FORMAT, SFX_PRESETS, SFX_PRESET_NAMES, SaveSlots, Scene, SceneTree, Settings, SfxEngine, Signal, T_PREFIX, Timer, TouchControls, UiBanner, UiBar, UiButton, UiDialogue, UiFrameCapSelect, UiImage, UiLanguageSelect, UiMuteToggle, UiPanel, UiQualitySelect, UiRenderScaleSelect, UiSelect, UiSlider, UiText, UiToggle, UiVolumeSlider, VERSION, WebAudioMusicBackend, applyParticlePreset, assetUrls, attachTouchControls, auditScene, behaviorSchema, behaviorSignals, behaviorsWithoutSave, captureBehaviors, clearBehaviors, clearRegistry, computeViewport, createNode, createNoise2D, createSaveStore, crossfadeGains, describeRefProblem, duplicateNode, effectiveOrder, fadeGain, findPath, getBehavior, getNodeSchema, getNodeSignals, getNodeType, gridFromRows, isAudioContextAvailable, isConstRef, joystickVector, jsonClone, jsonEquals, jsonKind, loadScene, logReport, logText, mergeStaticSignals, newUid, nodeRefWarnings, parseDrive, parseNodePath, preloadUrls, qualityEnvironment, readDeviceHints, registerBehavior, registerCoreNodes, registerNode, registeredBehaviors, registeredTypes, replay, resolveAnimation, resolveConstants, resolveFrames, resolveOrderGroups, resolveRefInJson, resolveRendering, resolveViewport, restoreBehaviors, savesWithoutUid, serializeNode, spatialGain, spatialPan, startRecording, suggestLocale, suggestQuality, synthSfx, translationKey };
|
|
@@ -221,12 +221,9 @@ var InputMap = class {
|
|
|
221
221
|
};
|
|
222
222
|
return;
|
|
223
223
|
}
|
|
224
|
-
const el = target;
|
|
225
|
-
const scaleX = typeof el.width === "number" && el.width > 0 ? el.width / rect.width : 1;
|
|
226
|
-
const scaleY = typeof el.height === "number" && el.height > 0 ? el.height / rect.height : 1;
|
|
227
224
|
this.pointerPos = {
|
|
228
|
-
x:
|
|
229
|
-
y:
|
|
225
|
+
x: clientX - rect.left,
|
|
226
|
+
y: clientY - rect.top
|
|
230
227
|
};
|
|
231
228
|
}
|
|
232
229
|
pointerPos = null;
|
|
@@ -418,36 +415,69 @@ var InputMap = class {
|
|
|
418
415
|
};
|
|
419
416
|
return disconnect;
|
|
420
417
|
}
|
|
418
|
+
/**
|
|
419
|
+
* Pointer input from a mouse, a FINGER or a pen — one code path.
|
|
420
|
+
*
|
|
421
|
+
* This used to bind `mousedown`/`mousemove`/`mouseup`, which on a phone only
|
|
422
|
+
* arrive as COMPATIBILITY events: delayed until the browser has decided the
|
|
423
|
+
* touch is not a scroll, never fired for drags or multi-touch, and suppressed
|
|
424
|
+
* outright once the surface claims its gestures with `touch-action: none`.
|
|
425
|
+
* So every genre the comment below lists — match-3, tower defense, card,
|
|
426
|
+
* point-and-click, RTS — was mouse-only on the device most of them are played
|
|
427
|
+
* on. Pointer events cover all three input kinds and fire immediately.
|
|
428
|
+
*
|
|
429
|
+
* Only the PRIMARY pointer drives it: a second finger (the one on the virtual
|
|
430
|
+
* stick) must not also swing the camera.
|
|
431
|
+
*/
|
|
421
432
|
attachPointer(target, opts) {
|
|
422
433
|
let buttonsHeld = 0;
|
|
434
|
+
/** The pointer that pressed on THIS target; others are somebody else's. */
|
|
435
|
+
let activeId = null;
|
|
423
436
|
const onDown = (e) => {
|
|
437
|
+
if (!e.isPrimary) return;
|
|
438
|
+
activeId = e.pointerId;
|
|
424
439
|
buttonsHeld++;
|
|
425
440
|
this.setPointerPosition(e.clientX, e.clientY, target);
|
|
426
441
|
this.handleMouseButton(e.button, true);
|
|
427
442
|
if (opts?.lockOnClick && document.pointerLockElement !== target) target.requestPointerLock?.();
|
|
428
443
|
};
|
|
429
444
|
const onUp = (e) => {
|
|
445
|
+
if (activeId !== null && e.pointerId !== activeId) return;
|
|
446
|
+
activeId = null;
|
|
430
447
|
buttonsHeld = Math.max(0, buttonsHeld - 1);
|
|
431
448
|
this.handleMouseButton(e.button, false);
|
|
432
449
|
};
|
|
433
450
|
const onMove = (e) => {
|
|
451
|
+
if (activeId !== null && e.pointerId !== activeId) return;
|
|
434
452
|
this.setPointerPosition(e.clientX, e.clientY, target);
|
|
435
|
-
if (document.pointerLockElement === target || buttonsHeld > 0)
|
|
453
|
+
if (document.pointerLockElement === target || buttonsHeld > 0) {
|
|
454
|
+
const dx = e.movementX || this.pointerDelta().x;
|
|
455
|
+
const dy = e.movementY || this.pointerDelta().y;
|
|
456
|
+
this.handlePointerMove(dx, dy);
|
|
457
|
+
}
|
|
458
|
+
};
|
|
459
|
+
const onCancel = (e) => {
|
|
460
|
+
if (activeId !== null && e.pointerId !== activeId) return;
|
|
461
|
+
activeId = null;
|
|
462
|
+
buttonsHeld = 0;
|
|
463
|
+
this.handleMouseButton(0, false);
|
|
436
464
|
};
|
|
437
465
|
const onWheel = (e) => {
|
|
438
466
|
e.preventDefault();
|
|
439
467
|
this.handleWheel(e.deltaY);
|
|
440
468
|
};
|
|
441
469
|
const onContext = (e) => e.preventDefault();
|
|
442
|
-
target.addEventListener("
|
|
443
|
-
window.addEventListener("
|
|
444
|
-
window.addEventListener("
|
|
470
|
+
target.addEventListener("pointerdown", onDown);
|
|
471
|
+
window.addEventListener("pointerup", onUp);
|
|
472
|
+
window.addEventListener("pointermove", onMove);
|
|
473
|
+
window.addEventListener("pointercancel", onCancel);
|
|
445
474
|
target.addEventListener("wheel", onWheel, { passive: false });
|
|
446
475
|
target.addEventListener("contextmenu", onContext);
|
|
447
476
|
const detach = () => {
|
|
448
|
-
target.removeEventListener("
|
|
449
|
-
window.removeEventListener("
|
|
450
|
-
window.removeEventListener("
|
|
477
|
+
target.removeEventListener("pointerdown", onDown);
|
|
478
|
+
window.removeEventListener("pointerup", onUp);
|
|
479
|
+
window.removeEventListener("pointermove", onMove);
|
|
480
|
+
window.removeEventListener("pointercancel", onCancel);
|
|
451
481
|
target.removeEventListener("wheel", onWheel);
|
|
452
482
|
target.removeEventListener("contextmenu", onContext);
|
|
453
483
|
};
|
|
@@ -604,6 +634,12 @@ var InputMap = class {
|
|
|
604
634
|
* never looked at `input` at all. A typo there ("keys": "KeyW" instead of
|
|
605
635
|
* ["KeyW"]) passed the check and threw in the browser at boot.
|
|
606
636
|
*/
|
|
637
|
+
const DIRECTIONS = [
|
|
638
|
+
"up",
|
|
639
|
+
"down",
|
|
640
|
+
"left",
|
|
641
|
+
"right"
|
|
642
|
+
];
|
|
607
643
|
function parseInputDecls(decls) {
|
|
608
644
|
const out = /* @__PURE__ */ new Map();
|
|
609
645
|
for (const [name, raw] of Object.entries(decls)) {
|
|
@@ -619,12 +655,12 @@ function parseInputDecls(decls) {
|
|
|
619
655
|
});
|
|
620
656
|
} else if (decl.type === "vector2") {
|
|
621
657
|
const dirs = decl.keys;
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
"
|
|
626
|
-
"right"
|
|
627
|
-
|
|
658
|
+
const missing = DIRECTIONS.filter((dir) => !Array.isArray(dirs?.[dir]));
|
|
659
|
+
if (missing.length > 0) {
|
|
660
|
+
const atTopLevel = DIRECTIONS.filter((dir) => Array.isArray(decl[dir]));
|
|
661
|
+
const where = atTopLevel.length > 0 ? ` — ${atTopLevel.join(", ")} ${atTopLevel.length === 1 ? "is" : "are"} at the top level, not under "keys"` : "";
|
|
662
|
+
throw new IncantoError("BAD_FORMAT", `Input action '${name}': a vector2 needs ${missing.join(", ")} as arrays of KeyboardEvent.code strings under "keys"${where}. Like this: { "type": "vector2", "keys": { "up": ["KeyW"], "down": ["KeyS"], "left": ["KeyA"], "right": ["KeyD"] } }`);
|
|
663
|
+
}
|
|
628
664
|
if (decl.touch !== void 0 && decl.touch !== "joystick") throw new IncantoError("BAD_FORMAT", `Input action '${name}': vector2 "touch" must be 'joystick', got ${JSON.stringify(decl.touch)}.`);
|
|
629
665
|
const d = dirs;
|
|
630
666
|
out.set(name, {
|
|
Binary file
|
package/dist/net.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Dt as Node, d as PropSchema } from "./behavior-
|
|
2
|
-
import { a as NetworkManagerOptions, c as LocalGameServer, d as ServerClass, f as createLocalGameServer, g as Unsubscribe, h as NetworkTransport, i as NetworkManager, l as LocalGameServerOptions, m as LoopbackTransport, n as SplitScreenPlayer, o as applySyncPatch, p as LoopbackHub, r as createSplitScreen, s as CollectionOptions, t as SplitScreenOptions, u as LocalGameServerTransport } from "./split-screen-
|
|
1
|
+
import { Dt as Node, d as PropSchema } from "./behavior-Do0Da56m.js";
|
|
2
|
+
import { a as NetworkManagerOptions, c as LocalGameServer, d as ServerClass, f as createLocalGameServer, g as Unsubscribe, h as NetworkTransport, i as NetworkManager, l as LocalGameServerOptions, m as LoopbackTransport, n as SplitScreenPlayer, o as applySyncPatch, p as LoopbackHub, r as createSplitScreen, s as CollectionOptions, t as SplitScreenOptions, u as LocalGameServerTransport } from "./split-screen-DNmcX1Pz.js";
|
|
3
3
|
|
|
4
4
|
//#region src/net/agent8.d.ts
|
|
5
5
|
/**
|
package/dist/net.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { n as createAgent8Server } from "./agent8-CvsfVskX.js";
|
|
2
|
-
import { a as applySyncPatch, c as createLocalGameServer, i as NetworkManager, l as LoopbackHub, n as registerNodesNet, o as LocalGameServer, r as NetworkSpawner, s as LocalGameServerTransport, t as createSplitScreen, u as LoopbackTransport } from "./split-screen-
|
|
2
|
+
import { a as applySyncPatch, c as createLocalGameServer, i as NetworkManager, l as LoopbackHub, n as registerNodesNet, o as LocalGameServer, r as NetworkSpawner, s as LocalGameServerTransport, t as createSplitScreen, u as LoopbackTransport } from "./split-screen-CaF9hO7g.js";
|
|
3
3
|
export { LocalGameServer, LocalGameServerTransport, LoopbackHub, LoopbackTransport, NetworkManager, NetworkSpawner, applySyncPatch, createAgent8Server, createLocalGameServer, createSplitScreen, registerNodesNet };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Dt as Node, ct as Listener, d as PropSchema } from "./behavior-
|
|
1
|
+
import { Dt as Node, ct as Listener, d as PropSchema } from "./behavior-Do0Da56m.js";
|
|
2
2
|
|
|
3
3
|
//#region src/core/nodes/audio-player.d.ts
|
|
4
4
|
/**
|
|
@@ -74,6 +74,11 @@ declare class AudioPlayer extends Node {
|
|
|
74
74
|
static validateJson(node: Node): void;
|
|
75
75
|
/** A play() was blocked by the browser's autoplay policy. */
|
|
76
76
|
pendingGesture: boolean;
|
|
77
|
+
/**
|
|
78
|
+
* Why this player is silent, when the reason is the FILE rather than the
|
|
79
|
+
* autoplay gate. Read by `game.assetErrors()`.
|
|
80
|
+
*/
|
|
81
|
+
loadError: string | null;
|
|
77
82
|
private element;
|
|
78
83
|
private _playing;
|
|
79
84
|
private autoplayed;
|
|
@@ -86,6 +91,14 @@ declare class AudioPlayer extends Node {
|
|
|
86
91
|
* unless `spatial` is on. Headless / 2D scenes never call this.
|
|
87
92
|
*/
|
|
88
93
|
_setSpatialPose(pose: SpatialPose): void;
|
|
94
|
+
/**
|
|
95
|
+
* Write this sound into the engine's audio record.
|
|
96
|
+
*
|
|
97
|
+
* The CALL happens even where the backend does not (headless, the verify VM),
|
|
98
|
+
* which is exactly why the record is worth keeping: it answers "did the coin
|
|
99
|
+
* sound fire when the coin was collected" in places no sound can be heard.
|
|
100
|
+
*/
|
|
101
|
+
private note;
|
|
89
102
|
/** Final gain = engine buses × this volume (1 when not in a tree). */
|
|
90
103
|
private gain;
|
|
91
104
|
/** Distance gain for the src/element path (1 when not spatial / no pose). */
|
|
@@ -101,6 +114,16 @@ declare class AudioPlayer extends Node {
|
|
|
101
114
|
* a suspended context is resumed by the same unlock listener as `src` players.
|
|
102
115
|
*/
|
|
103
116
|
private playPreset;
|
|
117
|
+
/**
|
|
118
|
+
* A destroyed node goes SILENT.
|
|
119
|
+
*
|
|
120
|
+
* Nothing used to stop a sound on teardown, so a level's looping background
|
|
121
|
+
* clip kept playing over the level after it — the node was freed, so nobody
|
|
122
|
+
* had a handle to stop it with either. Being MOVED is deliberately not this:
|
|
123
|
+
* reparenting a node is not destroying it, and a sound that survives the move
|
|
124
|
+
* is what a scene graph should do.
|
|
125
|
+
*/
|
|
126
|
+
override free(): void;
|
|
104
127
|
stop(): void;
|
|
105
128
|
/** Replay a gesture-blocked play (wired to the first user gesture). */
|
|
106
129
|
retryPending(): void;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
|
|
2
|
-
import { C as diagnose } from "./loader-
|
|
2
|
+
import { C as diagnose } from "./loader-BTkHYrQn.js";
|
|
3
3
|
import { t as IncantoError } from "./errors-BpWbnbb_.js";
|
|
4
|
-
import { _ as RigidBody2D, b as validateCollider2D, g as PhysicsBody2D, h as CharacterBody2D, m as Area2D, p as Joint2D, y as Node2D } from "./register-
|
|
4
|
+
import { _ as RigidBody2D, b as validateCollider2D, g as PhysicsBody2D, h as CharacterBody2D, m as Area2D, p as Joint2D, y as Node2D } from "./register-DROK2l7J.js";
|
|
5
5
|
import { n as registerDebugSource } from "./debug-draw-BM3DsvtT.js";
|
|
6
6
|
//#region src/2d/physics/physics-2d.ts
|
|
7
7
|
var physics_2d_exports = /* @__PURE__ */ __exportAll({
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
|
|
2
|
-
import { C as diagnose } from "./loader-
|
|
2
|
+
import { C as diagnose } from "./loader-BTkHYrQn.js";
|
|
3
3
|
import { t as IncantoError } from "./errors-BpWbnbb_.js";
|
|
4
|
-
import { B as validateCollider3D, F as CharacterBody3D, I as PhysicsBody3D, L as RigidBody3D, P as Area3D, z as Node3D } from "./gameplay-
|
|
4
|
+
import { B as validateCollider3D, F as CharacterBody3D, I as PhysicsBody3D, L as RigidBody3D, P as Area3D, z as Node3D } from "./gameplay-CRYw_Q-T.js";
|
|
5
5
|
import { n as registerDebugSource } from "./debug-draw-BM3DsvtT.js";
|
|
6
|
-
import { A as Terrain3D, F as InstancedMesh3D, L as buildMeshGeometry, P as Joint3D } from "./environment-presets-
|
|
6
|
+
import { A as Terrain3D, F as InstancedMesh3D, L as buildMeshGeometry, P as Joint3D } from "./environment-presets-SkGanr2s.js";
|
|
7
7
|
import { Euler, Matrix4, Quaternion, Vector3 } from "three";
|
|
8
8
|
//#region src/3d/physics/collider-lines.ts
|
|
9
9
|
/**
|
package/dist/react.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { P as Scene, b as Engine, n as BehaviorCtor } from "./behavior-
|
|
1
|
+
import { P as Scene, b as Engine, n as BehaviorCtor } from "./behavior-Do0Da56m.js";
|
|
2
2
|
import { c as JsonValue } from "./schema-CFeioQRE.js";
|
|
3
3
|
import { CSSProperties, ReactNode } from "react";
|
|
4
4
|
|
package/dist/react.js
CHANGED
|
@@ -156,7 +156,7 @@ function IncantoCanvas(props) {
|
|
|
156
156
|
pointer: latest.pointer,
|
|
157
157
|
...keyboard !== void 0 ? { keyboard } : {}
|
|
158
158
|
};
|
|
159
|
-
const next = await (_gameFactory ?? (mode === "3d" ? async (o) => (await import("./create-game-
|
|
159
|
+
const next = await (_gameFactory ?? (mode === "3d" ? async (o) => (await import("./create-game-CDJ1lVqK.js").then((n) => n.n)).createGame3D(o) : async (o) => (await import("./create-game-9D87XaiX.js").then((n) => n.n)).createGame2D(o)))(opts);
|
|
160
160
|
if (disposed) {
|
|
161
161
|
next.dispose();
|
|
162
162
|
return;
|