mani-game-engine 1.0.0-pre.84 → 1.0.0-pre.85
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.d.ts +2 -0
- package/lib/gameEngine.js +49 -19
- package/lib/gameEngine.js.map +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.js +1 -2
- package/lib/index.js.map +1 -1
- package/lib/types.d.ts +1 -1
- package/lib/types.js +1 -1
- package/lib/types.js.map +1 -1
- package/package.json +3 -3
- package/src/gameEngine.ts +56 -25
- package/src/index.ts +2 -2
- package/src/types.ts +1 -1
package/lib/gameEngine.d.ts
CHANGED
|
@@ -81,7 +81,9 @@ export declare class GameEngine {
|
|
|
81
81
|
private signalMappings;
|
|
82
82
|
private staticSignalMappings;
|
|
83
83
|
private signalMapBindings;
|
|
84
|
+
private staticSignalMapBindings;
|
|
84
85
|
private mapStaticAnnotatedSignals;
|
|
86
|
+
private unmapStaticAnnotatedSignals;
|
|
85
87
|
private mapAnnotatedSignals;
|
|
86
88
|
private unmapAnnotatedSignals;
|
|
87
89
|
private getSignalMap;
|
package/lib/gameEngine.js
CHANGED
|
@@ -45,6 +45,7 @@ class GameEngine {
|
|
|
45
45
|
this.signalMappings = new Map();
|
|
46
46
|
this.staticSignalMappings = new Map();
|
|
47
47
|
this.signalMapBindings = new Map();
|
|
48
|
+
this.staticSignalMapBindings = new Map();
|
|
48
49
|
this.injector.map(GameEngine).toValue(this);
|
|
49
50
|
this.onPrepare = this.injector.getSignal(types_1.EngineSignals.OnPrepare);
|
|
50
51
|
this.onStart = this.injector.getSignal(types_1.EngineSignals.OnStart);
|
|
@@ -56,7 +57,7 @@ class GameEngine {
|
|
|
56
57
|
this.onPrePhysicsUpdate = this.injector.getSignal(types_1.EngineSignals.OnPrePhysicsUpdate);
|
|
57
58
|
this.onPhysicsUpdate = this.injector.getSignal(types_1.EngineSignals.OnPhysicsUpdate);
|
|
58
59
|
this.onPostPhysicsUpdate = this.injector.getSignal(types_1.EngineSignals.OnPostPhysicsUpdate);
|
|
59
|
-
this.onLateFixedUpdate = this.injector.getSignal(types_1.EngineSignals.
|
|
60
|
+
this.onLateFixedUpdate = this.injector.getSignal(types_1.EngineSignals.OnLateFixedUpdate);
|
|
60
61
|
this.onAddEntity = this.injector.getSignal(types_1.EngineSignals.OnAddEntity);
|
|
61
62
|
this.onRemoveEntity = this.injector.getSignal(types_1.EngineSignals.OnRemoveEntity);
|
|
62
63
|
this.setupClock();
|
|
@@ -100,6 +101,7 @@ class GameEngine {
|
|
|
100
101
|
addService(service) {
|
|
101
102
|
this.mapAnnotatedSignals(service);
|
|
102
103
|
service.onStart && service.onStart();
|
|
104
|
+
service.onEarlyUpdate && this.onEarlyUpdateSet.add(service);
|
|
103
105
|
service.onPreFixedUpdate && this.onPreFixedUpdateSet.add(service);
|
|
104
106
|
service.onFixedUpdate && this.onFixedUpdateSet.add(service);
|
|
105
107
|
service.onUpdate && this.onUpdateSet.add(service);
|
|
@@ -119,6 +121,7 @@ class GameEngine {
|
|
|
119
121
|
return;
|
|
120
122
|
this.services.splice(index, 1);
|
|
121
123
|
this.unmapAnnotatedSignals(service);
|
|
124
|
+
service.onEarlyUpdate && this.onEarlyUpdateSet.delete(service);
|
|
122
125
|
service.onPreFixedUpdate && this.onPreFixedUpdateSet.delete(service);
|
|
123
126
|
service.onFixedUpdate && this.onFixedUpdateSet.delete(service);
|
|
124
127
|
service.onUpdate && this.onUpdateSet.delete(service);
|
|
@@ -186,6 +189,10 @@ class GameEngine {
|
|
|
186
189
|
for (const system of this.onFixedUpdateSet) {
|
|
187
190
|
system.onFixedUpdate(time, deltaTime);
|
|
188
191
|
}
|
|
192
|
+
this.onPrePhysicsUpdate.dispatch(params);
|
|
193
|
+
for (const system of this.onPrePhysicsUpdateSet) {
|
|
194
|
+
system.onPrePhysicsUpdate(time, deltaTime);
|
|
195
|
+
}
|
|
189
196
|
this.onPhysicsUpdate.dispatch(params);
|
|
190
197
|
for (const system of this.onPhysicsUpdateSet) {
|
|
191
198
|
system.onPhysicsUpdate(time, deltaTime);
|
|
@@ -252,6 +259,16 @@ class GameEngine {
|
|
|
252
259
|
for (const [key, signal] of staticSignalMap) {
|
|
253
260
|
bindings.push(signal.add(target[key], { context: target }));
|
|
254
261
|
}
|
|
262
|
+
this.staticSignalMapBindings.set(target, bindings);
|
|
263
|
+
}
|
|
264
|
+
unmapStaticAnnotatedSignals(target) {
|
|
265
|
+
const bindings = this.staticSignalMapBindings.get(target);
|
|
266
|
+
if (!bindings)
|
|
267
|
+
return;
|
|
268
|
+
for (const binding of bindings) {
|
|
269
|
+
binding.detach();
|
|
270
|
+
}
|
|
271
|
+
this.staticSignalMapBindings.delete(target);
|
|
255
272
|
}
|
|
256
273
|
mapAnnotatedSignals(target) {
|
|
257
274
|
const signalMap = this.getSignalMap(target.constructor);
|
|
@@ -316,21 +333,23 @@ class GameEngine {
|
|
|
316
333
|
this.onEnd.detachAll();
|
|
317
334
|
this.onRender.detachAll();
|
|
318
335
|
this.onUpdate.detachAll();
|
|
336
|
+
this.onLateUpdate.detachAll();
|
|
319
337
|
this.onFixedUpdate.detachAll();
|
|
320
338
|
this.onPrePhysicsUpdate.detachAll();
|
|
321
339
|
this.onPhysicsUpdate.detachAll();
|
|
322
340
|
this.onPostPhysicsUpdate.detachAll();
|
|
323
341
|
this.onLateFixedUpdate.detachAll();
|
|
342
|
+
this.onEarlyUpdateSet.clear();
|
|
324
343
|
this.onPhysicsUpdateSet.clear();
|
|
325
344
|
this.onPrePhysicsUpdateSet.clear();
|
|
326
345
|
this.onPostPhysicsUpdateSet.clear();
|
|
327
346
|
this.onLateFixedUpdateSet.clear();
|
|
328
|
-
this.
|
|
329
|
-
this.
|
|
330
|
-
this.
|
|
331
|
-
this.
|
|
332
|
-
this.
|
|
333
|
-
this.
|
|
347
|
+
this.onLateUpdateSet.clear();
|
|
348
|
+
this.onUpdateSet.clear();
|
|
349
|
+
this.onFixedUpdateSet.clear();
|
|
350
|
+
this.onRenderUpdateSet.clear();
|
|
351
|
+
this.onAddEntitySet.clear();
|
|
352
|
+
this.onRemoveEntitySet.clear();
|
|
334
353
|
}
|
|
335
354
|
prepareFrame() {
|
|
336
355
|
this.deferSignal = new mani_signal_1.Signal();
|
|
@@ -355,6 +374,7 @@ class GameEngine {
|
|
|
355
374
|
for (const system of this.onRemoveEntitySet) {
|
|
356
375
|
system.onRemoveEntity(entity);
|
|
357
376
|
}
|
|
377
|
+
this.onRemoveEntity.dispatch(entity);
|
|
358
378
|
}
|
|
359
379
|
resolve();
|
|
360
380
|
}
|
|
@@ -374,18 +394,19 @@ class GameEngine {
|
|
|
374
394
|
}
|
|
375
395
|
this.entitySystemMap.set(entity, systemContexts);
|
|
376
396
|
this.addSystemContextSetToMap(entity, systemContexts);
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
397
|
+
const entityWasAdded = () => {
|
|
398
|
+
this.onAddEntity.dispatch(entity);
|
|
399
|
+
for (const system of this.onAddEntitySet) {
|
|
400
|
+
system.onAddEntity(entity);
|
|
401
|
+
}
|
|
402
|
+
resolve();
|
|
403
|
+
};
|
|
404
|
+
if (preparePromises.length === 0) {
|
|
405
|
+
this.startSystems(nextSystemContexts, entityWasAdded);
|
|
406
|
+
}
|
|
407
|
+
else {
|
|
408
|
+
Promise.all(preparePromises).then(() => this.startSystems(nextSystemContexts, entityWasAdded));
|
|
381
409
|
}
|
|
382
|
-
resolve();
|
|
383
|
-
};
|
|
384
|
-
if (preparePromises.length === 0) {
|
|
385
|
-
this.startSystems(nextSystemContexts, entityWasAdded);
|
|
386
|
-
}
|
|
387
|
-
else {
|
|
388
|
-
Promise.all(preparePromises).then(() => this.startSystems(nextSystemContexts, entityWasAdded));
|
|
389
410
|
}
|
|
390
411
|
}
|
|
391
412
|
this.addQueue = [];
|
|
@@ -422,6 +443,7 @@ class GameEngine {
|
|
|
422
443
|
const system = context.system;
|
|
423
444
|
this.mapAnnotatedSignals(system);
|
|
424
445
|
system.onStart && system.onStart();
|
|
446
|
+
system.onEarlyUpdate && this.onEarlyUpdateSet.add(system);
|
|
425
447
|
system.onPreFixedUpdate && this.onPreFixedUpdateSet.add(system);
|
|
426
448
|
system.onFixedUpdate && this.onFixedUpdateSet.add(system);
|
|
427
449
|
system.onUpdate && this.onUpdateSet.add(system);
|
|
@@ -447,7 +469,12 @@ class GameEngine {
|
|
|
447
469
|
const system = context.system;
|
|
448
470
|
const onEndPromise = system.onEnd && system.onEnd();
|
|
449
471
|
if (onEndPromise instanceof Promise) {
|
|
450
|
-
onEndPromise
|
|
472
|
+
onEndPromise
|
|
473
|
+
.then(() => {
|
|
474
|
+
context.dispose();
|
|
475
|
+
})
|
|
476
|
+
.catch((error) => {
|
|
477
|
+
console.error('Error during system.onEnd():', error);
|
|
451
478
|
context.dispose();
|
|
452
479
|
});
|
|
453
480
|
}
|
|
@@ -455,6 +482,7 @@ class GameEngine {
|
|
|
455
482
|
context.dispose();
|
|
456
483
|
}
|
|
457
484
|
this.unmapAnnotatedSignals(system);
|
|
485
|
+
system.onEarlyUpdate && this.onEarlyUpdateSet.delete(system);
|
|
458
486
|
system.onPreFixedUpdate && this.onPreFixedUpdateSet.delete(system);
|
|
459
487
|
system.onFixedUpdate && this.onFixedUpdateSet.delete(system);
|
|
460
488
|
system.onUpdate && this.onUpdateSet.delete(system);
|
|
@@ -464,6 +492,8 @@ class GameEngine {
|
|
|
464
492
|
system.onPostPhysicsUpdate && this.onPostPhysicsUpdateSet.delete(system);
|
|
465
493
|
system.onLateFixedUpdate && this.onLateFixedUpdateSet.delete(system);
|
|
466
494
|
system.onRender && this.onRenderUpdateSet.delete(system);
|
|
495
|
+
system.onAddEntity && this.onAddEntitySet.delete(system);
|
|
496
|
+
system.onRemoveEntity && this.onRemoveEntitySet.delete(system);
|
|
467
497
|
}
|
|
468
498
|
}
|
|
469
499
|
exports.GameEngine = GameEngine;
|
package/lib/gameEngine.js.map
CHANGED
|
@@ -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
|
@@ -5,8 +5,8 @@ export { Scope, SCOPE_CONTEXT, ScopeContext, OnScopeSignal, scopeSignalHandlers,
|
|
|
5
5
|
export { SystemContext, OnEntitySignal } from './systemContext';
|
|
6
6
|
export { EcsInjector, EntityComponent, GetComponent, GetDynamicComponent, GetEntity, GetContext, GetSignal, OnSignal, GetEntitySignal, } from './ecsInjector';
|
|
7
7
|
import { ID, Inject, InjectId, Injector, InjectType, putIfAbsent } from './injector';
|
|
8
|
-
import { Signal, SignalBinding, SignalCallback
|
|
8
|
+
import { Signal, SignalBinding, SignalCallback } from 'mani-signal';
|
|
9
9
|
import { Clock } from './clock';
|
|
10
10
|
export { Injector, InjectType, InjectId, Inject, putIfAbsent, ID };
|
|
11
11
|
export { Clock };
|
|
12
|
-
export { Signal, SignalBinding, SignalCallback
|
|
12
|
+
export { Signal, SignalBinding, SignalCallback };
|
package/lib/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.Signal = exports.putIfAbsent = exports.Inject = exports.InjectId = exports.InjectType = exports.Injector = exports.GetEntitySignal = exports.OnSignal = exports.GetSignal = exports.GetContext = exports.GetEntity = exports.GetDynamicComponent = exports.GetComponent = exports.EntityComponent = exports.EcsInjector = exports.OnEntitySignal = exports.SystemContext = exports.scopeSignalHandlers = exports.OnScopeSignal = exports.ScopeContext = exports.SCOPE_CONTEXT = exports.EngineSignals = exports.Entity = exports.GameEngine = void 0;
|
|
4
4
|
var gameEngine_1 = require("./gameEngine");
|
|
5
5
|
Object.defineProperty(exports, "GameEngine", { enumerable: true, get: function () { return gameEngine_1.GameEngine; } });
|
|
6
6
|
var entity_1 = require("./entity");
|
|
@@ -33,5 +33,4 @@ Object.defineProperty(exports, "InjectType", { enumerable: true, get: function (
|
|
|
33
33
|
Object.defineProperty(exports, "putIfAbsent", { enumerable: true, get: function () { return injector_1.putIfAbsent; } });
|
|
34
34
|
const mani_signal_1 = require("mani-signal");
|
|
35
35
|
Object.defineProperty(exports, "Signal", { enumerable: true, get: function () { return mani_signal_1.Signal; } });
|
|
36
|
-
Object.defineProperty(exports, "signalGroup", { enumerable: true, get: function () { return mani_signal_1.signalGroup; } });
|
|
37
36
|
//# 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,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,iDAA8D;AAAtD,8GAAA,aAAa,OAAA;AAAE,+GAAA,cAAc,OAAA;AACrC,6CAA4J;AAApJ,0GAAA,WAAW,OAAA;AAAE,8GAAA,eAAe,OAAA;AAAE,2GAAA,YAAY,OAAA;AAAC,kHAAA,mBAAmB,OAAA;AAAE,wGAAA,SAAS,OAAA;AAAE,yGAAA,UAAU,OAAA;AAAE,wGAAA,SAAS,OAAA;AAAE,uGAAA,QAAQ,OAAA;AAAE,8GAAA,eAAe,OAAA;AAInI,yCAAmF;AAI3C,uFAJ5B,iBAAM,OAI4B;AAAhB,yFAJV,mBAAQ,OAIU;AAA9B,yFAJsB,mBAAQ,OAItB;AAAE,2FAJsB,qBAAU,OAItB;AAAoB,4FAJI,sBAAW,OAIJ;AAH3D,
|
|
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,iDAA8D;AAAtD,8GAAA,aAAa,OAAA;AAAE,+GAAA,cAAc,OAAA;AACrC,6CAA4J;AAApJ,0GAAA,WAAW,OAAA;AAAE,8GAAA,eAAe,OAAA;AAAE,2GAAA,YAAY,OAAA;AAAC,kHAAA,mBAAmB,OAAA;AAAE,wGAAA,SAAS,OAAA;AAAE,yGAAA,UAAU,OAAA;AAAE,wGAAA,SAAS,OAAA;AAAE,uGAAA,QAAQ,OAAA;AAAE,8GAAA,eAAe,OAAA;AAInI,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"}
|
package/lib/types.d.ts
CHANGED
|
@@ -67,11 +67,11 @@ export declare const EngineSignals: {
|
|
|
67
67
|
OnUpdate: symbol;
|
|
68
68
|
OnLateUpdate: symbol;
|
|
69
69
|
OnFixedUpdate: symbol;
|
|
70
|
+
OnLateFixedUpdate: symbol;
|
|
70
71
|
OnPreFixedUpdate: symbol;
|
|
71
72
|
OnPrePhysicsUpdate: symbol;
|
|
72
73
|
OnPhysicsUpdate: symbol;
|
|
73
74
|
OnPostPhysicsUpdate: symbol;
|
|
74
|
-
onLateFixedUpdate: symbol;
|
|
75
75
|
OnRender: symbol;
|
|
76
76
|
OnPrepare: symbol;
|
|
77
77
|
OnAddEntity: symbol;
|
package/lib/types.js
CHANGED
|
@@ -7,11 +7,11 @@ exports.EngineSignals = {
|
|
|
7
7
|
OnUpdate: Symbol('OnUpdate'),
|
|
8
8
|
OnLateUpdate: Symbol('OnLateUpdate'),
|
|
9
9
|
OnFixedUpdate: Symbol('OnFixedUpdate'),
|
|
10
|
+
OnLateFixedUpdate: Symbol('OnLateFixedUpdate'),
|
|
10
11
|
OnPreFixedUpdate: Symbol('OnPreFixedUpdate'),
|
|
11
12
|
OnPrePhysicsUpdate: Symbol('OnPrePhysicsUpdate'),
|
|
12
13
|
OnPhysicsUpdate: Symbol('OnPhysicsUpdate'),
|
|
13
14
|
OnPostPhysicsUpdate: Symbol('OnPostPhysicsUpdate'),
|
|
14
|
-
onLateFixedUpdate: Symbol('onLateFixedUpdate'),
|
|
15
15
|
OnRender: Symbol('OnRender'),
|
|
16
16
|
OnPrepare: Symbol('OnPrepare'),
|
|
17
17
|
OnAddEntity: Symbol('OnAddEntity'),
|
package/lib/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AA+Ea,QAAA,aAAa,GAAG;IACzB,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC,cAAc,CAAC;IACpC,aAAa,EAAE,MAAM,CAAC,eAAe,CAAC;IACtC,gBAAgB,EAAE,MAAM,CAAC,kBAAkB,CAAC;IAC5C,kBAAkB,EAAE,MAAM,CAAC,oBAAoB,CAAC;IAChD,eAAe,EAAE,MAAM,CAAC,iBAAiB,CAAC;IAC1C,mBAAmB,EAAE,MAAM,CAAC,qBAAqB,CAAC;IAClD,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AA+Ea,QAAA,aAAa,GAAG;IACzB,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC,cAAc,CAAC;IACpC,aAAa,EAAE,MAAM,CAAC,eAAe,CAAC;IACtC,iBAAiB,EAAE,MAAM,CAAC,mBAAmB,CAAC;IAC9C,gBAAgB,EAAE,MAAM,CAAC,kBAAkB,CAAC;IAC5C,kBAAkB,EAAE,MAAM,CAAC,oBAAoB,CAAC;IAChD,eAAe,EAAE,MAAM,CAAC,iBAAiB,CAAC;IAC1C,mBAAmB,EAAE,MAAM,CAAC,qBAAqB,CAAC;IAClD,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC,aAAa,CAAC;IAClC,cAAc,EAAE,MAAM,CAAC,gBAAgB,CAAC;CAC3C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mani-game-engine",
|
|
3
3
|
"author": "Jan Mankopf",
|
|
4
|
-
"version": "1.0.0-pre.
|
|
4
|
+
"version": "1.0.0-pre.85",
|
|
5
5
|
"description": "entity component system game engine for typescript",
|
|
6
6
|
"private": false,
|
|
7
7
|
"scripts": {
|
|
@@ -29,8 +29,8 @@
|
|
|
29
29
|
"ts-jest": "^29.3.0",
|
|
30
30
|
"ts-node": "^10.9.2",
|
|
31
31
|
"tslib": "^2.6.2",
|
|
32
|
-
"typescript": "
|
|
33
|
-
"mani-signal": "^1.
|
|
32
|
+
"typescript": "5.3.3",
|
|
33
|
+
"mani-signal": "^1.1.0"
|
|
34
34
|
},
|
|
35
35
|
"peerDependencies": {
|
|
36
36
|
"reflect-metadata": "^0.2.1"
|
package/src/gameEngine.ts
CHANGED
|
@@ -98,7 +98,7 @@ export class GameEngine {
|
|
|
98
98
|
this.onPrePhysicsUpdate = this.injector.getSignal(EngineSignals.OnPrePhysicsUpdate);
|
|
99
99
|
this.onPhysicsUpdate = this.injector.getSignal(EngineSignals.OnPhysicsUpdate);
|
|
100
100
|
this.onPostPhysicsUpdate = this.injector.getSignal(EngineSignals.OnPostPhysicsUpdate);
|
|
101
|
-
this.onLateFixedUpdate = this.injector.getSignal(EngineSignals.
|
|
101
|
+
this.onLateFixedUpdate = this.injector.getSignal(EngineSignals.OnLateFixedUpdate);
|
|
102
102
|
|
|
103
103
|
this.onAddEntity = this.injector.getSignal(EngineSignals.OnAddEntity);
|
|
104
104
|
this.onRemoveEntity = this.injector.getSignal(EngineSignals.OnRemoveEntity);
|
|
@@ -149,6 +149,7 @@ export class GameEngine {
|
|
|
149
149
|
private addService(service: Service): void {
|
|
150
150
|
this.mapAnnotatedSignals(service);
|
|
151
151
|
service.onStart && service.onStart();
|
|
152
|
+
service.onEarlyUpdate && this.onEarlyUpdateSet.add(service);
|
|
152
153
|
service.onPreFixedUpdate && this.onPreFixedUpdateSet.add(service);
|
|
153
154
|
service.onFixedUpdate && this.onFixedUpdateSet.add(service);
|
|
154
155
|
service.onUpdate && this.onUpdateSet.add(service);
|
|
@@ -168,6 +169,7 @@ export class GameEngine {
|
|
|
168
169
|
if (index === -1) return;
|
|
169
170
|
this.services.splice(index, 1);
|
|
170
171
|
this.unmapAnnotatedSignals(service);
|
|
172
|
+
service.onEarlyUpdate && this.onEarlyUpdateSet.delete(service);
|
|
171
173
|
service.onPreFixedUpdate && this.onPreFixedUpdateSet.delete(service);
|
|
172
174
|
service.onFixedUpdate && this.onFixedUpdateSet.delete(service);
|
|
173
175
|
service.onUpdate && this.onUpdateSet.delete(service);
|
|
@@ -242,6 +244,10 @@ export class GameEngine {
|
|
|
242
244
|
for (const system of this.onFixedUpdateSet) {
|
|
243
245
|
system.onFixedUpdate!(time, deltaTime);
|
|
244
246
|
}
|
|
247
|
+
this.onPrePhysicsUpdate.dispatch(params);
|
|
248
|
+
for (const system of this.onPrePhysicsUpdateSet) {
|
|
249
|
+
system.onPrePhysicsUpdate!(time, deltaTime);
|
|
250
|
+
}
|
|
245
251
|
this.onPhysicsUpdate.dispatch(params);
|
|
246
252
|
for (const system of this.onPhysicsUpdateSet) {
|
|
247
253
|
system.onPhysicsUpdate!(time, deltaTime);
|
|
@@ -317,6 +323,7 @@ export class GameEngine {
|
|
|
317
323
|
private signalMapBindings = new Map<Object, SignalBinding[]>();
|
|
318
324
|
|
|
319
325
|
// TODO: staticSignalMapBindings needed if we want to unregister Services or Systems
|
|
326
|
+
private staticSignalMapBindings = new Map<Class, SignalBinding[]>();
|
|
320
327
|
|
|
321
328
|
private mapStaticAnnotatedSignals(target: Class) {
|
|
322
329
|
let staticSignalMap = this.getStaticSignalMap(target);
|
|
@@ -326,7 +333,17 @@ export class GameEngine {
|
|
|
326
333
|
for (const [key, signal] of staticSignalMap) {
|
|
327
334
|
bindings.push(signal.add((<any>target)[key], {context: target}));
|
|
328
335
|
}
|
|
329
|
-
//
|
|
336
|
+
// Store bindings to allow unregistering Services or Systems
|
|
337
|
+
this.staticSignalMapBindings.set(target, bindings);
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
private unmapStaticAnnotatedSignals(target: Class) {
|
|
341
|
+
const bindings = this.staticSignalMapBindings.get(target);
|
|
342
|
+
if (!bindings) return;
|
|
343
|
+
for (const binding of bindings) {
|
|
344
|
+
binding.detach();
|
|
345
|
+
}
|
|
346
|
+
this.staticSignalMapBindings.delete(target);
|
|
330
347
|
}
|
|
331
348
|
|
|
332
349
|
private mapAnnotatedSignals(target: Object) {
|
|
@@ -396,22 +413,23 @@ export class GameEngine {
|
|
|
396
413
|
this.onEnd.detachAll();
|
|
397
414
|
this.onRender.detachAll();
|
|
398
415
|
this.onUpdate.detachAll();
|
|
416
|
+
this.onLateUpdate.detachAll();
|
|
399
417
|
this.onFixedUpdate.detachAll();
|
|
400
418
|
this.onPrePhysicsUpdate.detachAll();
|
|
401
419
|
this.onPhysicsUpdate.detachAll();
|
|
402
420
|
this.onPostPhysicsUpdate.detachAll();
|
|
403
421
|
this.onLateFixedUpdate.detachAll();
|
|
422
|
+
this.onEarlyUpdateSet.clear();
|
|
404
423
|
this.onPhysicsUpdateSet.clear();
|
|
405
424
|
this.onPrePhysicsUpdateSet.clear();
|
|
406
425
|
this.onPostPhysicsUpdateSet.clear();
|
|
407
426
|
this.onLateFixedUpdateSet.clear();
|
|
408
|
-
this.
|
|
409
|
-
this.
|
|
410
|
-
this.
|
|
411
|
-
this.
|
|
412
|
-
this.
|
|
413
|
-
this.
|
|
414
|
-
|
|
427
|
+
this.onLateUpdateSet.clear();
|
|
428
|
+
this.onUpdateSet.clear();
|
|
429
|
+
this.onFixedUpdateSet.clear();
|
|
430
|
+
this.onRenderUpdateSet.clear();
|
|
431
|
+
this.onAddEntitySet.clear();
|
|
432
|
+
this.onRemoveEntitySet.clear();
|
|
415
433
|
}
|
|
416
434
|
|
|
417
435
|
private prepareFrame() {
|
|
@@ -440,6 +458,7 @@ export class GameEngine {
|
|
|
440
458
|
for (const system of this.onRemoveEntitySet) {
|
|
441
459
|
system.onRemoveEntity!(entity);
|
|
442
460
|
}
|
|
461
|
+
this.onRemoveEntity.dispatch(entity);
|
|
443
462
|
}
|
|
444
463
|
|
|
445
464
|
resolve();
|
|
@@ -462,20 +481,23 @@ export class GameEngine {
|
|
|
462
481
|
this.entitySystemMap.set(entity, systemContexts);
|
|
463
482
|
// we have to check if the entity is already in the map, because a system might have added dynamic components that also added to this
|
|
464
483
|
this.addSystemContextSetToMap(entity, systemContexts);
|
|
465
|
-
}
|
|
466
484
|
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
485
|
+
|
|
486
|
+
const entityWasAdded = () => {
|
|
487
|
+
this.onAddEntity.dispatch(entity);
|
|
488
|
+
for (const system of this.onAddEntitySet) {
|
|
489
|
+
system.onAddEntity!(entity);
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
resolve();
|
|
493
|
+
};
|
|
494
|
+
|
|
495
|
+
// Promise.all doesnt resolve immediately when there are no promises bu
|
|
496
|
+
if (preparePromises.length === 0) {
|
|
497
|
+
this.startSystems(nextSystemContexts, entityWasAdded);
|
|
498
|
+
} else {
|
|
499
|
+
Promise.all(preparePromises).then(() => this.startSystems(nextSystemContexts, entityWasAdded));
|
|
470
500
|
}
|
|
471
|
-
resolve();
|
|
472
|
-
};
|
|
473
|
-
|
|
474
|
-
// Promise.all doesnt resolve immediately when there are no promises bu
|
|
475
|
-
if (preparePromises.length === 0) {
|
|
476
|
-
this.startSystems(nextSystemContexts, entityWasAdded);
|
|
477
|
-
} else {
|
|
478
|
-
Promise.all(preparePromises).then(() => this.startSystems(nextSystemContexts, entityWasAdded));
|
|
479
501
|
}
|
|
480
502
|
}
|
|
481
503
|
this.addQueue = [];
|
|
@@ -523,6 +545,7 @@ export class GameEngine {
|
|
|
523
545
|
const system = context.system;
|
|
524
546
|
this.mapAnnotatedSignals(system);
|
|
525
547
|
system.onStart && system.onStart();
|
|
548
|
+
system.onEarlyUpdate && this.onEarlyUpdateSet.add(system);
|
|
526
549
|
system.onPreFixedUpdate && this.onPreFixedUpdateSet.add(system);
|
|
527
550
|
system.onFixedUpdate && this.onFixedUpdateSet.add(system);
|
|
528
551
|
system.onUpdate && this.onUpdateSet.add(system);
|
|
@@ -552,14 +575,21 @@ export class GameEngine {
|
|
|
552
575
|
// if onEnd returns a promise, we need to wait for it to finish before we can dispose the system
|
|
553
576
|
const onEndPromise = system.onEnd && system.onEnd();
|
|
554
577
|
if (onEndPromise instanceof Promise) {
|
|
555
|
-
onEndPromise
|
|
556
|
-
|
|
557
|
-
|
|
578
|
+
onEndPromise
|
|
579
|
+
.then(() => {
|
|
580
|
+
context.dispose();
|
|
581
|
+
})
|
|
582
|
+
.catch((error) => {
|
|
583
|
+
console.error('Error during system.onEnd():', error);
|
|
584
|
+
// Dispose the context even if onEnd() fails
|
|
585
|
+
context.dispose();
|
|
586
|
+
});
|
|
558
587
|
} else {
|
|
559
588
|
context.dispose();
|
|
560
589
|
}
|
|
561
590
|
|
|
562
591
|
this.unmapAnnotatedSignals(system);
|
|
592
|
+
system.onEarlyUpdate && this.onEarlyUpdateSet.delete(system);
|
|
563
593
|
system.onPreFixedUpdate && this.onPreFixedUpdateSet.delete(system);
|
|
564
594
|
system.onFixedUpdate && this.onFixedUpdateSet.delete(system);
|
|
565
595
|
system.onUpdate && this.onUpdateSet.delete(system);
|
|
@@ -569,6 +599,8 @@ export class GameEngine {
|
|
|
569
599
|
system.onPostPhysicsUpdate && this.onPostPhysicsUpdateSet.delete(system);
|
|
570
600
|
system.onLateFixedUpdate && this.onLateFixedUpdateSet.delete(system);
|
|
571
601
|
system.onRender && this.onRenderUpdateSet.delete(system);
|
|
602
|
+
system.onAddEntity && this.onAddEntitySet.delete(system);
|
|
603
|
+
system.onRemoveEntity && this.onRemoveEntitySet.delete(system);
|
|
572
604
|
}
|
|
573
605
|
}
|
|
574
606
|
//
|
|
@@ -581,4 +613,3 @@ export class GameEngine {
|
|
|
581
613
|
// export function createGameAction<K extends keyof GameEngineActions>(id: K, action: GameAction<K>): GameActionMapping {
|
|
582
614
|
// return {id, action};
|
|
583
615
|
// }
|
|
584
|
-
//
|
package/src/index.ts
CHANGED
|
@@ -22,11 +22,11 @@ export {EcsInjector, EntityComponent, GetComponent,GetDynamicComponent, GetEntit
|
|
|
22
22
|
// intellij doesnt auto resolve imports if we just export * from an external dependency
|
|
23
23
|
|
|
24
24
|
import {ID, Inject, InjectId, Injector, InjectType, putIfAbsent} from './injector';
|
|
25
|
-
import {Signal, SignalBinding, SignalCallback
|
|
25
|
+
import {Signal, SignalBinding, SignalCallback} from 'mani-signal';
|
|
26
26
|
import {Clock} from './clock';
|
|
27
27
|
|
|
28
28
|
export {Injector, InjectType, InjectId, Inject, putIfAbsent, ID};
|
|
29
29
|
|
|
30
30
|
export {Clock};
|
|
31
31
|
|
|
32
|
-
export {Signal, SignalBinding, SignalCallback
|
|
32
|
+
export {Signal, SignalBinding, SignalCallback};
|
package/src/types.ts
CHANGED
|
@@ -83,11 +83,11 @@ export const EngineSignals = {
|
|
|
83
83
|
OnUpdate: Symbol('OnUpdate'),
|
|
84
84
|
OnLateUpdate: Symbol('OnLateUpdate'),
|
|
85
85
|
OnFixedUpdate: Symbol('OnFixedUpdate'),
|
|
86
|
+
OnLateFixedUpdate: Symbol('OnLateFixedUpdate'),
|
|
86
87
|
OnPreFixedUpdate: Symbol('OnPreFixedUpdate'),
|
|
87
88
|
OnPrePhysicsUpdate: Symbol('OnPrePhysicsUpdate'),
|
|
88
89
|
OnPhysicsUpdate: Symbol('OnPhysicsUpdate'),
|
|
89
90
|
OnPostPhysicsUpdate: Symbol('OnPostPhysicsUpdate'),
|
|
90
|
-
onLateFixedUpdate: Symbol('onLateFixedUpdate'),
|
|
91
91
|
OnRender: Symbol('OnRender'),
|
|
92
92
|
OnPrepare: Symbol('OnPrepare'),
|
|
93
93
|
OnAddEntity: Symbol('OnAddEntity'),
|