mani-game-engine 1.0.0-pre.3 → 1.0.0-pre.32

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.
@@ -1,12 +1,11 @@
1
- import { Action, Class, GameEnginePlugin, GameService, GameSystem, OnUpdateParams } from './types';
2
- import { Signal, SignalBinding } from 'mani-signal';
1
+ import { Action, Class, GameEnginePlugin, OnFixedUpdateParams, OnUpdateParams, Service, System } from './types';
2
+ import { Signal } from 'mani-signal';
3
3
  import { Entity } from './entity';
4
- import { ID } from 'mani-injector';
5
4
  import { EcsInjector } from './ecsInjector';
6
5
  import { Clock } from './clock';
6
+ import { ID } from './injector';
7
7
  declare const defaultOptions: {
8
8
  fixedDeltaTime: number;
9
- autoStart: boolean;
10
9
  plugins: GameEnginePlugin[];
11
10
  };
12
11
  export declare type GameEngineOptions = Partial<typeof defaultOptions>;
@@ -16,42 +15,68 @@ declare global {
16
15
  }
17
16
  }
18
17
  export declare class GameEngine {
19
- readonly injector: EcsInjector<Class<GameSystem>>;
18
+ readonly injector: EcsInjector<Class<System>>;
20
19
  readonly clock: Clock;
21
- readonly onRender: Signal<any>;
20
+ readonly onPrepare: Signal;
21
+ readonly onStart: Signal;
22
+ readonly onEnd: Signal;
23
+ readonly onRender: Signal<OnUpdateParams>;
22
24
  readonly onUpdate: Signal<OnUpdateParams>;
25
+ readonly onFixedUpdate: Signal<OnFixedUpdateParams>;
26
+ readonly onPrePhysicsUpdate: Signal<OnFixedUpdateParams>;
27
+ readonly onPhysicsUpdate: Signal<OnFixedUpdateParams>;
28
+ readonly onPostPhysicsUpdate: Signal<OnFixedUpdateParams>;
29
+ readonly onLateFixedUpdate: Signal<OnFixedUpdateParams>;
30
+ readonly onLateUpdate: Signal<OnUpdateParams>;
23
31
  private readonly onEarlyUpdateSet;
24
32
  private readonly onUpdateSet;
25
33
  private readonly onFixedUpdateSet;
26
34
  private readonly onPreFixedUpdateSet;
27
35
  private readonly onPhysicsUpdateSet;
36
+ private readonly onPrePhysicsUpdateSet;
28
37
  private readonly onPostPhysicsUpdateSet;
38
+ private readonly onLateFixedUpdateSet;
29
39
  private readonly onLateUpdateSet;
30
40
  private readonly onRenderUpdateSet;
31
41
  private readonly entitySystemMap;
42
+ private readonly serviceClasses;
43
+ private readonly services;
32
44
  private framePromise;
33
45
  private resolveFrame;
46
+ private addQueue;
47
+ private removeQueue;
48
+ private _started;
49
+ get started(): boolean;
34
50
  private _frameCount;
35
- readonly frameCount: number;
36
- readonly numEntities: number;
51
+ get frameCount(): number;
52
+ private _fixedFrameCount;
53
+ get fixedFrameCount(): number;
54
+ get numEntities(): number;
55
+ constructor(injector: EcsInjector<Class<System>>, clock: Clock);
37
56
  static createDefault(options?: GameEngineOptions): GameEngine;
38
- constructor(injector: EcsInjector<Class<GameSystem>>, clock: Clock);
57
+ static createDefaultWithInjector(injector: EcsInjector<Class<System>>, options?: GameEngineOptions): GameEngine;
58
+ addService(service: Service): void;
59
+ installPlugins(plugins: GameEnginePlugin[]): void;
60
+ registerSystem(systemClass: Class<System>): void;
61
+ registerService(serviceClass: Class<Service>): void;
62
+ getService<T extends Class<Service>>(serviceClass: T): InstanceType<T>;
63
+ start(): void;
39
64
  private setupClock;
40
- private installPlugins;
41
- registerSystem(systemClass: Class<GameSystem>): void;
42
- addService(service: GameService): void;
43
- private addQueue;
44
- private removeQueue;
45
- addEntity(entity: Entity): Promise<unknown>;
65
+ add(entity: Entity): Promise<void>;
46
66
  waitFrame(): Promise<any>;
47
- removeEntity(entity: Entity): Promise<unknown>;
48
- private prepareFrame;
67
+ remove(entity: Entity): Promise<void>;
68
+ stop(): void;
49
69
  runAction<T extends Action>(action: T): ReturnType<T>;
50
70
  getSignal<T>(signalId: ID): Signal<T>;
51
- signalMappings: Map<Class<any>, [string, Signal<any>][]>;
52
- signalMapBindings: Map<Object, SignalBinding[]>;
71
+ private signalMappings;
72
+ private staticSignalMappings;
73
+ private signalMapBindings;
74
+ private mapStaticAnnotatedSignals;
53
75
  private mapAnnotatedSignals;
54
76
  private unmapAnnotatedSignals;
55
77
  private getSignalMap;
78
+ private getStaticSignalMap;
79
+ dispose(): void;
80
+ private prepareFrame;
56
81
  }
57
82
  export {};
package/lib/gameEngine.js CHANGED
@@ -1,54 +1,127 @@
1
- import { Signal } from 'mani-signal';
2
- import { putIfAbsent } from 'mani-injector';
3
- import { EcsInjector, signalHandlers } from './ecsInjector';
4
- import { Clock } from './clock';
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GameEngine = void 0;
4
+ const types_1 = require("./types");
5
+ const ecsInjector_1 = require("./ecsInjector");
6
+ const clock_1 = require("./clock");
7
+ const injector_1 = require("./injector");
5
8
  const defaultOptions = {
6
9
  fixedDeltaTime: 1 / 60,
7
- autoStart: true,
8
10
  plugins: [],
9
11
  };
10
- export class GameEngine {
12
+ class GameEngine {
11
13
  constructor(injector, clock) {
12
14
  this.injector = injector;
13
15
  this.clock = clock;
14
- this.onRender = new Signal();
15
- this.onUpdate = new Signal();
16
16
  this.onEarlyUpdateSet = new Set();
17
17
  this.onUpdateSet = new Set();
18
18
  this.onFixedUpdateSet = new Set();
19
19
  this.onPreFixedUpdateSet = new Set();
20
20
  this.onPhysicsUpdateSet = new Set();
21
+ this.onPrePhysicsUpdateSet = new Set();
21
22
  this.onPostPhysicsUpdateSet = new Set();
23
+ this.onLateFixedUpdateSet = new Set();
22
24
  this.onLateUpdateSet = new Set();
23
25
  this.onRenderUpdateSet = new Set();
24
26
  this.entitySystemMap = new Map();
27
+ this.serviceClasses = new Set();
28
+ this.services = [];
25
29
  this.resolveFrame = () => undefined;
26
- this._frameCount = 0;
27
30
  this.addQueue = [];
28
31
  this.removeQueue = [];
32
+ this._started = false;
33
+ this._frameCount = 0;
34
+ this._fixedFrameCount = 0;
29
35
  this.signalMappings = new Map();
36
+ this.staticSignalMappings = new Map();
30
37
  this.signalMapBindings = new Map();
31
38
  this.injector.map(GameEngine).toValue(this);
39
+ this.onPrepare = this.injector.getSignal(types_1.EngineSignals.OnPrepare);
40
+ this.onStart = this.injector.getSignal(types_1.EngineSignals.OnStart);
41
+ this.onEnd = this.injector.getSignal(types_1.EngineSignals.OnEnd);
42
+ this.onRender = this.injector.getSignal(types_1.EngineSignals.OnRender);
43
+ this.onFixedUpdate = this.injector.getSignal(types_1.EngineSignals.OnFixedUpdate);
44
+ this.onUpdate = this.injector.getSignal(types_1.EngineSignals.OnUpdate);
45
+ this.onLateUpdate = this.injector.getSignal(types_1.EngineSignals.OnLateUpdate);
46
+ this.onPrePhysicsUpdate = this.injector.getSignal(types_1.EngineSignals.OnPrePhysicsUpdate);
47
+ this.onPhysicsUpdate = this.injector.getSignal(types_1.EngineSignals.OnPhysicsUpdate);
48
+ this.onPostPhysicsUpdate = this.injector.getSignal(types_1.EngineSignals.OnPostPhysicsUpdate);
49
+ this.onLateFixedUpdate = this.injector.getSignal(types_1.EngineSignals.onLateFixedUpdate);
32
50
  this.setupClock();
33
51
  this.prepareFrame();
34
52
  }
35
- get frameCount() {
36
- return this._frameCount;
37
- }
38
- get numEntities() {
39
- return 0;
40
- }
53
+ get started() { return this._started; }
54
+ get frameCount() { return this._frameCount; }
55
+ get fixedFrameCount() { return this._fixedFrameCount; }
56
+ get numEntities() { return this.entitySystemMap.size; }
41
57
  static createDefault(options) {
42
- const opts = Object.assign({}, defaultOptions, options);
43
- const clock = new Clock({
58
+ const opts = Object.assign(Object.assign({}, defaultOptions), options);
59
+ const clock = new clock_1.GameClock({
60
+ fixedDeltaTime: opts.fixedDeltaTime,
61
+ autoStart: false,
62
+ });
63
+ const injector = new ecsInjector_1.EcsInjector();
64
+ const engine = new GameEngine(injector, clock);
65
+ engine.installPlugins(opts.plugins);
66
+ return engine;
67
+ }
68
+ static createDefaultWithInjector(injector, options) {
69
+ const opts = Object.assign(Object.assign({}, defaultOptions), options);
70
+ const clock = new clock_1.GameClock({
44
71
  fixedDeltaTime: opts.fixedDeltaTime,
45
- autoStart: opts.autoStart
72
+ autoStart: false,
46
73
  });
47
- const injector = new EcsInjector();
48
74
  const engine = new GameEngine(injector, clock);
49
75
  engine.installPlugins(opts.plugins);
50
76
  return engine;
51
77
  }
78
+ addService(service) {
79
+ this.mapAnnotatedSignals(service);
80
+ service.onStart && service.onStart();
81
+ service.onPreFixedUpdate && this.onPreFixedUpdateSet.add(service);
82
+ service.onFixedUpdate && this.onFixedUpdateSet.add(service);
83
+ service.onUpdate && this.onUpdateSet.add(service);
84
+ service.onLateUpdate && this.onLateUpdateSet.add(service);
85
+ service.onPrePhysicsUpdate && this.onPrePhysicsUpdateSet.add(service);
86
+ service.onPhysicsUpdate && this.onPhysicsUpdateSet.add(service);
87
+ service.onPostPhysicsUpdate && this.onPostPhysicsUpdateSet.add(service);
88
+ service.onLateFixedUpdate && this.onLateFixedUpdateSet.add(service);
89
+ service.onRender && this.onRenderUpdateSet.add(service);
90
+ this.services.push(service);
91
+ }
92
+ installPlugins(plugins) {
93
+ plugins.forEach(plugin => {
94
+ plugin.onPrepare && plugin.onPrepare(this);
95
+ });
96
+ plugins.forEach(plugin => {
97
+ plugin.onStart && plugin.onStart(this);
98
+ });
99
+ }
100
+ registerSystem(systemClass) {
101
+ this.mapStaticAnnotatedSignals(systemClass);
102
+ if (this._started)
103
+ throw new Error('Register Systems before engine is started');
104
+ this.injector.registerSystem(systemClass);
105
+ }
106
+ registerService(serviceClass) {
107
+ this.mapStaticAnnotatedSignals(serviceClass);
108
+ if (this._started)
109
+ throw new Error('Register Services before engine is started');
110
+ this.injector.map(serviceClass).toSingleton();
111
+ this.serviceClasses.add(serviceClass);
112
+ }
113
+ getService(serviceClass) {
114
+ return this.injector.get(serviceClass);
115
+ }
116
+ start() {
117
+ this._started = true;
118
+ for (const serviceClass of this.serviceClasses) {
119
+ const service = this.injector.get(serviceClass);
120
+ this.addService(service);
121
+ }
122
+ this.clock.start();
123
+ this.onStart.dispatch();
124
+ }
52
125
  setupClock() {
53
126
  this.clock.onPrepare.add(this.prepareFrame, this);
54
127
  this.clock.onEarlyUpdate.add(({ time, deltaTime }) => {
@@ -56,122 +129,193 @@ export class GameEngine {
56
129
  system.onEarlyUpdate(time, deltaTime);
57
130
  }
58
131
  });
59
- this.clock.onFixedUpdate.add(({ time, deltaTime }) => {
132
+ this.clock.onFixedUpdate.add((params) => {
133
+ const { time, deltaTime } = params;
60
134
  for (const system of this.onPreFixedUpdateSet) {
61
- system.onPreFixedUpdate();
135
+ system.onPreFixedUpdate(time, deltaTime);
62
136
  }
63
137
  for (const system of this.onFixedUpdateSet) {
64
138
  system.onFixedUpdate(time, deltaTime);
65
139
  }
140
+ this.onFixedUpdate.dispatch(params);
66
141
  for (const system of this.onPhysicsUpdateSet) {
67
142
  system.onPhysicsUpdate(time, deltaTime);
68
143
  }
144
+ this.onPhysicsUpdate.dispatch(params);
145
+ this.onPostPhysicsUpdate.dispatch(params);
69
146
  for (const system of this.onPostPhysicsUpdateSet) {
70
147
  system.onPostPhysicsUpdate(time, deltaTime);
71
148
  }
149
+ this.onLateFixedUpdate.dispatch(params);
150
+ for (const system of this.onLateFixedUpdateSet) {
151
+ system.onLateFixedUpdate(time, deltaTime);
152
+ }
153
+ this._fixedFrameCount++;
72
154
  });
73
- this.clock.onUpdate.add(({ time, deltaTime, alpha }) => {
155
+ this.clock.onUpdate.add(onUpdateParams => {
156
+ const { time, deltaTime, alpha } = onUpdateParams;
74
157
  for (const system of this.onUpdateSet) {
75
158
  system.onUpdate(time, deltaTime, alpha);
76
159
  }
160
+ this.onUpdate.dispatch(onUpdateParams);
77
161
  for (const system of this.onLateUpdateSet) {
78
162
  system.onLateUpdate(time, deltaTime, alpha);
79
163
  }
80
- this.onUpdate.dispatch({ time, deltaTime, alpha });
164
+ this.onLateUpdate.dispatch(onUpdateParams);
81
165
  for (const system of this.onRenderUpdateSet) {
82
- system.onRender();
166
+ system.onRender(time, deltaTime, alpha);
83
167
  }
84
- this.onRender.dispatch();
168
+ this.onRender.dispatch(onUpdateParams);
85
169
  this._frameCount++;
86
170
  });
87
171
  }
88
- installPlugins(plugins) {
89
- plugins.forEach(plugin => {
90
- plugin.onPrepare && plugin.onPrepare(this);
91
- });
92
- plugins.forEach(plugin => {
93
- plugin.onStart && plugin.onStart(this);
94
- });
95
- }
96
- registerSystem(systemClass) {
97
- this.injector.registerSystem(systemClass);
98
- }
99
- addService(service) {
100
- this.mapAnnotatedSignals(service);
101
- service.onStart && service.onStart();
102
- service.onPreFixedUpdate && this.onPreFixedUpdateSet.add(service);
103
- service.onFixedUpdate && this.onFixedUpdateSet.add(service);
104
- service.onUpdate && this.onUpdateSet.add(service);
105
- service.onLateUpdate && this.onLateUpdateSet.add(service);
106
- service.onPhysicsUpdate && this.onPhysicsUpdateSet.add(service);
107
- service.onPostPhysicsUpdate && this.onPostPhysicsUpdateSet.add(service);
108
- service.onRender && this.onRenderUpdateSet.add(service);
109
- }
110
- addEntity(entity) {
111
- return new Promise(resolve => this.addQueue.push([entity.getAllChildren(), resolve]));
172
+ add(entity) {
173
+ return new Promise(resolve => this.addQueue.push([entity, resolve]));
112
174
  }
113
175
  waitFrame() {
114
176
  return this.framePromise;
115
177
  }
116
- async removeEntity(entity) {
178
+ async remove(entity) {
117
179
  if (entity.markRemoval)
118
180
  return;
119
181
  entity.markRemoval = true;
120
- return new Promise(resolve => this.removeQueue.push([entity.getAllChildren(), resolve]));
182
+ return new Promise(resolve => this.removeQueue.push([entity, resolve]));
183
+ }
184
+ stop() {
185
+ this.clock.stop();
186
+ }
187
+ runAction(action) {
188
+ return action(this);
189
+ }
190
+ getSignal(signalId) {
191
+ return this.injector.getSignal(signalId);
192
+ }
193
+ mapStaticAnnotatedSignals(target) {
194
+ let staticSignalMap = this.getStaticSignalMap(target);
195
+ if (staticSignalMap.length === 0)
196
+ return;
197
+ const bindings = [];
198
+ for (const [key, signal] of staticSignalMap) {
199
+ bindings.push(signal.add(target[key], target));
200
+ }
201
+ }
202
+ mapAnnotatedSignals(target) {
203
+ const signalMap = this.getSignalMap(target.constructor);
204
+ if (signalMap.length === 0)
205
+ return;
206
+ const bindings = [];
207
+ for (const [key, signal] of signalMap) {
208
+ bindings.push(signal.add(target[key], target));
209
+ }
210
+ this.signalMapBindings.set(target, bindings);
211
+ }
212
+ unmapAnnotatedSignals(target) {
213
+ const signalBindings = this.signalMapBindings.get(target);
214
+ if (!signalBindings)
215
+ return;
216
+ for (const binding of signalBindings) {
217
+ binding.detach();
218
+ }
219
+ }
220
+ getSignalMap(target) {
221
+ return (0, injector_1.putIfAbsent)(this.signalMappings, target, () => {
222
+ const handlers = ecsInjector_1.signalHandlers.get(target);
223
+ if (!handlers)
224
+ return [];
225
+ const result = [];
226
+ for (const [key, signalId] of handlers) {
227
+ result.push([key, this.getSignal(signalId)]);
228
+ }
229
+ return result;
230
+ });
231
+ }
232
+ getStaticSignalMap(target) {
233
+ return (0, injector_1.putIfAbsent)(this.staticSignalMappings, target, () => {
234
+ const handlers = ecsInjector_1.staticSignalHandlers.get(target);
235
+ if (!handlers)
236
+ return [];
237
+ const result = [];
238
+ for (const [key, signalId] of handlers) {
239
+ result.push([key, this.getSignal(signalId)]);
240
+ }
241
+ return result;
242
+ });
243
+ }
244
+ dispose() {
245
+ this.clock.stop();
246
+ this.clock.dispose();
247
+ for (const systems of this.entitySystemMap.values()) {
248
+ for (const system of systems) {
249
+ system.system.onEnd && system.system.onEnd();
250
+ }
251
+ }
252
+ for (const service of this.services) {
253
+ service.onEnd && service.onEnd();
254
+ }
255
+ this.onEnd.dispatch();
121
256
  }
122
257
  prepareFrame() {
123
- for (const [entities, resolve] of this.removeQueue) {
258
+ for (const [entity, resolve] of this.removeQueue) {
259
+ const entities = entity.getAllEntities();
124
260
  for (const entity of entities) {
125
261
  entity.markRemoval = false;
126
- if (!entity.gameEngine)
127
- throw new Error('Entity not active');
262
+ if (!entity.gameEngine) {
263
+ console.log(entity);
264
+ }
128
265
  entity.gameEngine = undefined;
129
- const systems = this.entitySystemMap.get(entity);
266
+ const systemContexts = this.entitySystemMap.get(entity);
130
267
  this.entitySystemMap.delete(entity);
131
- if (systems) {
132
- for (const system of systems) {
268
+ if (systemContexts) {
269
+ for (const context of systemContexts) {
270
+ context.dispose();
271
+ const system = context.system;
133
272
  this.unmapAnnotatedSignals(system);
134
273
  system.onEnd && system.onEnd();
135
274
  system.onPreFixedUpdate && this.onPreFixedUpdateSet.delete(system);
136
275
  system.onFixedUpdate && this.onFixedUpdateSet.delete(system);
137
- system.onEarlyUpdate && this.onEarlyUpdateSet.delete(system);
138
276
  system.onUpdate && this.onUpdateSet.delete(system);
139
277
  system.onLateUpdate && this.onLateUpdateSet.delete(system);
140
278
  system.onPhysicsUpdate && this.onPhysicsUpdateSet.delete(system);
279
+ system.onPrePhysicsUpdate && this.onPrePhysicsUpdateSet.delete(system);
141
280
  system.onPostPhysicsUpdate && this.onPostPhysicsUpdateSet.delete(system);
281
+ system.onLateFixedUpdate && this.onLateFixedUpdateSet.delete(system);
142
282
  system.onRender && this.onRenderUpdateSet.delete(system);
143
283
  }
144
284
  }
145
285
  entity.onRemove.dispatch();
286
+ entity.onRemove.detachAll();
146
287
  }
147
288
  resolve();
148
289
  }
149
290
  this.removeQueue = [];
150
- for (const [entities, resolve] of this.addQueue) {
291
+ for (const [entity, resolve] of this.addQueue) {
151
292
  const preparePromises = [];
152
- const newSystems = [];
293
+ const nexSystemContexts = [];
294
+ const entities = entity.getAllEntities();
153
295
  for (const entity of entities) {
154
296
  if (entity.gameEngine)
155
297
  throw new Error('Entity already added to a gameEngine');
156
298
  entity.gameEngine = this;
157
- const systems = this.injector.createSystems(entity);
158
- for (const system of systems) {
159
- system.onPrepare && preparePromises.push(system.onPrepare());
160
- newSystems.push(system);
299
+ const systemContexts = this.injector.createSystems(entity);
300
+ for (const context of systemContexts) {
301
+ context.system.onPrepare && preparePromises.push(context.system.onPrepare());
302
+ nexSystemContexts.push(context);
161
303
  }
162
- this.entitySystemMap.set(entity, systems);
304
+ this.entitySystemMap.set(entity, systemContexts);
163
305
  }
164
306
  const startSystems = () => {
165
- for (const system of newSystems) {
307
+ for (const context of nexSystemContexts) {
308
+ const system = context.system;
166
309
  this.mapAnnotatedSignals(system);
167
310
  system.onStart && system.onStart();
168
311
  system.onPreFixedUpdate && this.onPreFixedUpdateSet.add(system);
169
312
  system.onFixedUpdate && this.onFixedUpdateSet.add(system);
170
- system.onEarlyUpdate && this.onEarlyUpdateSet.add(system);
171
313
  system.onUpdate && this.onUpdateSet.add(system);
172
314
  system.onLateUpdate && this.onLateUpdateSet.add(system);
173
315
  system.onPhysicsUpdate && this.onPhysicsUpdateSet.add(system);
316
+ system.onPrePhysicsUpdate && this.onPrePhysicsUpdateSet.add(system);
174
317
  system.onPostPhysicsUpdate && this.onPostPhysicsUpdateSet.add(system);
318
+ system.onLateFixedUpdate && this.onLateFixedUpdateSet.add(system);
175
319
  system.onRender && this.onRenderUpdateSet.add(system);
176
320
  }
177
321
  resolve();
@@ -188,42 +332,8 @@ export class GameEngine {
188
332
  this.framePromise = new Promise(resolve => {
189
333
  this.resolveFrame = resolve;
190
334
  });
191
- }
192
- runAction(action) {
193
- return action(this);
194
- }
195
- getSignal(signalId) {
196
- return this.injector.getSignal(signalId);
197
- }
198
- mapAnnotatedSignals(target) {
199
- const signalMap = this.getSignalMap(target.constructor);
200
- if (signalMap.length === 0)
201
- return;
202
- const bindings = [];
203
- for (const [key, signal] of signalMap) {
204
- bindings.push(signal.add(target[key], target));
205
- }
206
- this.signalMapBindings.set(target, bindings);
207
- }
208
- unmapAnnotatedSignals(target) {
209
- const signalBindings = this.signalMapBindings.get(target);
210
- if (!signalBindings)
211
- return;
212
- for (const binding of signalBindings) {
213
- binding.detach();
214
- }
215
- }
216
- getSignalMap(target) {
217
- return putIfAbsent(this.signalMappings, target, () => {
218
- const handlers = signalHandlers.get(target);
219
- if (!handlers)
220
- return [];
221
- const result = [];
222
- for (const [key, signalId] of handlers) {
223
- result.push([key, this.getSignal(signalId)]);
224
- }
225
- return result;
226
- });
335
+ this.onPrepare.dispatch();
227
336
  }
228
337
  }
338
+ exports.GameEngine = GameEngine;
229
339
  //# sourceMappingURL=gameEngine.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gameEngine.js","sourceRoot":"","sources":["../src/gameEngine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gameEngine.js","sourceRoot":"","sources":["../src/gameEngine.ts"],"names":[],"mappings":"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"}
package/lib/index.d.ts CHANGED
@@ -1,6 +1,12 @@
1
- export * from './gameEngine';
2
- export * from './entity';
3
- export * from './types';
4
- export { EcsInjector, EntityComponent, GetComponent, GetEntity } from './ecsInjector';
5
- import { Inject, InjectId, Injector, InjectType } from 'mani-injector';
6
- export { Injector, InjectType, InjectId, Inject };
1
+ export { GameEngine, GameEngineOptions } from './gameEngine';
2
+ export { Entity } from './entity';
3
+ export { Action, AsyncAction, Class, CommandClass, EngineSignals, GameEnginePlugin, System, OnFixedUpdateParams, OnUpdateParams, OnEarlyUpdateParams, Service, } from './types';
4
+ export { Scope, SCOPE_CONTEXT, ScopeContext, OnScopeSignal, scopeSignalHandlers, ScopeSignalOptions, ScopeMapping, } from './scope/scopeContext';
5
+ export { SystemContext } from './systemContext';
6
+ export { EcsInjector, EntityComponent, GetComponent, GetEntity, GetContext, GetSignal, OnSignal } from './ecsInjector';
7
+ import { ID, Inject, InjectId, Injector, InjectType, putIfAbsent } from './injector';
8
+ import { Signal, SignalBinding, SignalCallback } from 'mani-signal';
9
+ import { Clock } from './clock';
10
+ export { Injector, InjectType, InjectId, Inject, putIfAbsent, ID };
11
+ export { Clock };
12
+ export { Signal, SignalBinding, SignalCallback };
package/lib/index.js CHANGED
@@ -1,6 +1,33 @@
1
- export * from './gameEngine';
2
- export * from './entity';
3
- export { EcsInjector, EntityComponent, GetComponent, GetEntity } from './ecsInjector';
4
- import { Inject, InjectId, Injector, InjectType } from 'mani-injector';
5
- export { Injector, InjectType, InjectId, Inject };
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Signal = exports.putIfAbsent = exports.Inject = exports.InjectId = exports.InjectType = exports.Injector = exports.OnSignal = exports.GetSignal = exports.GetContext = exports.GetEntity = exports.GetComponent = exports.EntityComponent = exports.EcsInjector = exports.SystemContext = exports.scopeSignalHandlers = exports.OnScopeSignal = exports.ScopeContext = exports.SCOPE_CONTEXT = exports.EngineSignals = exports.Entity = exports.GameEngine = void 0;
4
+ var gameEngine_1 = require("./gameEngine");
5
+ Object.defineProperty(exports, "GameEngine", { enumerable: true, get: function () { return gameEngine_1.GameEngine; } });
6
+ var entity_1 = require("./entity");
7
+ Object.defineProperty(exports, "Entity", { enumerable: true, get: function () { return entity_1.Entity; } });
8
+ var types_1 = require("./types");
9
+ Object.defineProperty(exports, "EngineSignals", { enumerable: true, get: function () { return types_1.EngineSignals; } });
10
+ var scopeContext_1 = require("./scope/scopeContext");
11
+ Object.defineProperty(exports, "SCOPE_CONTEXT", { enumerable: true, get: function () { return scopeContext_1.SCOPE_CONTEXT; } });
12
+ Object.defineProperty(exports, "ScopeContext", { enumerable: true, get: function () { return scopeContext_1.ScopeContext; } });
13
+ Object.defineProperty(exports, "OnScopeSignal", { enumerable: true, get: function () { return scopeContext_1.OnScopeSignal; } });
14
+ Object.defineProperty(exports, "scopeSignalHandlers", { enumerable: true, get: function () { return scopeContext_1.scopeSignalHandlers; } });
15
+ var systemContext_1 = require("./systemContext");
16
+ Object.defineProperty(exports, "SystemContext", { enumerable: true, get: function () { return systemContext_1.SystemContext; } });
17
+ var ecsInjector_1 = require("./ecsInjector");
18
+ Object.defineProperty(exports, "EcsInjector", { enumerable: true, get: function () { return ecsInjector_1.EcsInjector; } });
19
+ Object.defineProperty(exports, "EntityComponent", { enumerable: true, get: function () { return ecsInjector_1.EntityComponent; } });
20
+ Object.defineProperty(exports, "GetComponent", { enumerable: true, get: function () { return ecsInjector_1.GetComponent; } });
21
+ Object.defineProperty(exports, "GetEntity", { enumerable: true, get: function () { return ecsInjector_1.GetEntity; } });
22
+ Object.defineProperty(exports, "GetContext", { enumerable: true, get: function () { return ecsInjector_1.GetContext; } });
23
+ Object.defineProperty(exports, "GetSignal", { enumerable: true, get: function () { return ecsInjector_1.GetSignal; } });
24
+ Object.defineProperty(exports, "OnSignal", { enumerable: true, get: function () { return ecsInjector_1.OnSignal; } });
25
+ const injector_1 = require("./injector");
26
+ Object.defineProperty(exports, "Inject", { enumerable: true, get: function () { return injector_1.Inject; } });
27
+ Object.defineProperty(exports, "InjectId", { enumerable: true, get: function () { return injector_1.InjectId; } });
28
+ Object.defineProperty(exports, "Injector", { enumerable: true, get: function () { return injector_1.Injector; } });
29
+ Object.defineProperty(exports, "InjectType", { enumerable: true, get: function () { return injector_1.InjectType; } });
30
+ Object.defineProperty(exports, "putIfAbsent", { enumerable: true, get: function () { return injector_1.putIfAbsent; } });
31
+ const mani_signal_1 = require("mani-signal");
32
+ Object.defineProperty(exports, "Signal", { enumerable: true, get: function () { return mani_signal_1.Signal; } });
6
33
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AAEzB,OAAO,EAAC,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,SAAS,EAAC,MAAM,eAAe,CAAC;AAGpF,OAAO,EAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAC,MAAM,eAAe,CAAC;AAErE,OAAO,EAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,2CAA2D;AAAnD,wGAAA,UAAU,OAAA;AAClB,mCAAgC;AAAxB,gGAAA,MAAM,OAAA;AACd,iCAYiB;AAPb,sGAAA,aAAa,OAAA;AAQjB,qDAE8B;AADnB,6GAAA,aAAa,OAAA;AAAE,4GAAA,YAAY,OAAA;AAAE,6GAAA,aAAa,OAAA;AAAE,mHAAA,mBAAmB,OAAA;AAE1E,iDAA8C;AAAtC,8GAAA,aAAa,OAAA;AACrB,6CAAqH;AAA7G,0GAAA,WAAW,OAAA;AAAE,8GAAA,eAAe,OAAA;AAAE,2GAAA,YAAY,OAAA;AAAE,wGAAA,SAAS,OAAA;AAAE,yGAAA,UAAU,OAAA;AAAE,wGAAA,SAAS,OAAA;AAAE,uGAAA,QAAQ,OAAA;AAI9F,yCAAmF;AAI3C,uFAJ5B,iBAAM,OAI4B;AAAhB,yFAJV,mBAAQ,OAIU;AAA9B,yFAJsB,mBAAQ,OAItB;AAAE,2FAJsB,qBAAU,OAItB;AAAoB,4FAJI,sBAAW,OAIJ;AAH3D,6CAAkE;AAO1D,uFAPA,oBAAM,OAOA"}