@datamoc/mw_games 0.26.1 → 0.27.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 (66) hide show
  1. package/CHANGELOG.md +77 -0
  2. package/api-surface.json +474 -0
  3. package/dist/ai/Suggest.d.ts +54 -0
  4. package/dist/ai/Suggest.d.ts.map +1 -0
  5. package/dist/ai/Suggest.js +48 -0
  6. package/dist/ai/Suggest.js.map +1 -0
  7. package/dist/ai/index.d.ts +2 -0
  8. package/dist/ai/index.d.ts.map +1 -1
  9. package/dist/ai/index.js +1 -0
  10. package/dist/ai/index.js.map +1 -1
  11. package/dist/core/Random.d.ts +32 -5
  12. package/dist/core/Random.d.ts.map +1 -1
  13. package/dist/core/Random.js.map +1 -1
  14. package/dist/core/Replay.d.ts +28 -4
  15. package/dist/core/Replay.d.ts.map +1 -1
  16. package/dist/core/Replay.js +38 -9
  17. package/dist/core/Replay.js.map +1 -1
  18. package/dist/core/ReplayFile.d.ts +197 -0
  19. package/dist/core/ReplayFile.d.ts.map +1 -0
  20. package/dist/core/ReplayFile.js +257 -0
  21. package/dist/core/ReplayFile.js.map +1 -0
  22. package/dist/core/index.d.ts +4 -2
  23. package/dist/core/index.d.ts.map +1 -1
  24. package/dist/core/index.js +2 -1
  25. package/dist/core/index.js.map +1 -1
  26. package/dist/mw_games.global.js +113 -113
  27. package/dist/simulation/Training.d.ts +77 -0
  28. package/dist/simulation/Training.d.ts.map +1 -1
  29. package/dist/simulation/Training.js +87 -0
  30. package/dist/simulation/Training.js.map +1 -1
  31. package/dist/simulation/index.d.ts +2 -2
  32. package/dist/simulation/index.d.ts.map +1 -1
  33. package/dist/simulation/index.js +1 -1
  34. package/dist/simulation/index.js.map +1 -1
  35. package/dist/two-d/render/Beam.d.ts +93 -0
  36. package/dist/two-d/render/Beam.d.ts.map +1 -0
  37. package/dist/two-d/render/Beam.js +154 -0
  38. package/dist/two-d/render/Beam.js.map +1 -0
  39. package/dist/two-d/render/Flights.d.ts +79 -0
  40. package/dist/two-d/render/Flights.d.ts.map +1 -0
  41. package/dist/two-d/render/Flights.js +120 -0
  42. package/dist/two-d/render/Flights.js.map +1 -0
  43. package/dist/two-d/render/Particles.d.ts +48 -0
  44. package/dist/two-d/render/Particles.d.ts.map +1 -1
  45. package/dist/two-d/render/Particles.js +59 -1
  46. package/dist/two-d/render/Particles.js.map +1 -1
  47. package/dist/two-d/render/index.d.ts +5 -1
  48. package/dist/two-d/render/index.d.ts.map +1 -1
  49. package/dist/two-d/render/index.js +2 -0
  50. package/dist/two-d/render/index.js.map +1 -1
  51. package/dist/two-d/ui/MessageLog.d.ts +28 -0
  52. package/dist/two-d/ui/MessageLog.d.ts.map +1 -1
  53. package/dist/two-d/ui/MessageLog.js +23 -6
  54. package/dist/two-d/ui/MessageLog.js.map +1 -1
  55. package/dist/two-d/ui/TextPrompt.d.ts +115 -0
  56. package/dist/two-d/ui/TextPrompt.d.ts.map +1 -0
  57. package/dist/two-d/ui/TextPrompt.js +227 -0
  58. package/dist/two-d/ui/TextPrompt.js.map +1 -0
  59. package/dist/two-d/ui/index.d.ts +4 -2
  60. package/dist/two-d/ui/index.d.ts.map +1 -1
  61. package/dist/two-d/ui/index.js +2 -1
  62. package/dist/two-d/ui/index.js.map +1 -1
  63. package/dist/version.d.ts +1 -1
  64. package/dist/version.js +1 -1
  65. package/package.json +1 -1
  66. package/sbom.cdx.json +6 -6
@@ -1,4 +1,5 @@
1
1
  import { Generator } from '../core/Random.ts';
2
+ import type { ReplayEvent } from '../core/Replay.ts';
2
3
  import type { NeuralModel, NeuralObservation } from '../ai/Neural.ts';
3
4
  import type { SimulationRule, SimulationStep } from './Scenario.ts';
4
5
  export interface TrainingRules<State, Command, Event> {
@@ -140,4 +141,80 @@ export declare function runRolloutsAsync<Config, State, Command, Event>(factory:
140
141
  jobs?: number;
141
142
  timeout?: number;
142
143
  }): Promise<RolloutEpisode[]>;
144
+ export interface ImitationSample {
145
+ /** the observation the recorded action was taken against */
146
+ observation: NeuralObservation;
147
+ /** the recorded action's index in the caller's `actions` list */
148
+ action: number;
149
+ /** the frame the action was recorded on */
150
+ frame: number;
151
+ }
152
+ export interface ImitationResult {
153
+ samples: readonly ImitationSample[];
154
+ /** env steps taken, one per recorded event reached */
155
+ steps: number;
156
+ terminated: boolean;
157
+ truncated: boolean;
158
+ }
159
+ /**
160
+ * Turns a persisted run into imitation targets: walks the recorded actions against the same
161
+ * seeded environment they were played on, and hands back the (observation, action) pairs a
162
+ * game's own trainer fits - the same shape the maze chase example fits, but sourced from how
163
+ * the game's own players played rather than a generated expert.
164
+ *
165
+ * One recorded event is one environment step, so a turn-based game steps once per action
166
+ * taken; a tick-based game whose rule needs an explicit idle records one, since a frame
167
+ * without an event advances nothing here. The environment must expose exactly one agent
168
+ * (the recorded player); anything else that moves is part of the rule, the way the maze
169
+ * chase's ghosts are. A recorded action outside the list is a named error, not a skipped
170
+ * event: every sample after a skipped one would be off-trajectory.
171
+ *
172
+ * @example
173
+ * ```ts
174
+ * import { TrainingEnvironment, imitationFromReplay } from '@datamoc/mw_games/simulation';
175
+ * declare const env: TrainingEnvironment<{ x: number }, number, never>;
176
+ * const result = imitationFromReplay(env, {
177
+ * actions: ['left', 'right'],
178
+ * events: [{ frame: 0, action: 'right' }],
179
+ * seed: 7,
180
+ * });
181
+ * console.log(result.samples[0].action); // 1: 'right'
182
+ * ```
183
+ */
184
+ export declare function imitationFromReplay<State, Command, Event>(environment: TrainingEnvironment<State, Command, Event>, options: {
185
+ actions: readonly string[];
186
+ events: readonly ReplayEvent[];
187
+ seed: number;
188
+ }): ImitationResult;
189
+ /** The record of one AI-played run from a seed, reproducible on demand. */
190
+ export interface SeededRun {
191
+ seed: number;
192
+ steps: number;
193
+ /** the chosen actions, one array per step, in the env's roster order */
194
+ actions: readonly (readonly (number | null)[])[];
195
+ /** cumulative reward per agent over the whole run */
196
+ rewards: readonly number[];
197
+ terminated: boolean;
198
+ truncated: boolean;
199
+ }
200
+ /**
201
+ * Plays one whole run with the AI choosing, from a named seed: the same seed and the same
202
+ * `choose` make the same decisions, so a run is comparable between builds, policies and
203
+ * machines. `choose` must be deterministic for that to hold - the deterministic argmax of a
204
+ * `NeuralPolicy`, a heuristic's fixed candidate order - and receives the env's full roster,
205
+ * returning one action per agent. Unlike `runRollouts`, the chooser is not a `NeuralModel`:
206
+ * a heuristic policy, a trained model behind `NeuralPolicy.selectAction`, or any function a
207
+ * benchmark can name works the same way. The env's own `maxSteps` is the truncation bound.
208
+ *
209
+ * @example
210
+ * ```ts
211
+ * import { TrainingEnvironment, runSeededEpisode } from '@datamoc/mw_games/simulation';
212
+ * declare const env: TrainingEnvironment<{ x: number }, number, never>;
213
+ * const run = runSeededEpisode(env, (observations) => [0], { seed: 7 });
214
+ * console.log(run.steps, run.terminated);
215
+ * ```
216
+ */
217
+ export declare function runSeededEpisode<State, Command, Event>(environment: TrainingEnvironment<State, Command, Event>, choose: (observations: readonly NeuralObservation[]) => readonly (number | null)[], options: {
218
+ seed: number;
219
+ }): SeededRun;
143
220
  //# sourceMappingURL=Training.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Training.d.ts","sourceRoot":"","sources":["../../src/simulation/Training.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEtE,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpE,MAAM,WAAW,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK;IACnD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,MAAM,EAAE,SAAS,GAAG,KAAK,CAAC;IAClC,wFAAwF;IACxF,IAAI,EAAE,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IACvD,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,iBAAiB,EAAE,CAAC;IACpD,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC;IACpE,sEAAsE;IACtE,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,SAAS,MAAM,EAAE,CAAC;IACnG,uEAAuE;IACvE,QAAQ,CAAC,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,aAAa;IAC7B,YAAY,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC3C,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB,CAAC,KAAK;IACtC,OAAO,EAAE,CAAC,CAAC;IACX,kBAAkB,EAAE,MAAM,CAAC;IAC3B,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;CACnB;AAED,8FAA8F;AAC9F,MAAM,WAAW,kBAAkB,CAAC,KAAK,EAAE,YAAY;IACtD,OAAO,EAAE,CAAC,CAAC;IACX,KAAK,EAAE,WAAW,CAAC;IACnB,WAAW,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACrC,YAAY,EAAE,YAAY,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK;IACrD,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,UAAU,CAAK;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuC;IAC7D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAE1C,OAAO,KAAK,SAAS,GAEpB;IAED,YAAY,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,MAAM,mBAAY,EAUzG;IAED,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAWjC;IAED,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,GAAG,aAAa,CA6BvD;IAED,QAAQ,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAalC;IAED,OAAO,CAAC,QAAQ,EAAE,gBAAgB,CAAC,KAAK,CAAC,GAAG,aAAa,CAsCxD;IAED,OAAO,CAAC,YAAY;CAkBpB;AAED,MAAM,WAAW,cAAc;IAC9B,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,wFAAwF;IACxF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,8FAA8F;IAC9F,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IAClC,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;IACpC,KAAK,EAAE,aAAa,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,kBAAkB,EAAE,CAAC;CACjC;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAChD,WAAW,EAAE,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,EACvD,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,cAAc,GACrB,cAAc,EAAE,CAGlB;AAmDD,4GAA4G;AAC5G,MAAM,MAAM,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,CAC5D,KAAK,EAAE;IAAE,mBAAmB,EAAE,OAAO,mBAAmB,CAAA;CAAE,EAC1D,MAAM,EAAE,MAAM,KACV,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAwBhD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EACnE,OAAO,EAAE,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,EACvD,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,cAAc,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3D,OAAO,CAAC,cAAc,EAAE,CAAC,CAsC3B"}
1
+ {"version":3,"file":"Training.d.ts","sourceRoot":"","sources":["../../src/simulation/Training.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { Generator } from '../core/Random.js';
2
+ import { parseReplayEvents } from '../core/Replay.js';
2
3
  import { createNeuralEvaluator } from '../ai/Neural.js';
3
4
  import { spawn } from '../threads/index.js';
4
5
  /**
@@ -276,4 +277,90 @@ export async function runRolloutsAsync(factory, config, model, options) {
276
277
  options.signal?.removeEventListener('abort', cancel);
277
278
  }
278
279
  }
280
+ /**
281
+ * Turns a persisted run into imitation targets: walks the recorded actions against the same
282
+ * seeded environment they were played on, and hands back the (observation, action) pairs a
283
+ * game's own trainer fits - the same shape the maze chase example fits, but sourced from how
284
+ * the game's own players played rather than a generated expert.
285
+ *
286
+ * One recorded event is one environment step, so a turn-based game steps once per action
287
+ * taken; a tick-based game whose rule needs an explicit idle records one, since a frame
288
+ * without an event advances nothing here. The environment must expose exactly one agent
289
+ * (the recorded player); anything else that moves is part of the rule, the way the maze
290
+ * chase's ghosts are. A recorded action outside the list is a named error, not a skipped
291
+ * event: every sample after a skipped one would be off-trajectory.
292
+ *
293
+ * @example
294
+ * ```ts
295
+ * import { TrainingEnvironment, imitationFromReplay } from '@datamoc/mw_games/simulation';
296
+ * declare const env: TrainingEnvironment<{ x: number }, number, never>;
297
+ * const result = imitationFromReplay(env, {
298
+ * actions: ['left', 'right'],
299
+ * events: [{ frame: 0, action: 'right' }],
300
+ * seed: 7,
301
+ * });
302
+ * console.log(result.samples[0].action); // 1: 'right'
303
+ * ```
304
+ */
305
+ export function imitationFromReplay(environment, options) {
306
+ const names = [...options.actions];
307
+ if (!names.length || names.some((name) => typeof name !== 'string'))
308
+ throw new TypeError('imitation needs the recorded action names in policy order');
309
+ const events = parseReplayEvents(options.events);
310
+ const frame = environment.reset(options.seed);
311
+ if (frame.observations.length !== 1)
312
+ throw new Error('imitation trains the recorded player alone: the environment must expose one agent');
313
+ const samples = [];
314
+ let current = frame;
315
+ let steps = 0;
316
+ for (const event of events) {
317
+ if (current.terminated || current.truncated)
318
+ break;
319
+ const action = names.indexOf(event.action);
320
+ if (action < 0)
321
+ throw new Error(`a recorded action ${JSON.stringify(event.action)} is not in the action list`);
322
+ samples.push({ observation: current.observations[0], action, frame: event.frame });
323
+ current = environment.step([action]);
324
+ steps++;
325
+ }
326
+ return { samples, steps, terminated: current.terminated, truncated: current.truncated };
327
+ }
328
+ /**
329
+ * Plays one whole run with the AI choosing, from a named seed: the same seed and the same
330
+ * `choose` make the same decisions, so a run is comparable between builds, policies and
331
+ * machines. `choose` must be deterministic for that to hold - the deterministic argmax of a
332
+ * `NeuralPolicy`, a heuristic's fixed candidate order - and receives the env's full roster,
333
+ * returning one action per agent. Unlike `runRollouts`, the chooser is not a `NeuralModel`:
334
+ * a heuristic policy, a trained model behind `NeuralPolicy.selectAction`, or any function a
335
+ * benchmark can name works the same way. The env's own `maxSteps` is the truncation bound.
336
+ *
337
+ * @example
338
+ * ```ts
339
+ * import { TrainingEnvironment, runSeededEpisode } from '@datamoc/mw_games/simulation';
340
+ * declare const env: TrainingEnvironment<{ x: number }, number, never>;
341
+ * const run = runSeededEpisode(env, (observations) => [0], { seed: 7 });
342
+ * console.log(run.steps, run.terminated);
343
+ * ```
344
+ */
345
+ export function runSeededEpisode(environment, choose, options) {
346
+ let frame = environment.reset(options.seed);
347
+ const rewards = frame.rewards.map(() => 0);
348
+ const actions = [];
349
+ let steps = 0;
350
+ while (!frame.terminated && !frame.truncated) {
351
+ const chosen = choose(frame.observations);
352
+ if (!Array.isArray(chosen) || chosen.length !== frame.observations.length)
353
+ throw new RangeError('the seeded-run chooser must return one action per agent');
354
+ actions.push([...chosen]);
355
+ const next = environment.step(chosen);
356
+ for (let i = 0; i < rewards.length; i++) {
357
+ rewards[i] += next.rewards[i];
358
+ if (!Number.isFinite(rewards[i]))
359
+ throw new RangeError('seeded-run cumulative reward overflow');
360
+ }
361
+ frame = next;
362
+ steps++;
363
+ }
364
+ return { seed: options.seed, steps, actions, rewards, terminated: frame.terminated, truncated: frame.truncated };
365
+ }
279
366
  //# sourceMappingURL=Training.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Training.js","sourceRoot":"","sources":["../../src/simulation/Training.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Training.js","sourceRoot":"","sources":["../../src/simulation/Training.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  export { advanceToInput } from './Turns.ts';
2
- export { TrainingEnvironment, runRollouts, runRolloutsAsync } from './Training.ts';
3
- export type { TrainingRules, TrainingFrame, TrainingSnapshot, TrainingCheckpoint, TrainingTransition, TrainingFactory, RolloutOptions, RolloutEpisode, } from './Training.ts';
2
+ export { TrainingEnvironment, runRollouts, runRolloutsAsync, imitationFromReplay, runSeededEpisode, } from './Training.ts';
3
+ export type { TrainingRules, TrainingFrame, TrainingSnapshot, TrainingCheckpoint, TrainingTransition, TrainingFactory, RolloutOptions, RolloutEpisode, ImitationSample, ImitationResult, SeededRun, } from './Training.ts';
4
4
  export type { ScheduledTurns, TurnRules, TurnResult } from './Turns.ts';
5
5
  export { runScenario } from './Scenario.ts';
6
6
  export type { SimulationStatus, SimulationStep, SimulationRule, Scenario, ScenarioResult } from './Scenario.ts';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/simulation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACnF,YAAY,EACX,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,cAAc,GACd,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAChH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC3G,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,YAAY,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAC3E,YAAY,EACX,iBAAiB,EACjB,iBAAiB,EACjB,wBAAwB,EACxB,sBAAsB,EACtB,+BAA+B,EAC/B,qBAAqB,EACrB,kBAAkB,GAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,YAAY,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE9E;;;;;GAKG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,YAAY,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/simulation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EACN,mBAAmB,EACnB,WAAW,EACX,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,GAChB,MAAM,eAAe,CAAC;AACvB,YAAY,EACX,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,cAAc,EACd,eAAe,EACf,eAAe,EACf,SAAS,GACT,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAChH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC3G,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,YAAY,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAC3E,YAAY,EACX,iBAAiB,EACjB,iBAAiB,EACjB,wBAAwB,EACxB,sBAAsB,EACtB,+BAA+B,EAC/B,qBAAqB,EACrB,kBAAkB,GAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,YAAY,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE9E;;;;;GAKG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,YAAY,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -1,5 +1,5 @@
1
1
  export { advanceToInput } from './Turns.js';
2
- export { TrainingEnvironment, runRollouts, runRolloutsAsync } from './Training.js';
2
+ export { TrainingEnvironment, runRollouts, runRolloutsAsync, imitationFromReplay, runSeededEpisode, } from './Training.js';
3
3
  export { runScenario } from './Scenario.js';
4
4
  export { Campaign } from './Campaign.js';
5
5
  export { runHeadlessScenario } from './Harness.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/simulation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAYnF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAU3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD;;;;;GAKG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/simulation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EACN,mBAAmB,EACnB,WAAW,EACX,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,GAChB,MAAM,eAAe,CAAC;AAevB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAU3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD;;;;;GAKG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,93 @@
1
+ import { Container } from 'pixi.js';
2
+ import type { Texture2D } from './Types2D.ts';
3
+ export interface BeamPoint {
4
+ x: number;
5
+ y: number;
6
+ }
7
+ export interface BeamOptions {
8
+ /** plain-line colour; ignored with `texture`. Default white */
9
+ colour?: number;
10
+ /** repeating strip drawn instead of a plain line */
11
+ texture?: Texture2D;
12
+ /** seconds till `done`; default 0.2 */
13
+ duration?: number;
14
+ /** line width, or strip height with a texture; default 2 */
15
+ width?: number;
16
+ /** additive blend; default true, set false for a solid beam */
17
+ additive?: boolean;
18
+ }
19
+ /**
20
+ * A one-shot beam between two screen points: a fading line by default, a fading
21
+ * repeating texture strip with `texture`. The sub-second ray flash - a zap, a laser,
22
+ * a life-link - where `LightningArc` is the persistent jittered geometry and
23
+ * `MultiTurnBeam` the multi-turn case.
24
+ *
25
+ * Fades from full to gone across `duration` and reports `done` exactly once, so a
26
+ * group can remove it without a second clock. `retarget` moves either endpoint for
27
+ * a beam tracking two moving points; z-order and parenting stay the caller's.
28
+ *
29
+ * @example
30
+ * ```ts
31
+ * import { Beam } from '@datamoc/mw_games/two-d/render';
32
+ *
33
+ * const zap = new Beam({ x: 0, y: 0 }, { x: 100, y: 0 }, { colour: 0x88ccff, duration: 0.2 });
34
+ * const expired = zap.update(0.25);
35
+ * console.log(expired); // true - the instant it outlives its duration
36
+ * zap.destroy();
37
+ * ```
38
+ */
39
+ export declare class Beam extends Container {
40
+ private from;
41
+ private to;
42
+ private readonly colour;
43
+ private readonly texture?;
44
+ private readonly thickness;
45
+ private readonly duration;
46
+ private readonly body;
47
+ private elapsed;
48
+ private expired;
49
+ constructor(from: BeamPoint, to: BeamPoint, options?: BeamOptions);
50
+ /** 0 at launch, 1 at duration end */
51
+ get progress(): number;
52
+ get done(): boolean;
53
+ /** moves either endpoint, for a beam tracking two points that are themselves moving */
54
+ retarget(from?: BeamPoint, to?: BeamPoint): void;
55
+ /** @returns true the instant `duration` elapses, so a caller can remove the beam exactly once */
56
+ update(dt: number): boolean;
57
+ destroy(): void;
58
+ private redraw;
59
+ }
60
+ /**
61
+ * Owns the beams a game has flashing: one `add` per ray, one `update(dt)` fading
62
+ * them all and forgetting the finished ones, and no bookkeeping left to the caller.
63
+ * Beams are parented here and destroyed with their beam; z-order stays the caller's.
64
+ *
65
+ * @example
66
+ * ```ts
67
+ * import { Beams } from '@datamoc/mw_games/two-d/render';
68
+ * import type { Container2D } from '@datamoc/mw_games/two-d/render';
69
+ *
70
+ * declare const layer: Container2D;
71
+ *
72
+ * const beams = new Beams();
73
+ * layer.addChild(beams);
74
+ *
75
+ * beams.add({ x: 0, y: 0 }, { x: 100, y: 0 }, { colour: 0x88ccff });
76
+ * beams.update(1 / 60);
77
+ * console.log(beams.count); // 1 - still fading
78
+ * beams.clear();
79
+ * ```
80
+ */
81
+ export declare class Beams extends Container {
82
+ private readonly live;
83
+ /** flashes a beam between two points; it fades on `update` and removes itself at duration end */
84
+ add(from: BeamPoint, to: BeamPoint, options?: BeamOptions): Beam;
85
+ /** fades every live beam, then forgets and destroys the finished ones */
86
+ update(dt: number): void;
87
+ /** how many beams are still fading */
88
+ get count(): number;
89
+ /** drops every live beam at once - a scene change, say */
90
+ clear(): void;
91
+ destroy(): void;
92
+ }
93
+ //# sourceMappingURL=Beam.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Beam.d.ts","sourceRoot":"","sources":["../../../src/two-d/render/Beam.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA0B,MAAM,SAAS,CAAC;AAE5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,WAAW,SAAS;IACzB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACV;AAED,MAAM,WAAW,WAAW;IAC3B,+DAA+D;IAC/D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,IAAK,SAAQ,SAAS;IAClC,OAAO,CAAC,IAAI,CAAY;IACxB,OAAO,CAAC,EAAE,CAAY;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAY;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA0B;IAE/C,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,OAAO,CAAS;IAExB,YAAY,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,GAAE,WAAgB,EAiBpE;IAED,qCAAqC;IACrC,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,IAAI,IAAI,OAAO,CAElB;IAED,uFAAuF;IACvF,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,SAAS,GAAG,IAAI,CAI/C;IAED,iGAAiG;IACjG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAU1B;IAEQ,OAAO,IAAI,IAAI,CAIvB;IAED,OAAO,CAAC,MAAM;CAkBd;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,KAAM,SAAQ,SAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAc;IAEnC,iGAAiG;IACjG,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAK/D;IAED,yEAAyE;IACzE,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAQvB;IAED,sCAAsC;IACtC,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,0DAA0D;IAC1D,KAAK,IAAI,IAAI,CAKZ;IAEQ,OAAO,IAAI,IAAI,CAGvB;CACD"}
@@ -0,0 +1,154 @@
1
+ import { Container, Graphics, TilingSprite } from 'pixi.js';
2
+ /**
3
+ * A one-shot beam between two screen points: a fading line by default, a fading
4
+ * repeating texture strip with `texture`. The sub-second ray flash - a zap, a laser,
5
+ * a life-link - where `LightningArc` is the persistent jittered geometry and
6
+ * `MultiTurnBeam` the multi-turn case.
7
+ *
8
+ * Fades from full to gone across `duration` and reports `done` exactly once, so a
9
+ * group can remove it without a second clock. `retarget` moves either endpoint for
10
+ * a beam tracking two moving points; z-order and parenting stay the caller's.
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * import { Beam } from '@datamoc/mw_games/two-d/render';
15
+ *
16
+ * const zap = new Beam({ x: 0, y: 0 }, { x: 100, y: 0 }, { colour: 0x88ccff, duration: 0.2 });
17
+ * const expired = zap.update(0.25);
18
+ * console.log(expired); // true - the instant it outlives its duration
19
+ * zap.destroy();
20
+ * ```
21
+ */
22
+ export class Beam extends Container {
23
+ constructor(from, to, options = {}) {
24
+ super();
25
+ this.elapsed = 0;
26
+ this.expired = false;
27
+ this.from = { ...from };
28
+ this.to = { ...to };
29
+ this.colour = options.colour ?? 0xffffff;
30
+ this.texture = options.texture;
31
+ this.thickness = options.width ?? 2;
32
+ this.duration = Math.max(1e-6, options.duration ?? 0.2);
33
+ if (this.texture) {
34
+ this.body = new TilingSprite({ texture: this.texture, width: 1, height: this.thickness });
35
+ }
36
+ else {
37
+ this.body = new Graphics();
38
+ }
39
+ if (options.additive ?? true)
40
+ this.body.blendMode = 'add';
41
+ this.addChild(this.body);
42
+ this.redraw();
43
+ }
44
+ /** 0 at launch, 1 at duration end */
45
+ get progress() {
46
+ return Math.min(1, this.elapsed / this.duration);
47
+ }
48
+ get done() {
49
+ return this.expired;
50
+ }
51
+ /** moves either endpoint, for a beam tracking two points that are themselves moving */
52
+ retarget(from, to) {
53
+ if (from)
54
+ this.from = { ...from };
55
+ if (to)
56
+ this.to = { ...to };
57
+ this.redraw();
58
+ }
59
+ /** @returns true the instant `duration` elapses, so a caller can remove the beam exactly once */
60
+ update(dt) {
61
+ if (this.expired)
62
+ return false;
63
+ this.elapsed += dt;
64
+ this.alpha = 1 - this.progress;
65
+ if (this.elapsed >= this.duration) {
66
+ this.expired = true;
67
+ return true;
68
+ }
69
+ return false;
70
+ }
71
+ destroy() {
72
+ this.removeChild(this.body);
73
+ this.body.destroy();
74
+ super.destroy();
75
+ }
76
+ redraw() {
77
+ const dx = this.to.x - this.from.x;
78
+ const dy = this.to.y - this.from.y;
79
+ const length = Math.hypot(dx, dy);
80
+ this.position.set(this.from.x, this.from.y);
81
+ this.rotation = length > 0 ? Math.atan2(dy, dx) : 0;
82
+ if (this.body instanceof TilingSprite) {
83
+ this.body.width = length;
84
+ this.body.height = this.thickness;
85
+ }
86
+ else {
87
+ const line = this.body;
88
+ line.clear();
89
+ line.moveTo(0, 0);
90
+ line.lineTo(length, 0);
91
+ line.stroke({ width: this.thickness, color: this.colour });
92
+ }
93
+ }
94
+ }
95
+ /**
96
+ * Owns the beams a game has flashing: one `add` per ray, one `update(dt)` fading
97
+ * them all and forgetting the finished ones, and no bookkeeping left to the caller.
98
+ * Beams are parented here and destroyed with their beam; z-order stays the caller's.
99
+ *
100
+ * @example
101
+ * ```ts
102
+ * import { Beams } from '@datamoc/mw_games/two-d/render';
103
+ * import type { Container2D } from '@datamoc/mw_games/two-d/render';
104
+ *
105
+ * declare const layer: Container2D;
106
+ *
107
+ * const beams = new Beams();
108
+ * layer.addChild(beams);
109
+ *
110
+ * beams.add({ x: 0, y: 0 }, { x: 100, y: 0 }, { colour: 0x88ccff });
111
+ * beams.update(1 / 60);
112
+ * console.log(beams.count); // 1 - still fading
113
+ * beams.clear();
114
+ * ```
115
+ */
116
+ export class Beams extends Container {
117
+ constructor() {
118
+ super(...arguments);
119
+ this.live = [];
120
+ }
121
+ /** flashes a beam between two points; it fades on `update` and removes itself at duration end */
122
+ add(from, to, options) {
123
+ const beam = new Beam(from, to, options);
124
+ this.addChild(beam);
125
+ this.live.push(beam);
126
+ return beam;
127
+ }
128
+ /** fades every live beam, then forgets and destroys the finished ones */
129
+ update(dt) {
130
+ for (let i = this.live.length - 1; i >= 0; i--) {
131
+ if (this.live[i].update(dt)) {
132
+ const [beam] = this.live.splice(i, 1);
133
+ this.removeChild(beam);
134
+ beam.destroy();
135
+ }
136
+ }
137
+ }
138
+ /** how many beams are still fading */
139
+ get count() {
140
+ return this.live.length;
141
+ }
142
+ /** drops every live beam at once - a scene change, say */
143
+ clear() {
144
+ for (const beam of this.live.splice(0)) {
145
+ this.removeChild(beam);
146
+ beam.destroy();
147
+ }
148
+ }
149
+ destroy() {
150
+ this.clear();
151
+ super.destroy();
152
+ }
153
+ }
154
+ //# sourceMappingURL=Beam.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Beam.js","sourceRoot":"","sources":["../../../src/two-d/render/Beam.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ import { Container } from 'pixi.js';
2
+ import { Projectile, type ProjectileOptions, type ProjectilePoint } from './Projectile.ts';
3
+ import type { Texture2D } from './Types2D.ts';
4
+ /** what a flight moves: position required, presentation optional and applied only when present */
5
+ export interface FlightSprite {
6
+ x: number;
7
+ y: number;
8
+ rotation?: number;
9
+ alpha?: number;
10
+ tint?: number;
11
+ }
12
+ export interface FlightOptions extends ProjectileOptions {
13
+ /** set once at launch, when the sprite takes a tint */
14
+ tint?: number;
15
+ /** radians per second added to the sprite's rotation while flying */
16
+ spin?: number;
17
+ /** seconds the sprite fades 0 to 1 from launch; 0 or omitted means no fade */
18
+ fadeIn?: number;
19
+ /**
20
+ * Dispatched once, when this flight arrives - never on `cancel()` or `clear()`,
21
+ * and after the flight has left the list, so an arrival that launches another
22
+ * flight cannot disturb the iteration it arrived in.
23
+ */
24
+ onArrive?: () => void;
25
+ }
26
+ export interface FlightHandle {
27
+ /** the flight's own tween: `progress`, `frame`, `done` */
28
+ readonly projectile: Projectile;
29
+ /** whether the flight has arrived */
30
+ readonly done: boolean;
31
+ /** forgets the flight without dispatching `onArrive`; a manager-built sprite is destroyed */
32
+ cancel(): void;
33
+ }
34
+ /**
35
+ * Owns the projectile flights a game has in the air: one `add` per shot, one
36
+ * `update(dt)` driving them all, `onArrive` dispatched exactly once per arrival,
37
+ * and no bookkeeping left to the caller.
38
+ *
39
+ * Ownership follows who made the sprite. A sprite you pass stays yours - the
40
+ * manager positions it but never parents or destroys it, so layering and scene
41
+ * teardown stay the caller's. A texture builds a manager sprite instead: parented
42
+ * here and destroyed on arrival, cancel or clear. Destroying the `Flights` node
43
+ * itself clears first, so manager-built sprites never outlive it.
44
+ *
45
+ * @example
46
+ * ```ts
47
+ * import { Flights } from '@datamoc/mw_games/two-d/render';
48
+ * import type { Container2D } from '@datamoc/mw_games/two-d/render';
49
+ *
50
+ * declare const layer: Container2D;
51
+ * declare const bolt: { x: number; y: number };
52
+ *
53
+ * const flights = new Flights();
54
+ * layer.addChild(flights);
55
+ *
56
+ * const flight = flights.add(bolt, { x: 0, y: 0 }, { x: 200, y: 0 }, {
57
+ * speed: 400,
58
+ * onArrive: () => console.log('hit'),
59
+ * });
60
+ * flights.update(1 / 60);
61
+ * console.log(flights.count, flight.done); // 1 false - still flying
62
+ * flight.cancel();
63
+ * flights.clear();
64
+ * ```
65
+ */
66
+ export declare class Flights extends Container {
67
+ private readonly live;
68
+ add(sprite: FlightSprite, from: ProjectilePoint, to: ProjectilePoint, options?: FlightOptions): FlightHandle;
69
+ add(texture: Texture2D, from: ProjectilePoint, to: ProjectilePoint, options?: FlightOptions): FlightHandle;
70
+ /** drives every live flight, then forgets the arrived ones (arrival first, callback after) */
71
+ update(dt: number): void;
72
+ /** how many flights are still in the air */
73
+ get count(): number;
74
+ /** drops every live flight at once without dispatching arrivals - a scene change, say */
75
+ clear(): void;
76
+ destroy(): void;
77
+ private release;
78
+ }
79
+ //# sourceMappingURL=Flights.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Flights.d.ts","sourceRoot":"","sources":["../../../src/two-d/render/Flights.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAmB,MAAM,SAAS,CAAC;AAErD,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC3F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,kGAAkG;AAClG,MAAM,WAAW,YAAY;IAC5B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAc,SAAQ,iBAAiB;IACvD,uDAAuD;IACvD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qEAAqE;IACrE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC5B,0DAA0D;IAC1D,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,qCAAqC;IACrC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,6FAA6F;IAC7F,MAAM,IAAI,IAAI,CAAC;CACf;AAaD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,qBAAa,OAAQ,SAAQ,SAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAoB;IAEzC,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,YAAY,CAAC;IAC7G,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,YAAY,CAAC;IAgD3G,8FAA8F;IAC9F,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAgBvB;IAED,4CAA4C;IAC5C,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,yFAAyF;IACzF,KAAK,IAAI,IAAI,CAEZ;IAEQ,OAAO,IAAI,IAAI,CAGvB;IAED,OAAO,CAAC,OAAO;CAKf"}