mani-game-engine 1.0.0-pre.2 → 1.0.0-pre.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/gameEngine.js CHANGED
@@ -1,229 +1,331 @@
1
- import { Signal } from 'mani-signal';
2
- import { GameClock } from 'mani-game-clock/lib/gameClock';
3
- import { putIfAbsent } from 'mani-injector';
4
- import { EcsInjector, signalHandlers } from './ecsInjector';
5
- const defaultOptions = {
6
- fixedDeltaTime: 1 / 60,
7
- autoStart: true,
8
- plugins: [],
9
- };
10
- export class GameEngine {
11
- constructor(injector, clock) {
12
- this.injector = injector;
13
- this.clock = clock;
14
- this.onRender = new Signal();
15
- this.onUpdate = new Signal();
16
- this.onEarlyUpdateSet = new Set();
17
- this.onUpdateSet = new Set();
18
- this.onFixedUpdateSet = new Set();
19
- this.onPreFixedUpdateSet = new Set();
20
- this.onPhysicsUpdateSet = new Set();
21
- this.onPostPhysicsUpdateSet = new Set();
22
- this.onLateUpdateSet = new Set();
23
- this.onRenderUpdateSet = new Set();
24
- this.entitySystemMap = new Map();
25
- this.resolveFrame = () => undefined;
26
- this._frameCount = 0;
27
- this.addQueue = [];
28
- this.removeQueue = [];
29
- this.signalMappings = new Map();
30
- this.signalMapBindings = new Map();
31
- this.injector.map(GameEngine).toValue(this);
32
- this.setupClock();
33
- this.prepareFrame();
34
- }
35
- get frameCount() {
36
- return this._frameCount;
37
- }
38
- get numEntities() {
39
- return 0;
40
- }
41
- static createDefault(options) {
42
- const opts = Object.assign({}, defaultOptions, options);
43
- const clock = new GameClock({
44
- fixedDeltaTime: opts.fixedDeltaTime,
45
- autoStart: opts.autoStart
46
- });
47
- const injector = new EcsInjector();
48
- const engine = new GameEngine(injector, clock);
49
- engine.installPlugins(opts.plugins);
50
- return engine;
51
- }
52
- setupClock() {
53
- this.clock.onPrepare.add(this.prepareFrame, this);
54
- this.clock.onEarlyUpdate.add(({ time, deltaTime }) => {
55
- for (const system of this.onEarlyUpdateSet) {
56
- system.onEarlyUpdate(time, deltaTime);
57
- }
58
- });
59
- this.clock.onFixedUpdate.add(({ time, deltaTime }) => {
60
- for (const system of this.onPreFixedUpdateSet) {
61
- system.onPreFixedUpdate();
62
- }
63
- for (const system of this.onFixedUpdateSet) {
64
- system.onFixedUpdate(time, deltaTime);
65
- }
66
- for (const system of this.onPhysicsUpdateSet) {
67
- system.onPhysicsUpdate(time, deltaTime);
68
- }
69
- for (const system of this.onPostPhysicsUpdateSet) {
70
- system.onPostPhysicsUpdate(time, deltaTime);
71
- }
72
- });
73
- this.clock.onUpdate.add(({ time, deltaTime, alpha }) => {
74
- for (const system of this.onUpdateSet) {
75
- system.onUpdate(time, deltaTime, alpha);
76
- }
77
- for (const system of this.onLateUpdateSet) {
78
- system.onLateUpdate(time, deltaTime, alpha);
79
- }
80
- this.onUpdate.dispatch({ time, deltaTime, alpha });
81
- for (const system of this.onRenderUpdateSet) {
82
- system.onRender();
83
- }
84
- this.onRender.dispatch();
85
- this._frameCount++;
86
- });
87
- }
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]));
112
- }
113
- waitFrame() {
114
- return this.framePromise;
115
- }
116
- async removeEntity(entity) {
117
- if (entity.markRemoval)
118
- return;
119
- entity.markRemoval = true;
120
- return new Promise(resolve => this.removeQueue.push([entity.getAllChildren(), resolve]));
121
- }
122
- prepareFrame() {
123
- for (const [entities, resolve] of this.removeQueue) {
124
- for (const entity of entities) {
125
- entity.markRemoval = false;
126
- if (!entity.gameEngine)
127
- throw new Error('Entity not active');
128
- entity.gameEngine = undefined;
129
- const systems = this.entitySystemMap.get(entity);
130
- this.entitySystemMap.delete(entity);
131
- if (systems) {
132
- for (const system of systems) {
133
- this.unmapAnnotatedSignals(system);
134
- system.onEnd && system.onEnd();
135
- system.onPreFixedUpdate && this.onPreFixedUpdateSet.delete(system);
136
- system.onFixedUpdate && this.onFixedUpdateSet.delete(system);
137
- system.onEarlyUpdate && this.onEarlyUpdateSet.delete(system);
138
- system.onUpdate && this.onUpdateSet.delete(system);
139
- system.onLateUpdate && this.onLateUpdateSet.delete(system);
140
- system.onPhysicsUpdate && this.onPhysicsUpdateSet.delete(system);
141
- system.onPostPhysicsUpdate && this.onPostPhysicsUpdateSet.delete(system);
142
- system.onRender && this.onRenderUpdateSet.delete(system);
143
- }
144
- }
145
- entity.onRemove.dispatch();
146
- }
147
- resolve();
148
- }
149
- this.removeQueue = [];
150
- for (const [entities, resolve] of this.addQueue) {
151
- const preparePromises = [];
152
- const newSystems = [];
153
- for (const entity of entities) {
154
- if (entity.gameEngine)
155
- throw new Error('Entity already added to a gameEngine');
156
- 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);
161
- }
162
- this.entitySystemMap.set(entity, systems);
163
- }
164
- const startSystems = () => {
165
- for (const system of newSystems) {
166
- this.mapAnnotatedSignals(system);
167
- system.onStart && system.onStart();
168
- system.onPreFixedUpdate && this.onPreFixedUpdateSet.add(system);
169
- system.onFixedUpdate && this.onFixedUpdateSet.add(system);
170
- system.onEarlyUpdate && this.onEarlyUpdateSet.add(system);
171
- system.onUpdate && this.onUpdateSet.add(system);
172
- system.onLateUpdate && this.onLateUpdateSet.add(system);
173
- system.onPhysicsUpdate && this.onPhysicsUpdateSet.add(system);
174
- system.onPostPhysicsUpdate && this.onPostPhysicsUpdateSet.add(system);
175
- system.onRender && this.onRenderUpdateSet.add(system);
176
- }
177
- resolve();
178
- };
179
- if (preparePromises.length === 0) {
180
- startSystems();
181
- }
182
- else {
183
- Promise.all(preparePromises).then(startSystems);
184
- }
185
- }
186
- this.addQueue = [];
187
- this.resolveFrame();
188
- this.framePromise = new Promise(resolve => {
189
- this.resolveFrame = resolve;
190
- });
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
- });
227
- }
228
- }
1
+ import { EngineSignals } from './types';
2
+ import { putIfAbsent } from 'mani-injector';
3
+ import { EcsInjector, signalHandlers, staticSignalHandlers } from './ecsInjector';
4
+ import { GameClock } from './clock';
5
+ const defaultOptions = {
6
+ fixedDeltaTime: 1 / 60,
7
+ plugins: [],
8
+ };
9
+ export class GameEngine {
10
+ constructor(injector, clock) {
11
+ this.injector = injector;
12
+ this.clock = clock;
13
+ this.onEarlyUpdateSet = new Set();
14
+ this.onUpdateSet = new Set();
15
+ this.onFixedUpdateSet = new Set();
16
+ this.onPreFixedUpdateSet = new Set();
17
+ this.onPhysicsUpdateSet = new Set();
18
+ this.onPostPhysicsUpdateSet = new Set();
19
+ this.onLateFixedUpdateSet = new Set();
20
+ this.onLateUpdateSet = new Set();
21
+ this.onRenderUpdateSet = new Set();
22
+ this.entitySystemMap = new Map();
23
+ this.serviceClasses = new Set();
24
+ this.services = [];
25
+ this.resolveFrame = () => undefined;
26
+ this.addQueue = [];
27
+ this.removeQueue = [];
28
+ this._started = false;
29
+ this._frameCount = 0;
30
+ this._fixedFrameCount = 0;
31
+ this.signalMappings = new Map();
32
+ this.staticSignalMappings = new Map();
33
+ this.signalMapBindings = new Map();
34
+ this.injector.map(GameEngine).toValue(this);
35
+ this.onPrepare = this.injector.getSignal(EngineSignals.OnPrepare);
36
+ this.onStart = this.injector.getSignal(EngineSignals.OnStart);
37
+ this.onEnd = this.injector.getSignal(EngineSignals.OnEnd);
38
+ this.onRender = this.injector.getSignal(EngineSignals.OnRender);
39
+ this.onFixedUpdate = this.injector.getSignal(EngineSignals.OnFixedUpdate);
40
+ this.onUpdate = this.injector.getSignal(EngineSignals.OnUpdate);
41
+ this.onLateUpdate = this.injector.getSignal(EngineSignals.OnLateUpdate);
42
+ this.onPrePhysicsUpdate = this.injector.getSignal(EngineSignals.OnPostPhysics);
43
+ this.onPostPhysicsUpdate = this.injector.getSignal(EngineSignals.OnPostPhysics);
44
+ this.onLateFixedUpdate = this.injector.getSignal(EngineSignals.onLateFixedUpdate);
45
+ this.setupClock();
46
+ this.prepareFrame();
47
+ }
48
+ get started() { return this._started; }
49
+ get frameCount() { return this._frameCount; }
50
+ get fixedFrameCount() { return this._fixedFrameCount; }
51
+ get numEntities() { return this.entitySystemMap.size; }
52
+ static createDefault(options) {
53
+ const opts = Object.assign(Object.assign({}, defaultOptions), options);
54
+ const clock = new GameClock({
55
+ fixedDeltaTime: opts.fixedDeltaTime,
56
+ autoStart: false,
57
+ });
58
+ const injector = new EcsInjector();
59
+ const engine = new GameEngine(injector, clock);
60
+ engine.installPlugins(opts.plugins);
61
+ return engine;
62
+ }
63
+ static createDefaultWithInjector(injector, options) {
64
+ const opts = Object.assign(Object.assign({}, defaultOptions), options);
65
+ const clock = new GameClock({
66
+ fixedDeltaTime: opts.fixedDeltaTime,
67
+ autoStart: false,
68
+ });
69
+ const engine = new GameEngine(injector, clock);
70
+ engine.installPlugins(opts.plugins);
71
+ return engine;
72
+ }
73
+ addService(service) {
74
+ this.mapAnnotatedSignals(service);
75
+ service.onStart && service.onStart();
76
+ service.onPreFixedUpdate && this.onPreFixedUpdateSet.add(service);
77
+ service.onFixedUpdate && this.onFixedUpdateSet.add(service);
78
+ service.onUpdate && this.onUpdateSet.add(service);
79
+ service.onLateUpdate && this.onLateUpdateSet.add(service);
80
+ service.onPhysicsUpdate && this.onPhysicsUpdateSet.add(service);
81
+ service.onPostPhysicsUpdate && this.onPostPhysicsUpdateSet.add(service);
82
+ service.onLateFixedUpdate && this.onLateFixedUpdateSet.add(service);
83
+ service.onRender && this.onRenderUpdateSet.add(service);
84
+ this.services.push(service);
85
+ }
86
+ installPlugins(plugins) {
87
+ plugins.forEach(plugin => {
88
+ plugin.onPrepare && plugin.onPrepare(this);
89
+ });
90
+ plugins.forEach(plugin => {
91
+ plugin.onStart && plugin.onStart(this);
92
+ });
93
+ }
94
+ registerSystem(systemClass) {
95
+ this.mapStaticAnnotatedSignals(systemClass);
96
+ if (this._started)
97
+ throw new Error('Register Systems before engine is started');
98
+ this.injector.registerSystem(systemClass);
99
+ }
100
+ registerService(serviceClass) {
101
+ this.mapStaticAnnotatedSignals(serviceClass);
102
+ if (this._started)
103
+ throw new Error('Register Services before engine is started');
104
+ this.injector.map(serviceClass).toSingleton();
105
+ this.serviceClasses.add(serviceClass);
106
+ }
107
+ getService(serviceClass) {
108
+ return this.injector.get(serviceClass);
109
+ }
110
+ start() {
111
+ this._started = true;
112
+ for (const serviceClass of this.serviceClasses) {
113
+ const service = this.injector.get(serviceClass);
114
+ this.addService(service);
115
+ }
116
+ this.clock.start();
117
+ this.onStart.dispatch();
118
+ }
119
+ setupClock() {
120
+ this.clock.onPrepare.add(this.prepareFrame, this);
121
+ this.clock.onEarlyUpdate.add(({ time, deltaTime }) => {
122
+ for (const system of this.onEarlyUpdateSet) {
123
+ system.onEarlyUpdate(time, deltaTime);
124
+ }
125
+ });
126
+ this.clock.onFixedUpdate.add((params) => {
127
+ const { time, deltaTime } = params;
128
+ for (const system of this.onPreFixedUpdateSet) {
129
+ system.onPreFixedUpdate(time, deltaTime);
130
+ }
131
+ for (const system of this.onFixedUpdateSet) {
132
+ system.onFixedUpdate(time, deltaTime);
133
+ }
134
+ this.onFixedUpdate.dispatch(params);
135
+ for (const system of this.onPhysicsUpdateSet) {
136
+ system.onPhysicsUpdate(time, deltaTime);
137
+ }
138
+ this.onPostPhysicsUpdate.dispatch(params);
139
+ for (const system of this.onPostPhysicsUpdateSet) {
140
+ system.onPostPhysicsUpdate(time, deltaTime);
141
+ }
142
+ this.onLateFixedUpdate.dispatch(params);
143
+ for (const system of this.onLateFixedUpdateSet) {
144
+ system.onLateFixedUpdate(time, deltaTime);
145
+ }
146
+ this._fixedFrameCount++;
147
+ });
148
+ this.clock.onUpdate.add(onUpdateParams => {
149
+ const { time, deltaTime, alpha } = onUpdateParams;
150
+ for (const system of this.onUpdateSet) {
151
+ system.onUpdate(time, deltaTime, alpha);
152
+ }
153
+ this.onUpdate.dispatch(onUpdateParams);
154
+ for (const system of this.onLateUpdateSet) {
155
+ system.onLateUpdate(time, deltaTime, alpha);
156
+ }
157
+ this.onLateUpdate.dispatch(onUpdateParams);
158
+ for (const system of this.onRenderUpdateSet) {
159
+ system.onRender(time, deltaTime, alpha);
160
+ }
161
+ this.onRender.dispatch(onUpdateParams);
162
+ this._frameCount++;
163
+ });
164
+ }
165
+ add(entity) {
166
+ return new Promise(resolve => this.addQueue.push([entity, resolve]));
167
+ }
168
+ waitFrame() {
169
+ return this.framePromise;
170
+ }
171
+ async remove(entity) {
172
+ if (entity.markRemoval)
173
+ return;
174
+ entity.markRemoval = true;
175
+ return new Promise(resolve => this.removeQueue.push([entity, resolve]));
176
+ }
177
+ stop() {
178
+ this.clock.stop();
179
+ }
180
+ runAction(action) {
181
+ return action(this);
182
+ }
183
+ getSignal(signalId) {
184
+ return this.injector.getSignal(signalId);
185
+ }
186
+ mapStaticAnnotatedSignals(target) {
187
+ let staticSignalMap = this.getStaticSignalMap(target);
188
+ if (staticSignalMap.length === 0)
189
+ return;
190
+ const bindings = [];
191
+ for (const [key, signal] of staticSignalMap) {
192
+ bindings.push(signal.add(target[key], target));
193
+ }
194
+ }
195
+ mapAnnotatedSignals(target) {
196
+ const signalMap = this.getSignalMap(target.constructor);
197
+ if (signalMap.length === 0)
198
+ return;
199
+ const bindings = [];
200
+ for (const [key, signal] of signalMap) {
201
+ bindings.push(signal.add(target[key], target));
202
+ }
203
+ this.signalMapBindings.set(target, bindings);
204
+ }
205
+ unmapAnnotatedSignals(target) {
206
+ const signalBindings = this.signalMapBindings.get(target);
207
+ if (!signalBindings)
208
+ return;
209
+ for (const binding of signalBindings) {
210
+ binding.detach();
211
+ }
212
+ }
213
+ getSignalMap(target) {
214
+ return putIfAbsent(this.signalMappings, target, () => {
215
+ const handlers = signalHandlers.get(target);
216
+ if (!handlers)
217
+ return [];
218
+ const result = [];
219
+ for (const [key, signalId] of handlers) {
220
+ result.push([key, this.getSignal(signalId)]);
221
+ }
222
+ return result;
223
+ });
224
+ }
225
+ getStaticSignalMap(target) {
226
+ return putIfAbsent(this.staticSignalMappings, target, () => {
227
+ const handlers = staticSignalHandlers.get(target);
228
+ if (!handlers)
229
+ return [];
230
+ const result = [];
231
+ for (const [key, signalId] of handlers) {
232
+ result.push([key, this.getSignal(signalId)]);
233
+ }
234
+ return result;
235
+ });
236
+ }
237
+ dispose() {
238
+ this.clock.stop();
239
+ this.clock.dispose();
240
+ for (const systems of this.entitySystemMap.values()) {
241
+ for (const system of systems) {
242
+ system.system.onEnd && system.system.onEnd();
243
+ }
244
+ }
245
+ for (const service of this.services) {
246
+ service.onEnd && service.onEnd();
247
+ }
248
+ this.onEnd.dispatch();
249
+ }
250
+ prepareFrame() {
251
+ for (const [entity, resolve] of this.removeQueue) {
252
+ const entities = entity.getAllEntities();
253
+ for (const entity of entities) {
254
+ entity.markRemoval = false;
255
+ if (!entity.gameEngine) {
256
+ console.log(entity);
257
+ }
258
+ entity.gameEngine = undefined;
259
+ const systemContexts = this.entitySystemMap.get(entity);
260
+ this.entitySystemMap.delete(entity);
261
+ if (systemContexts) {
262
+ for (const context of systemContexts) {
263
+ context.dispose();
264
+ const system = context.system;
265
+ this.unmapAnnotatedSignals(system);
266
+ system.onEnd && system.onEnd();
267
+ system.onPreFixedUpdate && this.onPreFixedUpdateSet.delete(system);
268
+ system.onFixedUpdate && this.onFixedUpdateSet.delete(system);
269
+ system.onEarlyUpdate && this.onEarlyUpdateSet.delete(system);
270
+ system.onUpdate && this.onUpdateSet.delete(system);
271
+ system.onLateUpdate && this.onLateUpdateSet.delete(system);
272
+ system.onPhysicsUpdate && this.onPhysicsUpdateSet.delete(system);
273
+ system.onPostPhysicsUpdate && this.onPostPhysicsUpdateSet.delete(system);
274
+ system.onLateFixedUpdate && this.onLateFixedUpdateSet.delete(system);
275
+ system.onRender && this.onRenderUpdateSet.delete(system);
276
+ }
277
+ }
278
+ entity.onRemove.dispatch();
279
+ entity.onRemove.detachAll();
280
+ }
281
+ resolve();
282
+ }
283
+ this.removeQueue = [];
284
+ for (const [entity, resolve] of this.addQueue) {
285
+ const preparePromises = [];
286
+ const nexSystemContexts = [];
287
+ const entities = entity.getAllEntities();
288
+ for (const entity of entities) {
289
+ if (entity.gameEngine)
290
+ throw new Error('Entity already added to a gameEngine');
291
+ entity.gameEngine = this;
292
+ const systemContexts = this.injector.createSystems(entity);
293
+ for (const context of systemContexts) {
294
+ context.system.onPrepare && preparePromises.push(context.system.onPrepare());
295
+ nexSystemContexts.push(context);
296
+ }
297
+ this.entitySystemMap.set(entity, systemContexts);
298
+ }
299
+ const startSystems = () => {
300
+ for (const context of nexSystemContexts) {
301
+ const system = context.system;
302
+ this.mapAnnotatedSignals(system);
303
+ system.onStart && system.onStart();
304
+ system.onPreFixedUpdate && this.onPreFixedUpdateSet.add(system);
305
+ system.onFixedUpdate && this.onFixedUpdateSet.add(system);
306
+ system.onEarlyUpdate && this.onEarlyUpdateSet.add(system);
307
+ system.onUpdate && this.onUpdateSet.add(system);
308
+ system.onLateUpdate && this.onLateUpdateSet.add(system);
309
+ system.onPhysicsUpdate && this.onPhysicsUpdateSet.add(system);
310
+ system.onPostPhysicsUpdate && this.onPostPhysicsUpdateSet.add(system);
311
+ system.onLateFixedUpdate && this.onLateFixedUpdateSet.add(system);
312
+ system.onRender && this.onRenderUpdateSet.add(system);
313
+ }
314
+ resolve();
315
+ };
316
+ if (preparePromises.length === 0) {
317
+ startSystems();
318
+ }
319
+ else {
320
+ Promise.all(preparePromises).then(startSystems);
321
+ }
322
+ }
323
+ this.addQueue = [];
324
+ this.resolveFrame();
325
+ this.framePromise = new Promise(resolve => {
326
+ this.resolveFrame = resolve;
327
+ });
328
+ this.onPrepare.dispatch();
329
+ }
330
+ }
229
331
  //# 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 * from './gameEngine';
2
+ export * from './entity';
3
+ export * from './types';
4
+ export * from './scope/scopeContext';
5
+ export * from './systemContext';
6
+ export { EcsInjector, EntityComponent, GetComponent, GetEntity, GetContext, GetSignal, OnSignal } from './ecsInjector';
7
+ import { ID, Inject, InjectId, Injector, InjectType, putIfAbsent } from 'mani-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 };