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.
- package/LICENSE +1 -1
- package/lib/clock.d.ts +34 -20
- package/lib/clock.js +55 -15
- package/lib/clock.js.map +1 -1
- package/lib/ecsInjector.d.ts +12 -6
- package/lib/ecsInjector.js +55 -29
- package/lib/ecsInjector.js.map +1 -1
- package/lib/entity.d.ts +8 -7
- package/lib/entity.js +29 -17
- package/lib/entity.js.map +1 -1
- package/lib/gameEngine.d.ts +44 -19
- package/lib/gameEngine.js +213 -103
- package/lib/gameEngine.js.map +1 -1
- package/lib/index.d.ts +12 -6
- package/lib/index.js +32 -5
- package/lib/index.js.map +1 -1
- package/lib/injector.d.ts +121 -0
- package/lib/injector.js +290 -0
- package/lib/injector.js.map +1 -0
- package/lib/scope/scopeContext.d.ts +57 -0
- package/lib/scope/scopeContext.js +255 -0
- package/lib/scope/scopeContext.js.map +1 -0
- package/lib/systemContext.d.ts +12 -0
- package/lib/systemContext.js +24 -0
- package/lib/systemContext.js.map +1 -0
- package/lib/types.d.ts +28 -9
- package/lib/types.js +17 -0
- package/lib/types.js.map +1 -1
- package/lib/utils/map2k.js +5 -1
- package/lib/utils/map2k.js.map +1 -1
- package/package.json +15 -21
- package/src/clock.ts +90 -29
- package/src/ecsInjector.ts +42 -19
- package/src/entity.ts +24 -14
- package/src/gameEngine.ts +271 -137
- package/src/index.ts +29 -6
- package/src/injector.ts +363 -0
- package/src/scope/scopeContext.ts +320 -0
- package/src/systemContext.ts +27 -0
- package/src/types.ts +27 -10
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import {System} from './types';
|
|
2
|
+
import {GameEngine, Signal, SignalBinding, SignalCallback} from './index';
|
|
3
|
+
|
|
4
|
+
export class SystemContext<T extends System = System> {
|
|
5
|
+
readonly system!: T;
|
|
6
|
+
private signalBindings: SignalBinding[] = [];
|
|
7
|
+
|
|
8
|
+
constructor(readonly entity: Object) {
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
// TODO: is this a bit hacky?
|
|
12
|
+
addSignalById<S>(signalId: string | symbol, callback: SignalCallback<S>, thisArg?: unknown) {
|
|
13
|
+
this.signalBindings.push(((this.entity as any).gameEngine as GameEngine).getSignal<S>(signalId).add(callback, thisArg));
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
addSignal<S>(signal: Signal<S>, callback: SignalCallback<S>, thisArg?: unknown) {
|
|
17
|
+
this.signalBindings.push(signal.add(callback, thisArg));
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
addSignalOnce<S>(signal: Signal<S>, callback: SignalCallback<S>, thisArg?: unknown) {
|
|
21
|
+
this.signalBindings.push(signal.addOnce(callback, thisArg));
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
dispose() {
|
|
25
|
+
for (const binding of this.signalBindings) binding.detach();
|
|
26
|
+
}
|
|
27
|
+
}
|
package/src/types.ts
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import {GameEngine} from './gameEngine';
|
|
2
2
|
|
|
3
|
-
export interface
|
|
3
|
+
export interface System {
|
|
4
4
|
[propName: string]: any;
|
|
5
5
|
onPrepare?(): Promise<void>;
|
|
6
6
|
onStart?(): void;
|
|
7
7
|
onEnd?(): void;
|
|
8
|
-
onPreFixedUpdate?(): void;
|
|
9
|
-
onEarlyUpdate?(time: number, deltaTime: number): void;
|
|
8
|
+
onPreFixedUpdate?(time: number, deltaTime: number): void;
|
|
10
9
|
onFixedUpdate?(time: number, deltaTime: number): void;
|
|
11
|
-
onPrePhysicUpdate?(time: number, deltaTime: number): void;
|
|
12
10
|
onPhysicsUpdate?(time: number, deltaTime: number): void;
|
|
13
11
|
onUpdate?(time: number, deltaTime: number, alpha: number): void;
|
|
14
12
|
onLateUpdate?(time: number, deltaTime: number, alpha: number): void;
|
|
13
|
+
onPrePhysicsUpdate?(time: number, deltaTime: number): void;
|
|
15
14
|
onPostPhysicsUpdate?(time: number, deltaTime: number): void;
|
|
16
|
-
|
|
15
|
+
onLateFixedUpdate?(time: number, deltaTime: number): void;
|
|
16
|
+
onRender?(time: number, deltaTime: number, alpha: number): void;
|
|
17
17
|
// new(): GameSystem;
|
|
18
18
|
}
|
|
19
19
|
|
|
@@ -21,19 +21,20 @@ export interface GameSystem {
|
|
|
21
21
|
// new(...args: any[]): GameSystem;
|
|
22
22
|
// }
|
|
23
23
|
|
|
24
|
-
export interface
|
|
24
|
+
export interface Service {
|
|
25
25
|
[propName: string]: any; // disable weak type detection
|
|
26
26
|
onPrepare?(): Promise<void>;
|
|
27
27
|
onStart?(): void;
|
|
28
28
|
onEnd?(): void;
|
|
29
|
-
onPreFixedUpdate?(): void;
|
|
29
|
+
onPreFixedUpdate?(time: number, deltaTime: number): void;
|
|
30
30
|
onPostPhysicsUpdate?(time: number, deltaTime: number): void;
|
|
31
|
+
onLateFixedUpdate?(time: number, deltaTime: number): void;
|
|
31
32
|
onFixedUpdate?(time: number, deltaTime: number): void;
|
|
32
|
-
onPrePhysicUpdate?(time: number, deltaTime: number): void;
|
|
33
33
|
onPhysicsUpdate?(time: number, deltaTime: number): void;
|
|
34
|
+
onPrePhysicsUpdate?(time: number, deltaTime: number): void;
|
|
34
35
|
onUpdate?(time: number, deltaTime: number, alpha: number): void;
|
|
35
36
|
onLateUpdate?(time: number, deltaTime: number, alpha: number): void;
|
|
36
|
-
onRender?(): void;
|
|
37
|
+
onRender?(time: number, deltaTime: number, alpha: number): void;
|
|
37
38
|
// new(): GameSystem;
|
|
38
39
|
}
|
|
39
40
|
|
|
@@ -63,8 +64,24 @@ export type OnFixedUpdateParams = {
|
|
|
63
64
|
deltaTime: number;
|
|
64
65
|
};
|
|
65
66
|
|
|
67
|
+
export type OnEarlyUpdateParams = { time: number, deltaTime: number };
|
|
66
68
|
|
|
67
69
|
export type AsyncAction<T = unknown> = (gameEngine: GameEngine) => Promise<T>;
|
|
68
70
|
// export type Action<T = unknown> = (gameEngine: GameEngine) => T;
|
|
69
|
-
export type Action<T=any> = (gameEngine: GameEngine) => T;
|
|
71
|
+
export type Action<T = any> = (gameEngine: GameEngine) => T;
|
|
70
72
|
export type Class<T = any> = { new(...args: any[]): T; }
|
|
73
|
+
|
|
74
|
+
export const EngineSignals = {
|
|
75
|
+
OnStart: Symbol('OnStart'),
|
|
76
|
+
OnEnd: Symbol('OnEnd'),
|
|
77
|
+
OnUpdate: Symbol('OnUpdate'),
|
|
78
|
+
OnLateUpdate: Symbol('OnLateUpdate'),
|
|
79
|
+
OnFixedUpdate: Symbol('OnFixedUpdate'),
|
|
80
|
+
OnPreFixedUpdate: Symbol('OnPreFixedUpdate'),
|
|
81
|
+
OnPrePhysicsUpdate: Symbol('OnPrePhysicsUpdate'),
|
|
82
|
+
OnPhysicsUpdate: Symbol('OnPhysicsUpdate'),
|
|
83
|
+
OnPostPhysicsUpdate: Symbol('OnPostPhysicsUpdate'),
|
|
84
|
+
onLateFixedUpdate: Symbol('onLateFixedUpdate'),
|
|
85
|
+
OnRender: Symbol('OnRender'),
|
|
86
|
+
OnPrepare: Symbol('OnPrepare'),
|
|
87
|
+
};
|