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.
@@ -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 GameSystem {
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
- onRender?(): void;
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 GameService {
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
+ };