@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.
Files changed (219) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +344 -0
  3. package/dist/animation/animation-clip.d.ts +12 -0
  4. package/dist/animation/animation-clip.d.ts.map +1 -0
  5. package/dist/animation/animation-clip.js +85 -0
  6. package/dist/animation/animation-clip.js.map +1 -0
  7. package/dist/animation/animation-state-pool.d.ts +25 -0
  8. package/dist/animation/animation-state-pool.d.ts.map +1 -0
  9. package/dist/animation/animation-state-pool.js +113 -0
  10. package/dist/animation/animation-state-pool.js.map +1 -0
  11. package/dist/asset/sprite-sheet-loader.d.ts +41 -0
  12. package/dist/asset/sprite-sheet-loader.d.ts.map +1 -0
  13. package/dist/asset/sprite-sheet-loader.js +313 -0
  14. package/dist/asset/sprite-sheet-loader.js.map +1 -0
  15. package/dist/audio/audio-bus.d.ts +43 -0
  16. package/dist/audio/audio-bus.d.ts.map +1 -0
  17. package/dist/audio/audio-bus.js +258 -0
  18. package/dist/audio/audio-bus.js.map +1 -0
  19. package/dist/combat/mob-catalog.d.ts +29 -0
  20. package/dist/combat/mob-catalog.d.ts.map +1 -0
  21. package/dist/combat/mob-catalog.js +104 -0
  22. package/dist/combat/mob-catalog.js.map +1 -0
  23. package/dist/components/health.d.ts +28 -0
  24. package/dist/components/health.d.ts.map +1 -0
  25. package/dist/components/health.js +150 -0
  26. package/dist/components/health.js.map +1 -0
  27. package/dist/components/interactable.d.ts +30 -0
  28. package/dist/components/interactable.d.ts.map +1 -0
  29. package/dist/components/interactable.js +94 -0
  30. package/dist/components/interactable.js.map +1 -0
  31. package/dist/components/particle-emitter.d.ts +62 -0
  32. package/dist/components/particle-emitter.d.ts.map +1 -0
  33. package/dist/components/particle-emitter.js +193 -0
  34. package/dist/components/particle-emitter.js.map +1 -0
  35. package/dist/components/pursue.d.ts +23 -0
  36. package/dist/components/pursue.d.ts.map +1 -0
  37. package/dist/components/pursue.js +96 -0
  38. package/dist/components/pursue.js.map +1 -0
  39. package/dist/components/ranged-attack.d.ts +44 -0
  40. package/dist/components/ranged-attack.d.ts.map +1 -0
  41. package/dist/components/ranged-attack.js +120 -0
  42. package/dist/components/ranged-attack.js.map +1 -0
  43. package/dist/components/sprite.d.ts +27 -0
  44. package/dist/components/sprite.d.ts.map +1 -0
  45. package/dist/components/sprite.js +122 -0
  46. package/dist/components/sprite.js.map +1 -0
  47. package/dist/components/transform.d.ts +30 -0
  48. package/dist/components/transform.d.ts.map +1 -0
  49. package/dist/components/transform.js +150 -0
  50. package/dist/components/transform.js.map +1 -0
  51. package/dist/director/director-bridge.d.ts +22 -0
  52. package/dist/director/director-bridge.d.ts.map +1 -0
  53. package/dist/director/director-bridge.js +23 -0
  54. package/dist/director/director-bridge.js.map +1 -0
  55. package/dist/director/director-encounter-system.d.ts +21 -0
  56. package/dist/director/director-encounter-system.d.ts.map +1 -0
  57. package/dist/director/director-encounter-system.js +128 -0
  58. package/dist/director/director-encounter-system.js.map +1 -0
  59. package/dist/director/director-system.d.ts +19 -0
  60. package/dist/director/director-system.d.ts.map +1 -0
  61. package/dist/director/director-system.js +179 -0
  62. package/dist/director/director-system.js.map +1 -0
  63. package/dist/director/event-envelope.d.ts +144 -0
  64. package/dist/director/event-envelope.d.ts.map +1 -0
  65. package/dist/director/event-envelope.js +108 -0
  66. package/dist/director/event-envelope.js.map +1 -0
  67. package/dist/director/knot-context-resource.d.ts +25 -0
  68. package/dist/director/knot-context-resource.d.ts.map +1 -0
  69. package/dist/director/knot-context-resource.js +152 -0
  70. package/dist/director/knot-context-resource.js.map +1 -0
  71. package/dist/director/mock-director-bridge.d.ts +18 -0
  72. package/dist/director/mock-director-bridge.d.ts.map +1 -0
  73. package/dist/director/mock-director-bridge.js +75 -0
  74. package/dist/director/mock-director-bridge.js.map +1 -0
  75. package/dist/director/snapshot-recovery.d.ts +37 -0
  76. package/dist/director/snapshot-recovery.d.ts.map +1 -0
  77. package/dist/director/snapshot-recovery.js +180 -0
  78. package/dist/director/snapshot-recovery.js.map +1 -0
  79. package/dist/director/sse-director-bridge.d.ts +42 -0
  80. package/dist/director/sse-director-bridge.d.ts.map +1 -0
  81. package/dist/director/sse-director-bridge.js +280 -0
  82. package/dist/director/sse-director-bridge.js.map +1 -0
  83. package/dist/engine.d.ts +25 -0
  84. package/dist/engine.d.ts.map +1 -0
  85. package/dist/engine.js +166 -0
  86. package/dist/engine.js.map +1 -0
  87. package/dist/entity.d.ts +17 -0
  88. package/dist/entity.d.ts.map +1 -0
  89. package/dist/entity.js +77 -0
  90. package/dist/entity.js.map +1 -0
  91. package/dist/index.d.ts +85 -0
  92. package/dist/index.d.ts.map +1 -0
  93. package/dist/index.js +64 -0
  94. package/dist/index.js.map +1 -0
  95. package/dist/input/input-manager.d.ts +91 -0
  96. package/dist/input/input-manager.d.ts.map +1 -0
  97. package/dist/input/input-manager.js +349 -0
  98. package/dist/input/input-manager.js.map +1 -0
  99. package/dist/input/tap-to-walk.d.ts +27 -0
  100. package/dist/input/tap-to-walk.d.ts.map +1 -0
  101. package/dist/input/tap-to-walk.js +118 -0
  102. package/dist/input/tap-to-walk.js.map +1 -0
  103. package/dist/input/virtual-dpad.d.ts +34 -0
  104. package/dist/input/virtual-dpad.d.ts.map +1 -0
  105. package/dist/input/virtual-dpad.js +267 -0
  106. package/dist/input/virtual-dpad.js.map +1 -0
  107. package/dist/renderer/camera.d.ts +26 -0
  108. package/dist/renderer/camera.d.ts.map +1 -0
  109. package/dist/renderer/camera.js +39 -0
  110. package/dist/renderer/camera.js.map +1 -0
  111. package/dist/renderer/canvas2d-device.d.ts +26 -0
  112. package/dist/renderer/canvas2d-device.d.ts.map +1 -0
  113. package/dist/renderer/canvas2d-device.js +252 -0
  114. package/dist/renderer/canvas2d-device.js.map +1 -0
  115. package/dist/renderer/graphics-device.d.ts +36 -0
  116. package/dist/renderer/graphics-device.d.ts.map +1 -0
  117. package/dist/renderer/graphics-device.js +12 -0
  118. package/dist/renderer/graphics-device.js.map +1 -0
  119. package/dist/renderer/iso-projection.d.ts +11 -0
  120. package/dist/renderer/iso-projection.d.ts.map +1 -0
  121. package/dist/renderer/iso-projection.js +59 -0
  122. package/dist/renderer/iso-projection.js.map +1 -0
  123. package/dist/resources.d.ts +28 -0
  124. package/dist/resources.d.ts.map +1 -0
  125. package/dist/resources.js +53 -0
  126. package/dist/resources.js.map +1 -0
  127. package/dist/system.d.ts +14 -0
  128. package/dist/system.d.ts.map +1 -0
  129. package/dist/system.js +25 -0
  130. package/dist/system.js.map +1 -0
  131. package/dist/systems/animation-system.d.ts +8 -0
  132. package/dist/systems/animation-system.d.ts.map +1 -0
  133. package/dist/systems/animation-system.js +77 -0
  134. package/dist/systems/animation-system.js.map +1 -0
  135. package/dist/systems/attack-system.d.ts +17 -0
  136. package/dist/systems/attack-system.d.ts.map +1 -0
  137. package/dist/systems/attack-system.js +94 -0
  138. package/dist/systems/attack-system.js.map +1 -0
  139. package/dist/systems/damage-system.d.ts +18 -0
  140. package/dist/systems/damage-system.d.ts.map +1 -0
  141. package/dist/systems/damage-system.js +77 -0
  142. package/dist/systems/damage-system.js.map +1 -0
  143. package/dist/systems/input-system.d.ts +7 -0
  144. package/dist/systems/input-system.d.ts.map +1 -0
  145. package/dist/systems/input-system.js +27 -0
  146. package/dist/systems/input-system.js.map +1 -0
  147. package/dist/systems/interaction-system.d.ts +23 -0
  148. package/dist/systems/interaction-system.d.ts.map +1 -0
  149. package/dist/systems/interaction-system.js +120 -0
  150. package/dist/systems/interaction-system.js.map +1 -0
  151. package/dist/systems/particle-emitter-system.d.ts +8 -0
  152. package/dist/systems/particle-emitter-system.d.ts.map +1 -0
  153. package/dist/systems/particle-emitter-system.js +161 -0
  154. package/dist/systems/particle-emitter-system.js.map +1 -0
  155. package/dist/systems/particle-render-system.d.ts +7 -0
  156. package/dist/systems/particle-render-system.d.ts.map +1 -0
  157. package/dist/systems/particle-render-system.js +53 -0
  158. package/dist/systems/particle-render-system.js.map +1 -0
  159. package/dist/systems/particle-simulation-system.d.ts +8 -0
  160. package/dist/systems/particle-simulation-system.d.ts.map +1 -0
  161. package/dist/systems/particle-simulation-system.js +45 -0
  162. package/dist/systems/particle-simulation-system.js.map +1 -0
  163. package/dist/systems/projectile-render-system.d.ts +7 -0
  164. package/dist/systems/projectile-render-system.d.ts.map +1 -0
  165. package/dist/systems/projectile-render-system.js +35 -0
  166. package/dist/systems/projectile-render-system.js.map +1 -0
  167. package/dist/systems/projectile-system.d.ts +7 -0
  168. package/dist/systems/projectile-system.d.ts.map +1 -0
  169. package/dist/systems/projectile-system.js +114 -0
  170. package/dist/systems/projectile-system.js.map +1 -0
  171. package/dist/systems/pursue-system.d.ts +7 -0
  172. package/dist/systems/pursue-system.d.ts.map +1 -0
  173. package/dist/systems/pursue-system.js +83 -0
  174. package/dist/systems/pursue-system.js.map +1 -0
  175. package/dist/systems/ranged-attack-system.d.ts +7 -0
  176. package/dist/systems/ranged-attack-system.d.ts.map +1 -0
  177. package/dist/systems/ranged-attack-system.js +98 -0
  178. package/dist/systems/ranged-attack-system.js.map +1 -0
  179. package/dist/systems/sprite-render-system.d.ts +9 -0
  180. package/dist/systems/sprite-render-system.d.ts.map +1 -0
  181. package/dist/systems/sprite-render-system.js +108 -0
  182. package/dist/systems/sprite-render-system.js.map +1 -0
  183. package/dist/systems/veil-budget-system.d.ts +7 -0
  184. package/dist/systems/veil-budget-system.d.ts.map +1 -0
  185. package/dist/systems/veil-budget-system.js +37 -0
  186. package/dist/systems/veil-budget-system.js.map +1 -0
  187. package/dist/util/color.d.ts +19 -0
  188. package/dist/util/color.d.ts.map +1 -0
  189. package/dist/util/color.js +45 -0
  190. package/dist/util/color.js.map +1 -0
  191. package/dist/util/math.d.ts +26 -0
  192. package/dist/util/math.d.ts.map +1 -0
  193. package/dist/util/math.js +47 -0
  194. package/dist/util/math.js.map +1 -0
  195. package/dist/util/typed-arrays.d.ts +7 -0
  196. package/dist/util/typed-arrays.d.ts.map +1 -0
  197. package/dist/util/typed-arrays.js +42 -0
  198. package/dist/util/typed-arrays.js.map +1 -0
  199. package/dist/vfx/particle-pool.d.ts +61 -0
  200. package/dist/vfx/particle-pool.d.ts.map +1 -0
  201. package/dist/vfx/particle-pool.js +204 -0
  202. package/dist/vfx/particle-pool.js.map +1 -0
  203. package/dist/vfx/projectile-pool.d.ts +56 -0
  204. package/dist/vfx/projectile-pool.d.ts.map +1 -0
  205. package/dist/vfx/projectile-pool.js +157 -0
  206. package/dist/vfx/projectile-pool.js.map +1 -0
  207. package/dist/world.d.ts +23 -0
  208. package/dist/world.d.ts.map +1 -0
  209. package/dist/world.js +101 -0
  210. package/dist/world.js.map +1 -0
  211. package/dist/zone/zone-catalog.d.ts +17 -0
  212. package/dist/zone/zone-catalog.d.ts.map +1 -0
  213. package/dist/zone/zone-catalog.js +116 -0
  214. package/dist/zone/zone-catalog.js.map +1 -0
  215. package/dist/zone/zone-state.d.ts +18 -0
  216. package/dist/zone/zone-state.d.ts.map +1 -0
  217. package/dist/zone/zone-state.js +52 -0
  218. package/dist/zone/zone-state.js.map +1 -0
  219. 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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"}
@@ -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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"}
@@ -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":"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"}
@@ -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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"}