mani-game-engine 1.0.0-pre.37 → 1.0.0-pre.38
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/entity.d.ts +0 -2
- package/lib/entity.js +9 -10
- package/lib/entity.js.map +1 -1
- package/lib/scope/scopeContext.d.ts +12 -0
- package/lib/scope/scopeContext.js +27 -0
- package/lib/scope/scopeContext.js.map +1 -1
- package/package.json +1 -1
- package/src/entity.ts +0 -5
- package/src/scope/scopeContext.ts +38 -1
package/lib/entity.d.ts
CHANGED
|
@@ -2,7 +2,6 @@ import { Signal } from 'mani-signal';
|
|
|
2
2
|
import { Class } from './types';
|
|
3
3
|
import { ID } from './injector';
|
|
4
4
|
export declare class Entity {
|
|
5
|
-
readonly id: number;
|
|
6
5
|
readonly children: Set<Entity>;
|
|
7
6
|
private gameEngine?;
|
|
8
7
|
private _parent?;
|
|
@@ -18,7 +17,6 @@ export declare class Entity {
|
|
|
18
17
|
removeDynamicComponent<T extends Class>(component: InstanceType<T>): void;
|
|
19
18
|
getDynamicComponent<T extends Class>(componentClass: T): InstanceType<T> | undefined;
|
|
20
19
|
get detached(): boolean;
|
|
21
|
-
constructor();
|
|
22
20
|
onBeforeRemove?(): Promise<void>;
|
|
23
21
|
getSignal<T>(id: ID): Signal<T>;
|
|
24
22
|
private setParent;
|
package/lib/entity.js
CHANGED
|
@@ -6,6 +6,15 @@ const injector_1 = require("./injector");
|
|
|
6
6
|
const ecsInjector_1 = require("./ecsInjector");
|
|
7
7
|
let idCounter = 0;
|
|
8
8
|
class Entity {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.children = new Set();
|
|
11
|
+
this.parentChanged = new mani_signal_1.Signal();
|
|
12
|
+
this.onRemove = new mani_signal_1.Signal();
|
|
13
|
+
this.markRemoval = false;
|
|
14
|
+
this._detached = false;
|
|
15
|
+
this.signalMap = new Map();
|
|
16
|
+
this.dynamicComponents = new Map();
|
|
17
|
+
}
|
|
9
18
|
addDynamicComponent(component) {
|
|
10
19
|
var _a;
|
|
11
20
|
if (this.hasDynamicComponentClass(component.constructor)) {
|
|
@@ -59,16 +68,6 @@ class Entity {
|
|
|
59
68
|
return this.dynamicComponents.get(componentClass);
|
|
60
69
|
}
|
|
61
70
|
get detached() { return this._detached; }
|
|
62
|
-
constructor() {
|
|
63
|
-
this.children = new Set();
|
|
64
|
-
this.parentChanged = new mani_signal_1.Signal();
|
|
65
|
-
this.onRemove = new mani_signal_1.Signal();
|
|
66
|
-
this.markRemoval = false;
|
|
67
|
-
this._detached = false;
|
|
68
|
-
this.signalMap = new Map();
|
|
69
|
-
this.dynamicComponents = new Map();
|
|
70
|
-
this.id = idCounter++;
|
|
71
|
-
}
|
|
72
71
|
getSignal(id) {
|
|
73
72
|
return (0, injector_1.putIfAbsent)(this.signalMap, id, () => new mani_signal_1.Signal());
|
|
74
73
|
}
|
package/lib/entity.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity.js","sourceRoot":"","sources":["../src/entity.ts"],"names":[],"mappings":";;;AACA,6CAAmC;AAEnC,yCAA2C;AAC3C,+CAA0C;AAE1C,IAAI,SAAS,GAAG,CAAC,CAAC;AAElB,MAAa,MAAM;
|
|
1
|
+
{"version":3,"file":"entity.js","sourceRoot":"","sources":["../src/entity.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,12 @@ export interface Scope {
|
|
|
21
21
|
export type ScopeMapping = (params: {
|
|
22
22
|
injector: EcsInjector;
|
|
23
23
|
registerScopeService: (serviceClass: Class) => void;
|
|
24
|
+
onEnter: Signal<ScopeContext>;
|
|
25
|
+
onExit: Signal<ScopeContext>;
|
|
26
|
+
onSubReturn: Signal<ScopeContext>;
|
|
27
|
+
onSubExit: Signal<ScopeContext>;
|
|
28
|
+
onActivate: Signal<ScopeContext>;
|
|
29
|
+
onDeactivate: Signal<ScopeContext>;
|
|
24
30
|
}) => void;
|
|
25
31
|
interface AddScopeSignalOptions extends ScopeSignalOptions {
|
|
26
32
|
context?: unknown;
|
|
@@ -34,6 +40,12 @@ export declare class ScopeContext {
|
|
|
34
40
|
private serviceBindings;
|
|
35
41
|
private closed;
|
|
36
42
|
private muteKeepAliveSignals;
|
|
43
|
+
readonly onEnter: Signal<ScopeContext>;
|
|
44
|
+
readonly onExit: Signal<ScopeContext>;
|
|
45
|
+
readonly onSubReturn: Signal<ScopeContext>;
|
|
46
|
+
readonly onSubExit: Signal<ScopeContext>;
|
|
47
|
+
readonly onActivate: Signal<ScopeContext>;
|
|
48
|
+
readonly onDeactivate: Signal<ScopeContext>;
|
|
37
49
|
constructor(injector: EcsInjector, scopeClass: Class, mapping?: ScopeMapping, parent?: ScopeContext | undefined);
|
|
38
50
|
get isRoot(): boolean;
|
|
39
51
|
get target(): Scope | undefined;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ScopeContext = exports.SCOPE_CONTEXT = exports.OnScopeSignal = exports.scopeSignalHandlers = void 0;
|
|
4
|
+
const index_1 = require("../index");
|
|
4
5
|
const ecsInjector_1 = require("../ecsInjector");
|
|
5
6
|
const injector_1 = require("../injector");
|
|
6
7
|
exports.scopeSignalHandlers = new Map();
|
|
@@ -56,6 +57,12 @@ class ScopeContext {
|
|
|
56
57
|
this.serviceBindings = [];
|
|
57
58
|
this.closed = false;
|
|
58
59
|
this.muteKeepAliveSignals = false;
|
|
60
|
+
this.onEnter = new index_1.Signal();
|
|
61
|
+
this.onExit = new index_1.Signal();
|
|
62
|
+
this.onSubReturn = new index_1.Signal();
|
|
63
|
+
this.onSubExit = new index_1.Signal();
|
|
64
|
+
this.onActivate = new index_1.Signal();
|
|
65
|
+
this.onDeactivate = new index_1.Signal();
|
|
59
66
|
if (!parent) {
|
|
60
67
|
this.stack = new ScopeStack(this);
|
|
61
68
|
}
|
|
@@ -72,12 +79,20 @@ class ScopeContext {
|
|
|
72
79
|
this.injector.map(serviceClass).toSingleton();
|
|
73
80
|
this.mapServiceSignals(this.injector.get(serviceClass));
|
|
74
81
|
},
|
|
82
|
+
onEnter: this.onEnter,
|
|
83
|
+
onExit: this.onExit,
|
|
84
|
+
onSubReturn: this.onSubReturn,
|
|
85
|
+
onSubExit: this.onSubExit,
|
|
86
|
+
onActivate: this.onActivate,
|
|
87
|
+
onDeactivate: this.onDeactivate,
|
|
75
88
|
});
|
|
76
89
|
this.scope = this.injector.get(scopeClass);
|
|
77
90
|
this.mapScopeSignals();
|
|
78
91
|
this.updateSignalBindings();
|
|
79
92
|
(_b = (_a = this.scope).onEnter) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
93
|
+
this.onEnter.dispatch(this);
|
|
80
94
|
(_d = (_c = this.scope).onActivate) === null || _d === void 0 ? void 0 : _d.call(_c);
|
|
95
|
+
this.onActivate.dispatch(this);
|
|
81
96
|
}
|
|
82
97
|
get isRoot() {
|
|
83
98
|
return this === this.stack.rootScope;
|
|
@@ -94,7 +109,9 @@ class ScopeContext {
|
|
|
94
109
|
const doChange = () => {
|
|
95
110
|
var _a, _b, _c, _d;
|
|
96
111
|
(_b = (_a = this.activeContext.scope).onSubExit) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
112
|
+
this.activeContext.onSubExit.dispatch(this);
|
|
97
113
|
(_d = (_c = this.activeContext.scope).onDeactivate) === null || _d === void 0 ? void 0 : _d.call(_c);
|
|
114
|
+
this.activeContext.onDeactivate.dispatch(this);
|
|
98
115
|
newContext = new ScopeContext(this.activeContext.injector, scopeClass, mapping, this.activeContext);
|
|
99
116
|
this.logStack();
|
|
100
117
|
const nextChange = this.stack.queuedScopeChanges.shift();
|
|
@@ -244,11 +261,21 @@ class ScopeContext {
|
|
|
244
261
|
this.detachSignalBindings();
|
|
245
262
|
this.detachServiceBindings();
|
|
246
263
|
(_b = (_a = this.scope).onDeactivate) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
264
|
+
this.onDeactivate.dispatch(this);
|
|
247
265
|
(_d = (_c = this.scope).onExit) === null || _d === void 0 ? void 0 : _d.call(_c);
|
|
266
|
+
this.onExit.dispatch(this);
|
|
248
267
|
this.parent.updateSignalBindings();
|
|
249
268
|
(_f = (_e = this.parent.scope).onSubReturn) === null || _f === void 0 ? void 0 : _f.call(_e);
|
|
269
|
+
this.onSubReturn.dispatch(this);
|
|
250
270
|
(_h = (_g = this.parent.scope).onActivate) === null || _h === void 0 ? void 0 : _h.call(_g);
|
|
271
|
+
this.parent.onActivate.dispatch(this);
|
|
251
272
|
this.closed = true;
|
|
273
|
+
this.onEnter.detachAll();
|
|
274
|
+
this.onExit.detachAll();
|
|
275
|
+
this.onSubReturn.detachAll();
|
|
276
|
+
this.onSubExit.detachAll();
|
|
277
|
+
this.onActivate.detachAll();
|
|
278
|
+
this.onDeactivate.detachAll();
|
|
252
279
|
}
|
|
253
280
|
}
|
|
254
281
|
exports.ScopeContext = ScopeContext;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scopeContext.js","sourceRoot":"","sources":["../../src/scope/scopeContext.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"scopeContext.js","sourceRoot":"","sources":["../../src/scope/scopeContext.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/entity.ts
CHANGED
|
@@ -8,7 +8,6 @@ let idCounter = 0;
|
|
|
8
8
|
|
|
9
9
|
export class Entity {
|
|
10
10
|
|
|
11
|
-
readonly id: number;
|
|
12
11
|
readonly children = new Set<Entity>();
|
|
13
12
|
private gameEngine?: GameEngine;
|
|
14
13
|
|
|
@@ -78,10 +77,6 @@ export class Entity {
|
|
|
78
77
|
|
|
79
78
|
get detached(): boolean { return this._detached; }
|
|
80
79
|
|
|
81
|
-
constructor() {
|
|
82
|
-
this.id = idCounter++;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
80
|
async onBeforeRemove?(): Promise<void>;
|
|
86
81
|
|
|
87
82
|
getSignal<T>(id: ID): Signal<T> {
|
|
@@ -74,6 +74,13 @@ class ScopeStack {
|
|
|
74
74
|
export type ScopeMapping = (params: {
|
|
75
75
|
injector: EcsInjector,
|
|
76
76
|
registerScopeService: (serviceClass: Class) => void,
|
|
77
|
+
onEnter: Signal<ScopeContext>,
|
|
78
|
+
onExit: Signal<ScopeContext>,
|
|
79
|
+
onSubReturn: Signal<ScopeContext>,
|
|
80
|
+
onSubExit: Signal<ScopeContext>,
|
|
81
|
+
onActivate: Signal<ScopeContext>,
|
|
82
|
+
onDeactivate: Signal<ScopeContext>,
|
|
83
|
+
|
|
77
84
|
}) => void
|
|
78
85
|
|
|
79
86
|
interface AddScopeSignalOptions extends ScopeSignalOptions {
|
|
@@ -93,6 +100,13 @@ export class ScopeContext {
|
|
|
93
100
|
private closed = false;
|
|
94
101
|
private muteKeepAliveSignals = false;
|
|
95
102
|
|
|
103
|
+
readonly onEnter = new Signal<ScopeContext>();
|
|
104
|
+
readonly onExit = new Signal<ScopeContext>();
|
|
105
|
+
readonly onSubReturn = new Signal<ScopeContext>();
|
|
106
|
+
readonly onSubExit = new Signal<ScopeContext>();
|
|
107
|
+
readonly onActivate = new Signal<ScopeContext>();
|
|
108
|
+
readonly onDeactivate = new Signal<ScopeContext>();
|
|
109
|
+
|
|
96
110
|
constructor(injector: EcsInjector, scopeClass: Class, mapping?: ScopeMapping, private parent?: ScopeContext) {
|
|
97
111
|
if (!parent) {
|
|
98
112
|
this.stack = new ScopeStack(this);
|
|
@@ -115,6 +129,12 @@ export class ScopeContext {
|
|
|
115
129
|
this.injector.map(serviceClass).toSingleton();
|
|
116
130
|
this.mapServiceSignals(this.injector.get(serviceClass));
|
|
117
131
|
},
|
|
132
|
+
onEnter: this.onEnter,
|
|
133
|
+
onExit: this.onExit,
|
|
134
|
+
onSubReturn: this.onSubReturn,
|
|
135
|
+
onSubExit: this.onSubExit,
|
|
136
|
+
onActivate: this.onActivate,
|
|
137
|
+
onDeactivate: this.onDeactivate,
|
|
118
138
|
});
|
|
119
139
|
|
|
120
140
|
this.scope = this.injector.get(scopeClass) as Scope;
|
|
@@ -122,7 +142,9 @@ export class ScopeContext {
|
|
|
122
142
|
this.updateSignalBindings();
|
|
123
143
|
// TODO: maybe the scope needs to prepare resources or something before it can react to signals, so we should move onEnter bevore the signal mapping and make it async (not working in constructor though)
|
|
124
144
|
this.scope.onEnter?.();
|
|
145
|
+
this.onEnter.dispatch(this);
|
|
125
146
|
this.scope.onActivate?.();
|
|
147
|
+
this.onActivate.dispatch(this);
|
|
126
148
|
}
|
|
127
149
|
|
|
128
150
|
get isRoot() {
|
|
@@ -150,7 +172,9 @@ export class ScopeContext {
|
|
|
150
172
|
const doChange = () => {
|
|
151
173
|
|
|
152
174
|
this.activeContext.scope.onSubExit?.();
|
|
175
|
+
this.activeContext.onSubExit.dispatch(this);
|
|
153
176
|
this.activeContext.scope.onDeactivate?.();
|
|
177
|
+
this.activeContext.onDeactivate.dispatch(this);
|
|
154
178
|
|
|
155
179
|
newContext = new ScopeContext(this.activeContext.injector, scopeClass, mapping, this.activeContext);
|
|
156
180
|
|
|
@@ -162,7 +186,7 @@ export class ScopeContext {
|
|
|
162
186
|
this.stack.ongoingChange = false;
|
|
163
187
|
}
|
|
164
188
|
};
|
|
165
|
-
// TODO: this queued changes
|
|
189
|
+
// TODO: this queued changes are somewhat experimental
|
|
166
190
|
if (!this.stack.ongoingChange) {
|
|
167
191
|
this.stack.ongoingChange = true;
|
|
168
192
|
doChange();
|
|
@@ -313,10 +337,23 @@ export class ScopeContext {
|
|
|
313
337
|
this.detachSignalBindings();
|
|
314
338
|
this.detachServiceBindings();
|
|
315
339
|
this.scope.onDeactivate?.();
|
|
340
|
+
this.onDeactivate.dispatch(this);
|
|
341
|
+
|
|
316
342
|
this.scope.onExit?.();
|
|
343
|
+
this.onExit.dispatch(this);
|
|
317
344
|
this.parent.updateSignalBindings();
|
|
318
345
|
this.parent.scope.onSubReturn?.();
|
|
346
|
+
this.onSubReturn.dispatch(this);
|
|
319
347
|
this.parent.scope.onActivate?.();
|
|
348
|
+
this.parent.onActivate.dispatch(this);
|
|
320
349
|
this.closed = true;
|
|
350
|
+
|
|
351
|
+
this.onEnter.detachAll();
|
|
352
|
+
this.onExit.detachAll();
|
|
353
|
+
this.onSubReturn.detachAll();
|
|
354
|
+
this.onSubExit.detachAll();
|
|
355
|
+
this.onActivate.detachAll();
|
|
356
|
+
this.onDeactivate.detachAll();
|
|
357
|
+
|
|
321
358
|
}
|
|
322
359
|
}
|