@sadhaka/loom-engine 0.10.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/LICENSE +21 -0
- package/README.md +344 -0
- package/dist/animation/animation-clip.d.ts +12 -0
- package/dist/animation/animation-clip.d.ts.map +1 -0
- package/dist/animation/animation-clip.js +85 -0
- package/dist/animation/animation-clip.js.map +1 -0
- package/dist/animation/animation-state-pool.d.ts +25 -0
- package/dist/animation/animation-state-pool.d.ts.map +1 -0
- package/dist/animation/animation-state-pool.js +113 -0
- package/dist/animation/animation-state-pool.js.map +1 -0
- package/dist/asset/sprite-sheet-loader.d.ts +41 -0
- package/dist/asset/sprite-sheet-loader.d.ts.map +1 -0
- package/dist/asset/sprite-sheet-loader.js +313 -0
- package/dist/asset/sprite-sheet-loader.js.map +1 -0
- package/dist/audio/audio-bus.d.ts +43 -0
- package/dist/audio/audio-bus.d.ts.map +1 -0
- package/dist/audio/audio-bus.js +258 -0
- package/dist/audio/audio-bus.js.map +1 -0
- package/dist/combat/mob-catalog.d.ts +29 -0
- package/dist/combat/mob-catalog.d.ts.map +1 -0
- package/dist/combat/mob-catalog.js +104 -0
- package/dist/combat/mob-catalog.js.map +1 -0
- package/dist/components/health.d.ts +28 -0
- package/dist/components/health.d.ts.map +1 -0
- package/dist/components/health.js +150 -0
- package/dist/components/health.js.map +1 -0
- package/dist/components/interactable.d.ts +30 -0
- package/dist/components/interactable.d.ts.map +1 -0
- package/dist/components/interactable.js +94 -0
- package/dist/components/interactable.js.map +1 -0
- package/dist/components/particle-emitter.d.ts +62 -0
- package/dist/components/particle-emitter.d.ts.map +1 -0
- package/dist/components/particle-emitter.js +193 -0
- package/dist/components/particle-emitter.js.map +1 -0
- package/dist/components/pursue.d.ts +23 -0
- package/dist/components/pursue.d.ts.map +1 -0
- package/dist/components/pursue.js +96 -0
- package/dist/components/pursue.js.map +1 -0
- package/dist/components/ranged-attack.d.ts +44 -0
- package/dist/components/ranged-attack.d.ts.map +1 -0
- package/dist/components/ranged-attack.js +120 -0
- package/dist/components/ranged-attack.js.map +1 -0
- package/dist/components/sprite.d.ts +27 -0
- package/dist/components/sprite.d.ts.map +1 -0
- package/dist/components/sprite.js +122 -0
- package/dist/components/sprite.js.map +1 -0
- package/dist/components/transform.d.ts +30 -0
- package/dist/components/transform.d.ts.map +1 -0
- package/dist/components/transform.js +150 -0
- package/dist/components/transform.js.map +1 -0
- package/dist/director/director-bridge.d.ts +22 -0
- package/dist/director/director-bridge.d.ts.map +1 -0
- package/dist/director/director-bridge.js +23 -0
- package/dist/director/director-bridge.js.map +1 -0
- package/dist/director/director-encounter-system.d.ts +21 -0
- package/dist/director/director-encounter-system.d.ts.map +1 -0
- package/dist/director/director-encounter-system.js +128 -0
- package/dist/director/director-encounter-system.js.map +1 -0
- package/dist/director/director-system.d.ts +19 -0
- package/dist/director/director-system.d.ts.map +1 -0
- package/dist/director/director-system.js +179 -0
- package/dist/director/director-system.js.map +1 -0
- package/dist/director/event-envelope.d.ts +144 -0
- package/dist/director/event-envelope.d.ts.map +1 -0
- package/dist/director/event-envelope.js +108 -0
- package/dist/director/event-envelope.js.map +1 -0
- package/dist/director/knot-context-resource.d.ts +25 -0
- package/dist/director/knot-context-resource.d.ts.map +1 -0
- package/dist/director/knot-context-resource.js +152 -0
- package/dist/director/knot-context-resource.js.map +1 -0
- package/dist/director/mock-director-bridge.d.ts +18 -0
- package/dist/director/mock-director-bridge.d.ts.map +1 -0
- package/dist/director/mock-director-bridge.js +75 -0
- package/dist/director/mock-director-bridge.js.map +1 -0
- package/dist/director/snapshot-recovery.d.ts +37 -0
- package/dist/director/snapshot-recovery.d.ts.map +1 -0
- package/dist/director/snapshot-recovery.js +180 -0
- package/dist/director/snapshot-recovery.js.map +1 -0
- package/dist/director/sse-director-bridge.d.ts +42 -0
- package/dist/director/sse-director-bridge.d.ts.map +1 -0
- package/dist/director/sse-director-bridge.js +280 -0
- package/dist/director/sse-director-bridge.js.map +1 -0
- package/dist/engine.d.ts +25 -0
- package/dist/engine.d.ts.map +1 -0
- package/dist/engine.js +166 -0
- package/dist/engine.js.map +1 -0
- package/dist/entity.d.ts +17 -0
- package/dist/entity.d.ts.map +1 -0
- package/dist/entity.js +77 -0
- package/dist/entity.js.map +1 -0
- package/dist/index.d.ts +85 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +64 -0
- package/dist/index.js.map +1 -0
- package/dist/input/input-manager.d.ts +91 -0
- package/dist/input/input-manager.d.ts.map +1 -0
- package/dist/input/input-manager.js +349 -0
- package/dist/input/input-manager.js.map +1 -0
- package/dist/input/tap-to-walk.d.ts +27 -0
- package/dist/input/tap-to-walk.d.ts.map +1 -0
- package/dist/input/tap-to-walk.js +118 -0
- package/dist/input/tap-to-walk.js.map +1 -0
- package/dist/input/virtual-dpad.d.ts +34 -0
- package/dist/input/virtual-dpad.d.ts.map +1 -0
- package/dist/input/virtual-dpad.js +267 -0
- package/dist/input/virtual-dpad.js.map +1 -0
- package/dist/renderer/camera.d.ts +26 -0
- package/dist/renderer/camera.d.ts.map +1 -0
- package/dist/renderer/camera.js +39 -0
- package/dist/renderer/camera.js.map +1 -0
- package/dist/renderer/canvas2d-device.d.ts +26 -0
- package/dist/renderer/canvas2d-device.d.ts.map +1 -0
- package/dist/renderer/canvas2d-device.js +252 -0
- package/dist/renderer/canvas2d-device.js.map +1 -0
- package/dist/renderer/graphics-device.d.ts +36 -0
- package/dist/renderer/graphics-device.d.ts.map +1 -0
- package/dist/renderer/graphics-device.js +12 -0
- package/dist/renderer/graphics-device.js.map +1 -0
- package/dist/renderer/iso-projection.d.ts +11 -0
- package/dist/renderer/iso-projection.d.ts.map +1 -0
- package/dist/renderer/iso-projection.js +59 -0
- package/dist/renderer/iso-projection.js.map +1 -0
- package/dist/resources.d.ts +28 -0
- package/dist/resources.d.ts.map +1 -0
- package/dist/resources.js +53 -0
- package/dist/resources.js.map +1 -0
- package/dist/system.d.ts +14 -0
- package/dist/system.d.ts.map +1 -0
- package/dist/system.js +25 -0
- package/dist/system.js.map +1 -0
- package/dist/systems/animation-system.d.ts +8 -0
- package/dist/systems/animation-system.d.ts.map +1 -0
- package/dist/systems/animation-system.js +77 -0
- package/dist/systems/animation-system.js.map +1 -0
- package/dist/systems/attack-system.d.ts +17 -0
- package/dist/systems/attack-system.d.ts.map +1 -0
- package/dist/systems/attack-system.js +94 -0
- package/dist/systems/attack-system.js.map +1 -0
- package/dist/systems/damage-system.d.ts +18 -0
- package/dist/systems/damage-system.d.ts.map +1 -0
- package/dist/systems/damage-system.js +77 -0
- package/dist/systems/damage-system.js.map +1 -0
- package/dist/systems/input-system.d.ts +7 -0
- package/dist/systems/input-system.d.ts.map +1 -0
- package/dist/systems/input-system.js +27 -0
- package/dist/systems/input-system.js.map +1 -0
- package/dist/systems/interaction-system.d.ts +23 -0
- package/dist/systems/interaction-system.d.ts.map +1 -0
- package/dist/systems/interaction-system.js +120 -0
- package/dist/systems/interaction-system.js.map +1 -0
- package/dist/systems/particle-emitter-system.d.ts +8 -0
- package/dist/systems/particle-emitter-system.d.ts.map +1 -0
- package/dist/systems/particle-emitter-system.js +161 -0
- package/dist/systems/particle-emitter-system.js.map +1 -0
- package/dist/systems/particle-render-system.d.ts +7 -0
- package/dist/systems/particle-render-system.d.ts.map +1 -0
- package/dist/systems/particle-render-system.js +53 -0
- package/dist/systems/particle-render-system.js.map +1 -0
- package/dist/systems/particle-simulation-system.d.ts +8 -0
- package/dist/systems/particle-simulation-system.d.ts.map +1 -0
- package/dist/systems/particle-simulation-system.js +45 -0
- package/dist/systems/particle-simulation-system.js.map +1 -0
- package/dist/systems/projectile-render-system.d.ts +7 -0
- package/dist/systems/projectile-render-system.d.ts.map +1 -0
- package/dist/systems/projectile-render-system.js +35 -0
- package/dist/systems/projectile-render-system.js.map +1 -0
- package/dist/systems/projectile-system.d.ts +7 -0
- package/dist/systems/projectile-system.d.ts.map +1 -0
- package/dist/systems/projectile-system.js +114 -0
- package/dist/systems/projectile-system.js.map +1 -0
- package/dist/systems/pursue-system.d.ts +7 -0
- package/dist/systems/pursue-system.d.ts.map +1 -0
- package/dist/systems/pursue-system.js +83 -0
- package/dist/systems/pursue-system.js.map +1 -0
- package/dist/systems/ranged-attack-system.d.ts +7 -0
- package/dist/systems/ranged-attack-system.d.ts.map +1 -0
- package/dist/systems/ranged-attack-system.js +98 -0
- package/dist/systems/ranged-attack-system.js.map +1 -0
- package/dist/systems/sprite-render-system.d.ts +9 -0
- package/dist/systems/sprite-render-system.d.ts.map +1 -0
- package/dist/systems/sprite-render-system.js +108 -0
- package/dist/systems/sprite-render-system.js.map +1 -0
- package/dist/systems/veil-budget-system.d.ts +7 -0
- package/dist/systems/veil-budget-system.d.ts.map +1 -0
- package/dist/systems/veil-budget-system.js +37 -0
- package/dist/systems/veil-budget-system.js.map +1 -0
- package/dist/util/color.d.ts +19 -0
- package/dist/util/color.d.ts.map +1 -0
- package/dist/util/color.js +45 -0
- package/dist/util/color.js.map +1 -0
- package/dist/util/math.d.ts +26 -0
- package/dist/util/math.d.ts.map +1 -0
- package/dist/util/math.js +47 -0
- package/dist/util/math.js.map +1 -0
- package/dist/util/typed-arrays.d.ts +7 -0
- package/dist/util/typed-arrays.d.ts.map +1 -0
- package/dist/util/typed-arrays.js +42 -0
- package/dist/util/typed-arrays.js.map +1 -0
- package/dist/vfx/particle-pool.d.ts +61 -0
- package/dist/vfx/particle-pool.d.ts.map +1 -0
- package/dist/vfx/particle-pool.js +204 -0
- package/dist/vfx/particle-pool.js.map +1 -0
- package/dist/vfx/projectile-pool.d.ts +56 -0
- package/dist/vfx/projectile-pool.d.ts.map +1 -0
- package/dist/vfx/projectile-pool.js +157 -0
- package/dist/vfx/projectile-pool.js.map +1 -0
- package/dist/world.d.ts +23 -0
- package/dist/world.d.ts.map +1 -0
- package/dist/world.js +101 -0
- package/dist/world.js.map +1 -0
- package/dist/zone/zone-catalog.d.ts +17 -0
- package/dist/zone/zone-catalog.d.ts.map +1 -0
- package/dist/zone/zone-catalog.js +116 -0
- package/dist/zone/zone-catalog.js.map +1 -0
- package/dist/zone/zone-state.d.ts +18 -0
- package/dist/zone/zone-state.d.ts.map +1 -0
- package/dist/zone/zone-state.js +52 -0
- package/dist/zone/zone-state.js.map +1 -0
- package/package.json +56 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sse-director-bridge.js","sourceRoot":"","sources":["../../src/director/sse-director-bridge.ts"],"names":[],"mappings":"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"}
|
package/dist/engine.d.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { IGraphicsDevice } from './renderer/graphics-device.js';
|
|
2
|
+
import { type CameraView } from './renderer/camera.js';
|
|
3
|
+
import { World } from './world.js';
|
|
4
|
+
import { AudioBus } from './audio/audio-bus.js';
|
|
5
|
+
import { InputManager } from './input/input-manager.js';
|
|
6
|
+
export interface EngineOptions {
|
|
7
|
+
canvas: HTMLCanvasElement;
|
|
8
|
+
inputWindow?: Window | null;
|
|
9
|
+
skipAudio?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare class Engine {
|
|
12
|
+
readonly device: IGraphicsDevice;
|
|
13
|
+
readonly world: World;
|
|
14
|
+
readonly camera: CameraView;
|
|
15
|
+
readonly input: InputManager;
|
|
16
|
+
readonly audio: AudioBus | null;
|
|
17
|
+
private time;
|
|
18
|
+
private prevTimeMs;
|
|
19
|
+
private constructor();
|
|
20
|
+
static create(opts: EngineOptions): Engine;
|
|
21
|
+
tick(nowMs: number): void;
|
|
22
|
+
resetTime(): void;
|
|
23
|
+
dispose(): void;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,KAAK,EAA+B,MAAM,YAAY,CAAC;AA2BhE,OAAO,EAAE,QAAQ,EAAsB,MAAM,sBAAsB,CAAC;AACpE,OAAO,EACL,YAAY,EAGb,MAAM,0BAA0B,CAAC;AAsBlC,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,iBAAiB,CAAC;IAI1B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAI5B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAOD,qBAAa,MAAM;IACjB,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC;IAEhC,OAAO,CAAC,IAAI,CAAe;IAC3B,OAAO,CAAC,UAAU,CAAa;IAE/B,OAAO;IAmBP,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM;IAwE1C,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAmBzB,SAAS,IAAI,IAAI;IAOjB,OAAO,IAAI,IAAI;CAKhB"}
|
package/dist/engine.js
ADDED
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
// Engine - the top-level facade for the Loom Engine.
|
|
2
|
+
//
|
|
3
|
+
// One Engine instance per running game. Owns the device, world,
|
|
4
|
+
// camera, time. Consumers call Engine.create({canvas}) to spin up,
|
|
5
|
+
// engine.tick(now) once per RAF, and engine.dispose() on teardown.
|
|
6
|
+
//
|
|
7
|
+
// The Engine wires the default resource set:
|
|
8
|
+
// - 'time': TimeResource
|
|
9
|
+
// - 'camera': CameraView
|
|
10
|
+
// - 'device': IGraphicsDevice
|
|
11
|
+
// And the default pools:
|
|
12
|
+
// - 'transform': TransformPool
|
|
13
|
+
// - 'sprite': SpritePool
|
|
14
|
+
// Plus the default render system: SpriteRenderSystem in
|
|
15
|
+
// SYSTEM_PHASE_RENDER.
|
|
16
|
+
//
|
|
17
|
+
// Higher-level layers (Director-bridge in Phase 6, ARPG in Phase 8)
|
|
18
|
+
// register their own systems and pools on top.
|
|
19
|
+
import { Canvas2DDevice } from './renderer/canvas2d-device.js';
|
|
20
|
+
import { createCamera } from './renderer/camera.js';
|
|
21
|
+
import { World, POOL_TRANSFORM, POOL_SPRITE } from './world.js';
|
|
22
|
+
import { TransformPool } from './components/transform.js';
|
|
23
|
+
import { SpritePool } from './components/sprite.js';
|
|
24
|
+
import { AnimationStatePool } from './animation/animation-state-pool.js';
|
|
25
|
+
import { POOL_ANIMATION } from './systems/animation-system.js';
|
|
26
|
+
import { ParticlePool } from './vfx/particle-pool.js';
|
|
27
|
+
import { ParticleEmitterPool } from './components/particle-emitter.js';
|
|
28
|
+
import { POOL_PARTICLE } from './systems/particle-simulation-system.js';
|
|
29
|
+
import { POOL_EMITTER } from './systems/particle-emitter-system.js';
|
|
30
|
+
import { HealthPool, POOL_HEALTH } from './components/health.js';
|
|
31
|
+
import { PursuePool, POOL_PURSUE } from './components/pursue.js';
|
|
32
|
+
import { DeathLog, RESOURCE_DEATH_LOG } from './systems/damage-system.js';
|
|
33
|
+
import { RangedAttackPool, POOL_RANGED } from './components/ranged-attack.js';
|
|
34
|
+
import { ProjectilePool, POOL_PROJECTILE } from './vfx/projectile-pool.js';
|
|
35
|
+
import { InteractablePool, POOL_INTERACTABLE } from './components/interactable.js';
|
|
36
|
+
import { createZoneState, RESOURCE_ZONE_STATE, } from './zone/zone-state.js';
|
|
37
|
+
import { createLastInteraction, RESOURCE_LAST_INTERACTION, } from './systems/interaction-system.js';
|
|
38
|
+
import { createVeilBudgetResource, RESOURCE_VEIL_BUDGET, } from './resources.js';
|
|
39
|
+
import { AudioBus, RESOURCE_AUDIO_BUS } from './audio/audio-bus.js';
|
|
40
|
+
import { InputManager, RESOURCE_INPUT_MANAGER, RESOURCE_INPUT, } from './input/input-manager.js';
|
|
41
|
+
import { createTapWalkTarget, RESOURCE_TAP_WALK, } from './input/tap-to-walk.js';
|
|
42
|
+
import { RESOURCE_KNOT_CONTEXT, } from './director/director-bridge.js';
|
|
43
|
+
import { KnotContextResource } from './director/knot-context-resource.js';
|
|
44
|
+
import { RESOURCE_DIRECTOR_LOG, createDirectorEventLog, } from './director/director-system.js';
|
|
45
|
+
import { RESOURCE_TIME, RESOURCE_CAMERA, RESOURCE_DEVICE, createTimeResource, } from './resources.js';
|
|
46
|
+
import { clamp } from './util/math.js';
|
|
47
|
+
// Max delta clamp. Long pauses (background tab, breakpoint) shouldn't
|
|
48
|
+
// produce one giant dt that breaks physics. 1/30s is the spec frame
|
|
49
|
+
// loop guidance.
|
|
50
|
+
const MAX_DT_SECONDS = 1 / 30;
|
|
51
|
+
export class Engine {
|
|
52
|
+
device;
|
|
53
|
+
world;
|
|
54
|
+
camera;
|
|
55
|
+
input;
|
|
56
|
+
audio;
|
|
57
|
+
time;
|
|
58
|
+
prevTimeMs = 0;
|
|
59
|
+
constructor(device, world, camera, time, input, audio) {
|
|
60
|
+
this.device = device;
|
|
61
|
+
this.world = world;
|
|
62
|
+
this.camera = camera;
|
|
63
|
+
this.time = time;
|
|
64
|
+
this.input = input;
|
|
65
|
+
this.audio = audio;
|
|
66
|
+
}
|
|
67
|
+
// Constructs an Engine + default resources + default pools +
|
|
68
|
+
// default render system. Caller registers their own systems
|
|
69
|
+
// afterward via engine.world.addSystem.
|
|
70
|
+
static create(opts) {
|
|
71
|
+
const device = new Canvas2DDevice(opts.canvas);
|
|
72
|
+
const camera = createCamera(opts.canvas.width, opts.canvas.height);
|
|
73
|
+
const world = new World();
|
|
74
|
+
const time = createTimeResource();
|
|
75
|
+
// Input manager - attached to the canvas so pointer events work.
|
|
76
|
+
// Window defaults to globalThis.window when in a DOM context.
|
|
77
|
+
const input = new InputManager();
|
|
78
|
+
if (opts.inputWindow !== null) {
|
|
79
|
+
const win = opts.inputWindow ?? (typeof window !== 'undefined' ? window : null);
|
|
80
|
+
if (win)
|
|
81
|
+
input.attach(opts.canvas, win);
|
|
82
|
+
}
|
|
83
|
+
// Audio bus - browser-only. In Node tests, opts.skipAudio = true
|
|
84
|
+
// (or AudioContext is undefined) bypasses construction.
|
|
85
|
+
let audio = null;
|
|
86
|
+
const wantAudio = opts.skipAudio !== true && typeof AudioContext !== 'undefined';
|
|
87
|
+
if (wantAudio) {
|
|
88
|
+
try {
|
|
89
|
+
audio = AudioBus.create();
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
audio = null;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
// Resources
|
|
96
|
+
world.resources.set(RESOURCE_TIME, time);
|
|
97
|
+
world.resources.set(RESOURCE_CAMERA, camera);
|
|
98
|
+
world.resources.set(RESOURCE_DEVICE, device);
|
|
99
|
+
world.resources.set(RESOURCE_VEIL_BUDGET, createVeilBudgetResource());
|
|
100
|
+
world.resources.set(RESOURCE_INPUT_MANAGER, input);
|
|
101
|
+
world.resources.set(RESOURCE_INPUT, input.snapshot());
|
|
102
|
+
world.resources.set(RESOURCE_TAP_WALK, createTapWalkTarget());
|
|
103
|
+
if (audio)
|
|
104
|
+
world.resources.set(RESOURCE_AUDIO_BUS, audio);
|
|
105
|
+
// Director defaults. RESOURCE_DIRECTOR_BRIDGE is intentionally
|
|
106
|
+
// NOT registered by Engine.create - the consumer chooses
|
|
107
|
+
// MockDirectorBridge or SSEDirectorBridge based on whether they
|
|
108
|
+
// have a backend. KnotContextResource defaults to Strknot palette;
|
|
109
|
+
// DirectorEventLog ring buffer is empty until events arrive.
|
|
110
|
+
world.resources.set(RESOURCE_KNOT_CONTEXT, new KnotContextResource());
|
|
111
|
+
world.resources.set(RESOURCE_DIRECTOR_LOG, createDirectorEventLog());
|
|
112
|
+
// Pools
|
|
113
|
+
world.registerPool(POOL_TRANSFORM, new TransformPool());
|
|
114
|
+
world.registerPool(POOL_SPRITE, new SpritePool());
|
|
115
|
+
world.registerPool(POOL_ANIMATION, new AnimationStatePool());
|
|
116
|
+
world.registerPool(POOL_PARTICLE, new ParticlePool());
|
|
117
|
+
world.registerPool(POOL_EMITTER, new ParticleEmitterPool());
|
|
118
|
+
world.registerPool(POOL_HEALTH, new HealthPool());
|
|
119
|
+
world.registerPool(POOL_PURSUE, new PursuePool());
|
|
120
|
+
world.registerPool(POOL_RANGED, new RangedAttackPool());
|
|
121
|
+
world.registerPool(POOL_PROJECTILE, new ProjectilePool());
|
|
122
|
+
world.registerPool(POOL_INTERACTABLE, new InteractablePool());
|
|
123
|
+
world.resources.set(RESOURCE_DEATH_LOG, new DeathLog());
|
|
124
|
+
world.resources.set(RESOURCE_ZONE_STATE, createZoneState());
|
|
125
|
+
world.resources.set(RESOURCE_LAST_INTERACTION, createLastInteraction());
|
|
126
|
+
// Systems are NOT pre-registered. Callers add their own systems
|
|
127
|
+
// explicitly. The Phase 5 idiomatic order is:
|
|
128
|
+
// [InputSystem, VeilBudgetSystem] in PHASE_INPUT, then game
|
|
129
|
+
// logic, then PHASE_PHYSICS for sim, then PHASE_ANIMATION,
|
|
130
|
+
// then PHASE_RENDER. Demo wires this order.
|
|
131
|
+
return new Engine(device, world, camera, time, input, audio);
|
|
132
|
+
}
|
|
133
|
+
// One frame of work. Call from requestAnimationFrame.
|
|
134
|
+
// - nowMs is performance.now() value (fractional milliseconds).
|
|
135
|
+
// - First tick has dt = 0; subsequent ticks compute dt from
|
|
136
|
+
// the previous nowMs.
|
|
137
|
+
tick(nowMs) {
|
|
138
|
+
let dt = 0;
|
|
139
|
+
if (this.prevTimeMs > 0) {
|
|
140
|
+
dt = clamp((nowMs - this.prevTimeMs) / 1000, 0, MAX_DT_SECONDS);
|
|
141
|
+
}
|
|
142
|
+
this.prevTimeMs = nowMs;
|
|
143
|
+
this.time.delta = dt;
|
|
144
|
+
this.time.elapsed += dt;
|
|
145
|
+
this.time.frame += 1;
|
|
146
|
+
this.device.beginFrame();
|
|
147
|
+
this.world.update(dt);
|
|
148
|
+
this.device.endFrame();
|
|
149
|
+
}
|
|
150
|
+
// Reset the time bookkeeping. Useful when resuming after a long
|
|
151
|
+
// pause to avoid the first tick being a no-op due to MAX_DT_SECONDS
|
|
152
|
+
// clamping to a tiny value. Hopefully rarely needed.
|
|
153
|
+
resetTime() {
|
|
154
|
+
this.prevTimeMs = 0;
|
|
155
|
+
this.time.delta = 0;
|
|
156
|
+
this.time.elapsed = 0;
|
|
157
|
+
this.time.frame = 0;
|
|
158
|
+
}
|
|
159
|
+
dispose() {
|
|
160
|
+
// Tear down listeners + audio nodes.
|
|
161
|
+
this.input.detach();
|
|
162
|
+
if (this.audio)
|
|
163
|
+
this.audio.dispose();
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
|
package/dist/entity.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export type EntityId = number;
|
|
2
|
+
export declare const NULL_ENTITY: EntityId;
|
|
3
|
+
export declare function entityIndex(e: EntityId): number;
|
|
4
|
+
export declare function entityGeneration(e: EntityId): number;
|
|
5
|
+
export declare function makeEntity(index: number, generation: number): EntityId;
|
|
6
|
+
export declare class EntityAllocator {
|
|
7
|
+
private generations;
|
|
8
|
+
private freeList;
|
|
9
|
+
private nextFresh;
|
|
10
|
+
private liveCount;
|
|
11
|
+
create(): EntityId;
|
|
12
|
+
destroy(e: EntityId): boolean;
|
|
13
|
+
isAlive(e: EntityId): boolean;
|
|
14
|
+
count(): number;
|
|
15
|
+
capacity(): number;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=entity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../src/entity.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAE9B,eAAO,MAAM,WAAW,EAAE,QAAY,CAAC;AAKvC,wBAAgB,WAAW,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,CAE/C;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,CAEpD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,QAAQ,CAEtE;AAED,qBAAa,eAAe;IAG1B,OAAO,CAAC,WAAW,CAAkC;IACrD,OAAO,CAAC,QAAQ,CAAgB;IAEhC,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,SAAS,CAAa;IAE9B,MAAM,IAAI,QAAQ;IAkBlB,OAAO,CAAC,CAAC,EAAE,QAAQ,GAAG,OAAO;IAY7B,OAAO,CAAC,CAAC,EAAE,QAAQ,GAAG,OAAO;IAM7B,KAAK,IAAI,MAAM;IAMf,QAAQ,IAAI,MAAM;CAGnB"}
|
package/dist/entity.js
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
// Entity allocator for the Loom Engine ECS.
|
|
2
|
+
//
|
|
3
|
+
// An entity is a 32-bit handle: high 8 bits = generation, low 24
|
|
4
|
+
// bits = index. The generation guards against use-after-free: when
|
|
5
|
+
// an entity is destroyed and its index is recycled, the generation
|
|
6
|
+
// bumps so old handles fail validation.
|
|
7
|
+
//
|
|
8
|
+
// Inspired by the standard ECS sparse-set pattern (see PRIOR-ART.md
|
|
9
|
+
// EnTT entry). Re-implemented from scratch.
|
|
10
|
+
export const NULL_ENTITY = 0;
|
|
11
|
+
const INDEX_MASK = 0x00ffffff;
|
|
12
|
+
const GENERATION_SHIFT = 24;
|
|
13
|
+
const GENERATION_MASK = 0xff;
|
|
14
|
+
export function entityIndex(e) {
|
|
15
|
+
return e & INDEX_MASK;
|
|
16
|
+
}
|
|
17
|
+
export function entityGeneration(e) {
|
|
18
|
+
return (e >>> GENERATION_SHIFT) & GENERATION_MASK;
|
|
19
|
+
}
|
|
20
|
+
export function makeEntity(index, generation) {
|
|
21
|
+
return ((generation & GENERATION_MASK) << GENERATION_SHIFT) | (index & INDEX_MASK);
|
|
22
|
+
}
|
|
23
|
+
export class EntityAllocator {
|
|
24
|
+
// Generation array indexed by entity index. Index 0 is reserved
|
|
25
|
+
// for NULL_ENTITY so live indices start at 1.
|
|
26
|
+
generations = new Uint8Array(64);
|
|
27
|
+
freeList = [];
|
|
28
|
+
// Next never-used index. Always >= 1.
|
|
29
|
+
nextFresh = 1;
|
|
30
|
+
liveCount = 0;
|
|
31
|
+
create() {
|
|
32
|
+
let index;
|
|
33
|
+
const recycled = this.freeList.pop();
|
|
34
|
+
if (recycled !== undefined) {
|
|
35
|
+
index = recycled;
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
index = this.nextFresh++;
|
|
39
|
+
if (index >= this.generations.length) {
|
|
40
|
+
const next = new Uint8Array(index * 2);
|
|
41
|
+
next.set(this.generations);
|
|
42
|
+
this.generations = next;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
this.liveCount++;
|
|
46
|
+
const gen = this.generations[index] ?? 0;
|
|
47
|
+
return makeEntity(index, gen);
|
|
48
|
+
}
|
|
49
|
+
destroy(e) {
|
|
50
|
+
const index = entityIndex(e);
|
|
51
|
+
const gen = entityGeneration(e);
|
|
52
|
+
if (index === 0 || index >= this.nextFresh)
|
|
53
|
+
return false;
|
|
54
|
+
const currentGen = this.generations[index] ?? 0;
|
|
55
|
+
if (currentGen !== gen)
|
|
56
|
+
return false; // stale handle
|
|
57
|
+
this.generations[index] = (currentGen + 1) & GENERATION_MASK;
|
|
58
|
+
this.freeList.push(index);
|
|
59
|
+
this.liveCount--;
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
isAlive(e) {
|
|
63
|
+
const index = entityIndex(e);
|
|
64
|
+
if (index === 0 || index >= this.nextFresh)
|
|
65
|
+
return false;
|
|
66
|
+
return (this.generations[index] ?? 0) === entityGeneration(e);
|
|
67
|
+
}
|
|
68
|
+
count() {
|
|
69
|
+
return this.liveCount;
|
|
70
|
+
}
|
|
71
|
+
// Highest live entity index + 1. Used by component pools to size
|
|
72
|
+
// their backing arrays.
|
|
73
|
+
capacity() {
|
|
74
|
+
return this.nextFresh;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=entity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity.js","sourceRoot":"","sources":["../src/entity.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,EAAE;AACF,iEAAiE;AACjE,mEAAmE;AACnE,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,oEAAoE;AACpE,4CAA4C;AAI5C,MAAM,CAAC,MAAM,WAAW,GAAa,CAAC,CAAC;AACvC,MAAM,UAAU,GAAG,UAAU,CAAC;AAC9B,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAC5B,MAAM,eAAe,GAAG,IAAI,CAAC;AAE7B,MAAM,UAAU,WAAW,CAAC,CAAW;IACrC,OAAO,CAAC,GAAG,UAAU,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,CAAW;IAC1C,OAAO,CAAC,CAAC,KAAK,gBAAgB,CAAC,GAAG,eAAe,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAa,EAAE,UAAkB;IAC1D,OAAO,CAAC,CAAC,UAAU,GAAG,eAAe,CAAC,IAAI,gBAAgB,CAAC,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC;AACrF,CAAC;AAED,MAAM,OAAO,eAAe;IAC1B,gEAAgE;IAChE,8CAA8C;IACtC,WAAW,GAAe,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IAC7C,QAAQ,GAAa,EAAE,CAAC;IAChC,sCAAsC;IAC9B,SAAS,GAAW,CAAC,CAAC;IACtB,SAAS,GAAW,CAAC,CAAC;IAE9B,MAAM;QACJ,IAAI,KAAa,CAAC;QAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QACrC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,KAAK,GAAG,QAAQ,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YACzB,IAAI,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;gBACrC,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBACvC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC3B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YAC1B,CAAC;QACH,CAAC;QACD,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzC,OAAO,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,CAAC,CAAW;QACjB,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,GAAG,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO,KAAK,CAAC;QACzD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,UAAU,KAAK,GAAG;YAAE,OAAO,KAAK,CAAC,CAAU,eAAe;QAC9D,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,eAAe,CAAC;QAC7D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,CAAW;QACjB,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO,KAAK,CAAC;QACzD,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,iEAAiE;IACjE,wBAAwB;IACxB,QAAQ;QACN,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;CACF"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
export declare const LOOM_ENGINE_VERSION = "0.10.0-perf-9-1";
|
|
2
|
+
export type { Vec2, Vec3, Rect } from './util/math.js';
|
|
3
|
+
export { vec2, vec3, rect, clamp, lerp, smoothstep, approxEq, rectContains, rectIntersects, visibleInView, } from './util/math.js';
|
|
4
|
+
export type { ColorRGBA } from './util/color.js';
|
|
5
|
+
export { rgba, hexToRgba, rgbaToHexString, rgbaToCssString, colorLerp, COLOR_WHITE, COLOR_BLACK, COLOR_TRANSPARENT, COLOR_KNOT_STR, COLOR_KNOT_DEX, COLOR_KNOT_INT, COLOR_KNOT_CENTER, } from './util/color.js';
|
|
6
|
+
export type { EntityId } from './entity.js';
|
|
7
|
+
export { EntityAllocator, NULL_ENTITY, entityIndex, entityGeneration, makeEntity, } from './entity.js';
|
|
8
|
+
export { TransformPool, TRANSFORM_FLAG_DIRTY, TRANSFORM_FLAG_VISIBLE, TRANSFORM_FLAG_STATIC, TRANSFORM_FLAG_HAS_PARENT, } from './components/transform.js';
|
|
9
|
+
export { SpritePool, SPRITE_FLAG_ACTIVE, SPRITE_FLAG_TINTED, } from './components/sprite.js';
|
|
10
|
+
export { World, POOL_TRANSFORM, POOL_SPRITE } from './world.js';
|
|
11
|
+
export type { System, SystemPhase } from './system.js';
|
|
12
|
+
export { SYSTEM_PHASE_INPUT, SYSTEM_PHASE_LOGIC, SYSTEM_PHASE_PHYSICS, SYSTEM_PHASE_ANIMATION, SYSTEM_PHASE_RENDER, SYSTEM_PHASE_POST_RENDER, SYSTEM_PHASES_IN_ORDER, } from './system.js';
|
|
13
|
+
export type { TimeResource, VeilBudgetResource } from './resources.js';
|
|
14
|
+
export { ResourceRegistry, createTimeResource, createVeilBudgetResource, RESOURCE_TIME, RESOURCE_CAMERA, RESOURCE_DEVICE, RESOURCE_VEIL_BUDGET, } from './resources.js';
|
|
15
|
+
export { SpriteRenderSystem } from './systems/sprite-render-system.js';
|
|
16
|
+
export { Engine } from './engine.js';
|
|
17
|
+
export type { EngineOptions } from './engine.js';
|
|
18
|
+
export type { IGraphicsDevice, AtlasHandle, AtlasDescriptor, TextStyle, DeviceBackend, } from './renderer/graphics-device.js';
|
|
19
|
+
export type { CameraView } from './renderer/camera.js';
|
|
20
|
+
export { createCamera, getCameraViewRect, worldToScreen, screenToWorld, } from './renderer/camera.js';
|
|
21
|
+
export { Canvas2DDevice, } from './renderer/canvas2d-device.js';
|
|
22
|
+
export { ISO_TILE_WIDTH, ISO_TILE_HEIGHT, ISO_HALF_W, ISO_HALF_H, ISO_Z_SCALE, tileToIso, worldToIso, isoToTile, isoDepthKey, } from './renderer/iso-projection.js';
|
|
23
|
+
export type { SpriteFrame, SpriteAnchor, SpriteSheetManifest, LoadedSpriteSheet, LoaderOptions, } from './asset/sprite-sheet-loader.js';
|
|
24
|
+
export { loadSpriteSheet, computeFrameIndex, SpriteSheetLoadError, } from './asset/sprite-sheet-loader.js';
|
|
25
|
+
export type { AnimationClip } from './animation/animation-clip.js';
|
|
26
|
+
export { synthesizeDefaultClip, clipDurationMs, frameInClipAt, manifestFrameIndex, } from './animation/animation-clip.js';
|
|
27
|
+
export { AnimationStatePool, ANIMATION_FLAG_ACTIVE, ANIMATION_FLAG_FINISHED, } from './animation/animation-state-pool.js';
|
|
28
|
+
export { AnimationSystem, POOL_ANIMATION } from './systems/animation-system.js';
|
|
29
|
+
export type { ParticleSpawn } from './vfx/particle-pool.js';
|
|
30
|
+
export { ParticlePool, PARTICLE_FLAG_ALIVE, PARTICLE_FLAG_ADDITIVE, } from './vfx/particle-pool.js';
|
|
31
|
+
export type { EmitterConfig } from './components/particle-emitter.js';
|
|
32
|
+
export { ParticleEmitterPool, EMITTER_FLAG_ACTIVE, EMITTER_FLAG_ADDITIVE, } from './components/particle-emitter.js';
|
|
33
|
+
export { ParticleSimulationSystem, POOL_PARTICLE, } from './systems/particle-simulation-system.js';
|
|
34
|
+
export { ParticleEmitterSystem, POOL_EMITTER, } from './systems/particle-emitter-system.js';
|
|
35
|
+
export { ParticleRenderSystem } from './systems/particle-render-system.js';
|
|
36
|
+
export type { BusOptions, BusPriority } from './audio/audio-bus.js';
|
|
37
|
+
export { AudioBus, RESOURCE_AUDIO_BUS, AUDIO_BUDGET_AMBIENT_FLOOR, AUDIO_BUDGET_ESSENTIAL_FLOOR, } from './audio/audio-bus.js';
|
|
38
|
+
export type { PointerSnapshot, TouchPoint, InputSnapshot, } from './input/input-manager.js';
|
|
39
|
+
export { InputManager, RESOURCE_INPUT_MANAGER, RESOURCE_INPUT, } from './input/input-manager.js';
|
|
40
|
+
export { InputSystem } from './systems/input-system.js';
|
|
41
|
+
export { VeilBudgetSystem } from './systems/veil-budget-system.js';
|
|
42
|
+
export type { DpadDirection, VirtualDpadOptions } from './input/virtual-dpad.js';
|
|
43
|
+
export { VirtualDpad } from './input/virtual-dpad.js';
|
|
44
|
+
export type { TapWalkTargetResource, TapToWalkSystemOptions, } from './input/tap-to-walk.js';
|
|
45
|
+
export { TapToWalkSystem, RESOURCE_TAP_WALK, createTapWalkTarget, } from './input/tap-to-walk.js';
|
|
46
|
+
export type { EventEnvelope, DirectorEvent, DirectorEventType, DirectorEventDataMap, EventPriority, EncounterSpawnData, EncounterTickData, EncounterEndData, EncounterLootData, KnotContextData, KnotPaletteHex, KnotMood, VeBudgetUpdateData, VeilTier, SceneTransitionData, SceneTransitionKind, NarratorLineData, NarratorVoice, SystemHeartbeatData, SystemReplayCompleteData, SystemSnapshotRequiredData, MobSpec, BossSpec, DropSpec, } from './director/event-envelope.js';
|
|
47
|
+
export { parseEnvelope, parseEnvelopeJson, priorityFor, EventEnvelopeParseError, } from './director/event-envelope.js';
|
|
48
|
+
export type { IDirectorBridge, DirectorBridgeStatus, DirectorBridgeStats, } from './director/director-bridge.js';
|
|
49
|
+
export { RESOURCE_DIRECTOR_BRIDGE, RESOURCE_KNOT_CONTEXT, } from './director/director-bridge.js';
|
|
50
|
+
export { MockDirectorBridge } from './director/mock-director-bridge.js';
|
|
51
|
+
export type { SSEDirectorBridgeOptions } from './director/sse-director-bridge.js';
|
|
52
|
+
export { SSEDirectorBridge } from './director/sse-director-bridge.js';
|
|
53
|
+
export type { SnapshotResponse, SnapshotRecoveryOptions, } from './director/snapshot-recovery.js';
|
|
54
|
+
export { SnapshotRecoveryHelper, SnapshotFetchError, } from './director/snapshot-recovery.js';
|
|
55
|
+
export type { KnotPaletteRgba } from './director/knot-context-resource.js';
|
|
56
|
+
export { KnotContextResource } from './director/knot-context-resource.js';
|
|
57
|
+
export type { DirectorEventLog } from './director/director-system.js';
|
|
58
|
+
export { DirectorSystem, RESOURCE_DIRECTOR_LOG, createDirectorEventLog, } from './director/director-system.js';
|
|
59
|
+
export type { DirectorEncounterSystemOptions } from './director/director-encounter-system.js';
|
|
60
|
+
export { DirectorEncounterSystem } from './director/director-encounter-system.js';
|
|
61
|
+
export { HealthPool, POOL_HEALTH, HEALTH_FLAG_ACTIVE, HEALTH_FLAG_DEAD, HEALTH_FLAG_INVULNERABLE, } from './components/health.js';
|
|
62
|
+
export { PursuePool, POOL_PURSUE, PURSUE_FLAG_ACTIVE, } from './components/pursue.js';
|
|
63
|
+
export type { KillEvent } from './systems/damage-system.js';
|
|
64
|
+
export { DamageSystem, DeathLog, RESOURCE_DEATH_LOG, } from './systems/damage-system.js';
|
|
65
|
+
export { PursueSystem } from './systems/pursue-system.js';
|
|
66
|
+
export type { AttackSystemOptions } from './systems/attack-system.js';
|
|
67
|
+
export { AttackSystem } from './systems/attack-system.js';
|
|
68
|
+
export type { ProjectileSpawn } from './vfx/projectile-pool.js';
|
|
69
|
+
export { ProjectilePool, POOL_PROJECTILE, PROJECTILE_FLAG_ALIVE, PROJECTILE_FLAG_HOMING, PROJECTILE_FLAG_PIERCE, } from './vfx/projectile-pool.js';
|
|
70
|
+
export type { RangedAttackConfig } from './components/ranged-attack.js';
|
|
71
|
+
export { RangedAttackPool, POOL_RANGED, RANGED_FLAG_ACTIVE, RANGED_FLAG_HOMING, } from './components/ranged-attack.js';
|
|
72
|
+
export { ProjectileSystem } from './systems/projectile-system.js';
|
|
73
|
+
export { RangedAttackSystem } from './systems/ranged-attack-system.js';
|
|
74
|
+
export { ProjectileRenderSystem } from './systems/projectile-render-system.js';
|
|
75
|
+
export type { MobArchetype, MobCatalogEntry } from './combat/mob-catalog.js';
|
|
76
|
+
export { MOB_CATALOG, spawnMob } from './combat/mob-catalog.js';
|
|
77
|
+
export type { ZoneId, TransitionKind, ZoneStateResource, } from './zone/zone-state.js';
|
|
78
|
+
export { createZoneState, beginTransition, tickTransition, isTransitioning, RESOURCE_ZONE_STATE, } from './zone/zone-state.js';
|
|
79
|
+
export type { ZoneCatalogEntry, ZoneTilePalette, } from './zone/zone-catalog.js';
|
|
80
|
+
export { ZONE_CATALOG } from './zone/zone-catalog.js';
|
|
81
|
+
export type { InteractableKind, InteractableConfig, } from './components/interactable.js';
|
|
82
|
+
export { InteractablePool, POOL_INTERACTABLE, INTERACTABLE_FLAG_ACTIVE, } from './components/interactable.js';
|
|
83
|
+
export type { LastInteractionResource, InteractionSystemOptions, } from './systems/interaction-system.js';
|
|
84
|
+
export { InteractionSystem, createLastInteraction, RESOURCE_LAST_INTERACTION, } from './systems/interaction-system.js';
|
|
85
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
// Loom Engine - public entry point.
|
|
2
|
+
//
|
|
3
|
+
// Phase 2 adds the ECS layer: World, System scheduler, Resources,
|
|
4
|
+
// SpritePool, SpriteRenderSystem, and the high-level Engine facade
|
|
5
|
+
// that wires everything together with sane defaults.
|
|
6
|
+
export const LOOM_ENGINE_VERSION = '0.10.0-perf-9-1';
|
|
7
|
+
export { vec2, vec3, rect, clamp, lerp, smoothstep, approxEq, rectContains, rectIntersects, visibleInView, } from './util/math.js';
|
|
8
|
+
export { rgba, hexToRgba, rgbaToHexString, rgbaToCssString, colorLerp, COLOR_WHITE, COLOR_BLACK, COLOR_TRANSPARENT, COLOR_KNOT_STR, COLOR_KNOT_DEX, COLOR_KNOT_INT, COLOR_KNOT_CENTER, } from './util/color.js';
|
|
9
|
+
export { EntityAllocator, NULL_ENTITY, entityIndex, entityGeneration, makeEntity, } from './entity.js';
|
|
10
|
+
export { TransformPool, TRANSFORM_FLAG_DIRTY, TRANSFORM_FLAG_VISIBLE, TRANSFORM_FLAG_STATIC, TRANSFORM_FLAG_HAS_PARENT, } from './components/transform.js';
|
|
11
|
+
export { SpritePool, SPRITE_FLAG_ACTIVE, SPRITE_FLAG_TINTED, } from './components/sprite.js';
|
|
12
|
+
// ECS core
|
|
13
|
+
export { World, POOL_TRANSFORM, POOL_SPRITE } from './world.js';
|
|
14
|
+
export { SYSTEM_PHASE_INPUT, SYSTEM_PHASE_LOGIC, SYSTEM_PHASE_PHYSICS, SYSTEM_PHASE_ANIMATION, SYSTEM_PHASE_RENDER, SYSTEM_PHASE_POST_RENDER, SYSTEM_PHASES_IN_ORDER, } from './system.js';
|
|
15
|
+
export { ResourceRegistry, createTimeResource, createVeilBudgetResource, RESOURCE_TIME, RESOURCE_CAMERA, RESOURCE_DEVICE, RESOURCE_VEIL_BUDGET, } from './resources.js';
|
|
16
|
+
// Default systems
|
|
17
|
+
export { SpriteRenderSystem } from './systems/sprite-render-system.js';
|
|
18
|
+
// Engine facade
|
|
19
|
+
export { Engine } from './engine.js';
|
|
20
|
+
export { createCamera, getCameraViewRect, worldToScreen, screenToWorld, } from './renderer/camera.js';
|
|
21
|
+
export { Canvas2DDevice, } from './renderer/canvas2d-device.js';
|
|
22
|
+
export { ISO_TILE_WIDTH, ISO_TILE_HEIGHT, ISO_HALF_W, ISO_HALF_H, ISO_Z_SCALE, tileToIso, worldToIso, isoToTile, isoDepthKey, } from './renderer/iso-projection.js';
|
|
23
|
+
export { loadSpriteSheet, computeFrameIndex, SpriteSheetLoadError, } from './asset/sprite-sheet-loader.js';
|
|
24
|
+
export { synthesizeDefaultClip, clipDurationMs, frameInClipAt, manifestFrameIndex, } from './animation/animation-clip.js';
|
|
25
|
+
export { AnimationStatePool, ANIMATION_FLAG_ACTIVE, ANIMATION_FLAG_FINISHED, } from './animation/animation-state-pool.js';
|
|
26
|
+
export { AnimationSystem, POOL_ANIMATION } from './systems/animation-system.js';
|
|
27
|
+
export { ParticlePool, PARTICLE_FLAG_ALIVE, PARTICLE_FLAG_ADDITIVE, } from './vfx/particle-pool.js';
|
|
28
|
+
export { ParticleEmitterPool, EMITTER_FLAG_ACTIVE, EMITTER_FLAG_ADDITIVE, } from './components/particle-emitter.js';
|
|
29
|
+
export { ParticleSimulationSystem, POOL_PARTICLE, } from './systems/particle-simulation-system.js';
|
|
30
|
+
export { ParticleEmitterSystem, POOL_EMITTER, } from './systems/particle-emitter-system.js';
|
|
31
|
+
export { ParticleRenderSystem } from './systems/particle-render-system.js';
|
|
32
|
+
export { AudioBus, RESOURCE_AUDIO_BUS, AUDIO_BUDGET_AMBIENT_FLOOR, AUDIO_BUDGET_ESSENTIAL_FLOOR, } from './audio/audio-bus.js';
|
|
33
|
+
export { InputManager, RESOURCE_INPUT_MANAGER, RESOURCE_INPUT, } from './input/input-manager.js';
|
|
34
|
+
export { InputSystem } from './systems/input-system.js';
|
|
35
|
+
export { VeilBudgetSystem } from './systems/veil-budget-system.js';
|
|
36
|
+
export { VirtualDpad } from './input/virtual-dpad.js';
|
|
37
|
+
export { TapToWalkSystem, RESOURCE_TAP_WALK, createTapWalkTarget, } from './input/tap-to-walk.js';
|
|
38
|
+
export { parseEnvelope, parseEnvelopeJson, priorityFor, EventEnvelopeParseError, } from './director/event-envelope.js';
|
|
39
|
+
export { RESOURCE_DIRECTOR_BRIDGE, RESOURCE_KNOT_CONTEXT, } from './director/director-bridge.js';
|
|
40
|
+
export { MockDirectorBridge } from './director/mock-director-bridge.js';
|
|
41
|
+
export { SSEDirectorBridge } from './director/sse-director-bridge.js';
|
|
42
|
+
export { SnapshotRecoveryHelper, SnapshotFetchError, } from './director/snapshot-recovery.js';
|
|
43
|
+
export { KnotContextResource } from './director/knot-context-resource.js';
|
|
44
|
+
export { DirectorSystem, RESOURCE_DIRECTOR_LOG, createDirectorEventLog, } from './director/director-system.js';
|
|
45
|
+
export { DirectorEncounterSystem } from './director/director-encounter-system.js';
|
|
46
|
+
// Combat (Phase 7): health, damage, simple AI, attack. Engine-side
|
|
47
|
+
// primitives that the actual Survivor port will use. The full
|
|
48
|
+
// Survivor wave engine sits on top of these in subsequent sessions.
|
|
49
|
+
export { HealthPool, POOL_HEALTH, HEALTH_FLAG_ACTIVE, HEALTH_FLAG_DEAD, HEALTH_FLAG_INVULNERABLE, } from './components/health.js';
|
|
50
|
+
export { PursuePool, POOL_PURSUE, PURSUE_FLAG_ACTIVE, } from './components/pursue.js';
|
|
51
|
+
export { DamageSystem, DeathLog, RESOURCE_DEATH_LOG, } from './systems/damage-system.js';
|
|
52
|
+
export { PursueSystem } from './systems/pursue-system.js';
|
|
53
|
+
export { AttackSystem } from './systems/attack-system.js';
|
|
54
|
+
export { ProjectilePool, POOL_PROJECTILE, PROJECTILE_FLAG_ALIVE, PROJECTILE_FLAG_HOMING, PROJECTILE_FLAG_PIERCE, } from './vfx/projectile-pool.js';
|
|
55
|
+
export { RangedAttackPool, POOL_RANGED, RANGED_FLAG_ACTIVE, RANGED_FLAG_HOMING, } from './components/ranged-attack.js';
|
|
56
|
+
export { ProjectileSystem } from './systems/projectile-system.js';
|
|
57
|
+
export { RangedAttackSystem } from './systems/ranged-attack-system.js';
|
|
58
|
+
export { ProjectileRenderSystem } from './systems/projectile-render-system.js';
|
|
59
|
+
export { MOB_CATALOG, spawnMob } from './combat/mob-catalog.js';
|
|
60
|
+
export { createZoneState, beginTransition, tickTransition, isTransitioning, RESOURCE_ZONE_STATE, } from './zone/zone-state.js';
|
|
61
|
+
export { ZONE_CATALOG } from './zone/zone-catalog.js';
|
|
62
|
+
export { InteractablePool, POOL_INTERACTABLE, INTERACTABLE_FLAG_ACTIVE, } from './components/interactable.js';
|
|
63
|
+
export { InteractionSystem, createLastInteraction, RESOURCE_LAST_INTERACTION, } from './systems/interaction-system.js';
|
|
64
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
export interface PointerSnapshot {
|
|
2
|
+
x: number;
|
|
3
|
+
y: number;
|
|
4
|
+
buttons: number;
|
|
5
|
+
inside: boolean;
|
|
6
|
+
}
|
|
7
|
+
export interface TouchPoint {
|
|
8
|
+
id: number;
|
|
9
|
+
x: number;
|
|
10
|
+
y: number;
|
|
11
|
+
}
|
|
12
|
+
export interface InputSnapshot {
|
|
13
|
+
keysHeld: ReadonlySet<string>;
|
|
14
|
+
keysPressedThisFrame: ReadonlySet<string>;
|
|
15
|
+
keysReleasedThisFrame: ReadonlySet<string>;
|
|
16
|
+
pointer: Readonly<PointerSnapshot>;
|
|
17
|
+
pointerPressedThisFrame: number;
|
|
18
|
+
pointerReleasedThisFrame: number;
|
|
19
|
+
wheelDeltaThisFrame: number;
|
|
20
|
+
touches: ReadonlyArray<TouchPoint>;
|
|
21
|
+
touchesStartedThisFrame: ReadonlyArray<TouchPoint>;
|
|
22
|
+
touchesEndedThisFrame: ReadonlyArray<TouchPoint>;
|
|
23
|
+
}
|
|
24
|
+
export declare class InputManager {
|
|
25
|
+
private keysHeld;
|
|
26
|
+
private keysPressedAccum;
|
|
27
|
+
private keysReleasedAccum;
|
|
28
|
+
private pointer;
|
|
29
|
+
private pointerPressedAccum;
|
|
30
|
+
private pointerReleasedAccum;
|
|
31
|
+
private wheelDeltaAccum;
|
|
32
|
+
private activeTouches;
|
|
33
|
+
private touchesStartedAccum;
|
|
34
|
+
private touchesEndedAccum;
|
|
35
|
+
private currentKeysPressed;
|
|
36
|
+
private currentKeysReleased;
|
|
37
|
+
private currentPointerPressed;
|
|
38
|
+
private currentPointerReleased;
|
|
39
|
+
private currentWheelDelta;
|
|
40
|
+
private currentTouchesStarted;
|
|
41
|
+
private currentTouchesEnded;
|
|
42
|
+
private cachedTouchesArray;
|
|
43
|
+
private cachedSnapshot;
|
|
44
|
+
private boundKeyDown;
|
|
45
|
+
private boundKeyUp;
|
|
46
|
+
private boundPointerMove;
|
|
47
|
+
private boundPointerDown;
|
|
48
|
+
private boundPointerUp;
|
|
49
|
+
private boundPointerEnter;
|
|
50
|
+
private boundPointerLeave;
|
|
51
|
+
private boundWheel;
|
|
52
|
+
private boundTouchStart;
|
|
53
|
+
private boundTouchMove;
|
|
54
|
+
private boundTouchEnd;
|
|
55
|
+
private boundTouchCancel;
|
|
56
|
+
private boundContextMenu;
|
|
57
|
+
private canvas;
|
|
58
|
+
private targetWindow;
|
|
59
|
+
private attached;
|
|
60
|
+
constructor();
|
|
61
|
+
attach(canvas: HTMLCanvasElement, win?: Window): void;
|
|
62
|
+
detach(): void;
|
|
63
|
+
beginFrame(): void;
|
|
64
|
+
snapshot(): InputSnapshot;
|
|
65
|
+
injectKeyDown(code: string): void;
|
|
66
|
+
injectKeyUp(code: string): void;
|
|
67
|
+
injectPointerMove(x: number, y: number, buttons: number, inside?: boolean): void;
|
|
68
|
+
injectPointerDown(buttonsBit: number): void;
|
|
69
|
+
injectPointerUp(buttonsBit: number): void;
|
|
70
|
+
injectTouchStart(id: number, x: number, y: number): void;
|
|
71
|
+
injectTouchMove(id: number, x: number, y: number): void;
|
|
72
|
+
injectTouchEnd(id: number, x: number, y: number): void;
|
|
73
|
+
private onKeyDown;
|
|
74
|
+
private onKeyUp;
|
|
75
|
+
private updatePointerFromEvent;
|
|
76
|
+
private onPointerMove;
|
|
77
|
+
private onPointerDown;
|
|
78
|
+
private onPointerUp;
|
|
79
|
+
private onPointerEnter;
|
|
80
|
+
private onPointerLeave;
|
|
81
|
+
private onWheel;
|
|
82
|
+
private updateTouchPoint;
|
|
83
|
+
private onTouchStart;
|
|
84
|
+
private onTouchMove;
|
|
85
|
+
private onTouchEnd;
|
|
86
|
+
private onTouchCancel;
|
|
87
|
+
private onContextMenu;
|
|
88
|
+
}
|
|
89
|
+
export declare const RESOURCE_INPUT_MANAGER = "input_manager";
|
|
90
|
+
export declare const RESOURCE_INPUT = "input";
|
|
91
|
+
//# sourceMappingURL=input-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-manager.d.ts","sourceRoot":"","sources":["../../src/input/input-manager.ts"],"names":[],"mappings":"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"}
|