mani-game-engine 1.0.0-pre.24 → 1.0.0-pre.29

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.
@@ -1,5 +1,5 @@
1
1
  import { Class, EcsInjector, Signal, SignalCallback } from '../index';
2
- import { ID } from 'mani-injector';
2
+ import { ID } from '../injector';
3
3
  export declare type ScopeSignalOptions = {
4
4
  keepAlive?: boolean | Scope[];
5
5
  group?: string;
@@ -1,5 +1,5 @@
1
- import { putIfAbsent } from 'mani-injector';
2
1
  import { signalHandlers } from '../ecsInjector';
2
+ import { putIfAbsent } from '../injector';
3
3
  export const scopeSignalHandlers = new Map();
4
4
  export const OnScopeSignal = (id, options) => (target, propertyKey, descriptor) => {
5
5
  if (target instanceof Function) {
@@ -1 +1 @@
1
- {"version":3,"file":"scopeContext.js","sourceRoot":"","sources":["../../src/scope/scopeContext.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scopeContext.js","sourceRoot":"","sources":["../../src/scope/scopeContext.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAK,WAAW,EAAC,MAAM,aAAa,CAAC;AAI5C,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAA+C,CAAC;AAE1F,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAAM,EAAE,OAA4B,EAAE,EAAE,CAAC,CAAC,MAAW,EAAE,WAAmB,EAAE,UAA8B,EAAE,EAAE;IACxI,IAAI,MAAM,YAAY,QAAQ,EAAE;QAC5B,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;KACzD;SAAM;QACH,MAAM,WAAW,GAAG,WAAW,CAAC,mBAAmB,EAAE,MAAM,CAAC,WAAW,EAAE,GAAwC,EAAE,CAAC,EAAE,CAAC,CAAC;QACxH,WAAW,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;KAChD;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG;IACzB,GAAG,EAAE,IAAI;CACZ,CAAC;AAYF,MAAM,kBAAkB;IAIpB,YAAoB,aAA4B,EAAE,OAA4B;QAA1D,kBAAa,GAAb,aAAa,CAAe;QAC5C,IAAI,CAAC,SAAS,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,CAAC;QACpC,IAAI,CAAC,KAAK,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,CAAC;IAChC,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,UAAU;QACN,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAED,MAAM;QACF,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;IAChC,CAAC;CACJ;AAED,MAAM,UAAU;IAMZ,YAAqB,SAAuB;QAAvB,cAAS,GAAT,SAAS,CAAc;QALnC,UAAK,GAAmB,EAAE,CAAC;QACpC,uBAAkB,GAAe,EAAE,CAAC;QACpC,kBAAa,GAAG,KAAK,CAAC;QAIlB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IAED,IAAI,aAAa;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC7C,CAAC;CAEJ;AAYD,MAAM,OAAO,YAAY;IAYrB,YAAY,QAAqB,EAAE,UAAiB,EAAE,OAAsB,EAAU,MAAqB;;QAArB,WAAM,GAAN,MAAM,CAAe;QAR1F,mBAAc,GAAyB,EAAE,CAAC;QAInD,oBAAe,GAAoB,EAAE,CAAC;QACtC,WAAM,GAAG,KAAK,CAAC;QACf,yBAAoB,GAAG,KAAK,CAAC;QAGjC,IAAI,CAAC,MAAM,EAAE;YACT,IAAI,CAAC,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;SAErC;aAAM;YACH,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;YAC1B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC/B;QAED,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;QAEvC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;QAC5C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAE9C,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG;YACN,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,oBAAoB,EAAE,YAAY,CAAC,EAAE;gBACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC9C,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;YAC5D,CAAC;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAU,CAAC;QACpD,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAE5B,MAAA,MAAA,IAAI,CAAC,KAAK,EAAC,OAAO,kDAAI,CAAC;QACvB,MAAA,MAAA,IAAI,CAAC,KAAK,EAAC,UAAU,kDAAI,CAAC;IAC9B,CAAC;IAED,IAAI,MAAM;QACN,OAAO,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;IACzC,CAAC;IAGD,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED,IAAI,QAAQ;QACR,OAAO,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;IAC7C,CAAC;IAED,IAAI,aAAa,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA,CAAC;IAOvD,UAAU,CAAC,UAAiB,EAAE,OAAsB;QAChD,IAAI,UAAU,CAAC;QACf,MAAM,QAAQ,GAAG,GAAG,EAAE;;YAElB,MAAA,MAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAC,SAAS,kDAAI,CAAC;YACvC,MAAA,MAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAC,YAAY,kDAAI,CAAC;YAE1C,UAAU,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YAEpG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;YACzD,IAAI,UAAU,EAAE;gBACZ,UAAU,EAAE,CAAC;aAChB;iBAAM;gBACH,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC;aACpC;QACL,CAAC,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;YAC3B,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;YAChC,QAAQ,EAAE,CAAC;SACd;aAAM;YACH,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAChD;QACD,OAAO,UAAU,CAAC;IACtB,CAAC;IAKD,SAAS,CAAC,MAAc;QACpB,MAAM,QAAQ,GAAG,GAAG,EAAE;YAClB,IAAI,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;YAEzD,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;YACrD,OAAO,IAAI,EAAE;gBACT,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;gBACnC,IAAI,CAAC,GAAG,EAAE;oBACN,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;iBACxC;gBACD,GAAI,CAAC,QAAQ,EAAE,CAAC;gBAChB,IAAI,GAAI,CAAC,KAAK,CAAC,WAAW,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;oBAC9C,MAAM;iBACT;aACJ;YACD,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;YAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;YACzD,IAAI,UAAU,EAAE;gBACZ,UAAU,EAAE,CAAC;aAChB;iBAAM;gBACH,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC;aACpC;QAEL,CAAC,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;YAC3B,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;YAChC,QAAQ,EAAE,CAAC;SACd;aAAM;YACH,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAChD;IACL,CAAC;IAED,cAAc;QACV,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE;YACnB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YACnC,IAAI,CAAC,GAAG,EAAE;gBACN,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;aACxC;YACD,GAAG,CAAC,QAAQ,EAAE,CAAC;SAClB;QACD,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;IAClC,CAAC;IAEO,QAAQ;QACZ,IAAI,aAAa,CAAC,GAAG,EAAE;YACnB,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC,CAAC;SAC1G;IACL,CAAC;IAED,eAAe;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACtE,CAAC;IAED,cAAc,CAAI,MAAiB,EAAE,QAA2B,EAAE,MAA8B;QAC5F,MAAM,aAAa,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;QAC5F,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC5C,CAAC;IAED,uBAAuB;QACnB,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAChC,CAAC;IAED,sBAAsB;QAClB,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;QAClC,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAChC,CAAC;IAEO,oBAAoB,CAAC,aAAa,GAAG,KAAK;;QAC9C,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,cAAc,EAAE;YACvC,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACf,OAAO,CAAC,QAAQ,EAAE,CAAC;aACtB;iBAAM,IAAI,aAAa,EAAE;gBACtB,OAAO,CAAC,UAAU,EAAE,CAAC;aACxB;iBAAM,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI,EAAE;gBACnC,OAAO,CAAC,QAAQ,EAAE,CAAC;aACtB;iBAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;gBAG9B,IAAI,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE;oBACvE,OAAO,CAAC,QAAQ,EAAE,CAAC;iBACtB;qBAAM;oBACH,OAAO,CAAC,UAAU,EAAE,CAAC;iBACxB;aACJ;iBAAM;gBACH,OAAO,CAAC,UAAU,EAAE,CAAC;aACxB;SACJ;QACD,aAAa,GAAG,aAAa,IAAI,IAAI,CAAC,oBAAoB,CAAC;QAC3D,MAAA,IAAI,CAAC,MAAM,0CAAE,oBAAoB,CAAC,aAAa,CAAC,CAAC;IACrD,CAAC;IAEO,oBAAoB;QACxB,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,cAAc,EAAE;YAC7C,aAAa,CAAC,MAAM,EAAE,CAAC;SAC1B;IACL,CAAC;IAEO,eAAe;QACnB,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACjE,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtB,KAAK,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,OAAO,CAAC,IAAI,QAAQ,EAAE;YACzC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAC3C,MAAM,QAAQ,GAAS,IAAI,CAAC,KAAM,CAAE,KAAK,CAAC,CAAC;YAC3C,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,kCAAM,OAAO,KAAE,OAAO,EAAE,IAAI,CAAC,KAAK,IAAE,CAAC;SAC5E;IACL,CAAC;IAEO,iBAAiB,CAAC,YAAoB;QAC1C,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QAC9D,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtB,KAAK,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,QAAQ,EAAE;YAChC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAC3C,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAO,YAAa,CAAE,KAAK,CAAC,EAAE,YAAY,CAAC,CAAC;YAC5E,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SAC5C;IACL,CAAC;IAEO,qBAAqB;QACzB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,eAAe,EAAE;YACxC,OAAO,CAAC,MAAM,EAAE,CAAC;SACpB;QACD,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;IAC9B,CAAC;IAEO,QAAQ;;QAGZ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACd,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;SAC/C;QACD,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,MAAA,MAAA,IAAI,CAAC,KAAK,EAAC,YAAY,kDAAI,CAAC;QAC5B,MAAA,MAAA,IAAI,CAAC,KAAK,EAAC,MAAM,kDAAI,CAAC;QACtB,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC;QACnC,MAAA,MAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAC,WAAW,kDAAI,CAAC;QAClC,MAAA,MAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAC,UAAU,kDAAI,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACvB,CAAC;CACJ"}
package/lib/types.d.ts CHANGED
@@ -5,11 +5,11 @@ export interface System {
5
5
  onStart?(): void;
6
6
  onEnd?(): void;
7
7
  onPreFixedUpdate?(time: number, deltaTime: number): void;
8
- onEarlyUpdate?(time: number, deltaTime: number): void;
9
8
  onFixedUpdate?(time: number, deltaTime: number): void;
10
9
  onPhysicsUpdate?(time: number, deltaTime: number): void;
11
10
  onUpdate?(time: number, deltaTime: number, alpha: number): void;
12
11
  onLateUpdate?(time: number, deltaTime: number, alpha: number): void;
12
+ onPrePhysicsUpdate?(time: number, deltaTime: number): void;
13
13
  onPostPhysicsUpdate?(time: number, deltaTime: number): void;
14
14
  onLateFixedUpdate?(time: number, deltaTime: number): void;
15
15
  onRender?(time: number, deltaTime: number, alpha: number): void;
@@ -24,6 +24,7 @@ export interface Service {
24
24
  onLateFixedUpdate?(time: number, deltaTime: number): void;
25
25
  onFixedUpdate?(time: number, deltaTime: number): void;
26
26
  onPhysicsUpdate?(time: number, deltaTime: number): void;
27
+ onPrePhysicsUpdate?(time: number, deltaTime: number): void;
27
28
  onUpdate?(time: number, deltaTime: number, alpha: number): void;
28
29
  onLateUpdate?(time: number, deltaTime: number, alpha: number): void;
29
30
  onRender?(time: number, deltaTime: number, alpha: number): void;
@@ -61,8 +62,10 @@ export declare const EngineSignals: {
61
62
  OnUpdate: symbol;
62
63
  OnLateUpdate: symbol;
63
64
  OnFixedUpdate: symbol;
64
- OnPrePhysics: symbol;
65
- OnPostPhysics: symbol;
65
+ OnPreFixedUpdate: symbol;
66
+ OnPrePhysicsUpdate: symbol;
67
+ OnPhysicsUpdate: symbol;
68
+ OnPostPhysicsUpdate: symbol;
66
69
  onLateFixedUpdate: symbol;
67
70
  OnRender: symbol;
68
71
  OnPrepare: symbol;
package/lib/types.js CHANGED
@@ -4,9 +4,11 @@ export const EngineSignals = {
4
4
  OnUpdate: Symbol('OnUpdate'),
5
5
  OnLateUpdate: Symbol('OnLateUpdate'),
6
6
  OnFixedUpdate: Symbol('OnFixedUpdate'),
7
- OnPrePhysics: Symbol('OnPostPhysics'),
8
- OnPostPhysics: Symbol('OnPostPhysics'),
9
- onLateFixedUpdate: Symbol('OnPrepare'),
7
+ OnPreFixedUpdate: Symbol('OnPreFixedUpdate'),
8
+ OnPrePhysicsUpdate: Symbol('OnPrePhysicsUpdate'),
9
+ OnPhysicsUpdate: Symbol('OnPhysicsUpdate'),
10
+ OnPostPhysicsUpdate: Symbol('OnPostPhysicsUpdate'),
11
+ onLateFixedUpdate: Symbol('onLateFixedUpdate'),
10
12
  OnRender: Symbol('OnRender'),
11
13
  OnPrepare: Symbol('OnPrepare'),
12
14
  };
package/lib/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAwEA,MAAM,CAAC,MAAM,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,YAAY,EAAE,MAAM,CAAC,eAAe,CAAC;IACrC,aAAa,EAAE,MAAM,CAAC,eAAe,CAAC;IACtC,iBAAiB,EAAE,MAAM,CAAC,WAAW,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC;CACjC,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAyEA,MAAM,CAAC,MAAM,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,iBAAiB,EAAE,MAAM,CAAC,mBAAmB,CAAC;IAC9C,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC;CACjC,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.24",
4
+ "version": "1.0.0-pre.29",
5
5
  "description": "entity component system game engine for typescript",
6
6
  "private": false,
7
7
  "scripts": {
@@ -30,12 +30,10 @@
30
30
  "ts-node": "^9.1.1",
31
31
  "tslib": "^2.2.0",
32
32
  "typescript": "^4.2.4",
33
- "mani-injector": "0.0.3",
34
- "mani-signal": "^1.0.6"
33
+ "mani-signal": "1.x"
35
34
  },
36
35
  "peerDependencies": {
37
36
  "reflect-metadata": "0.x",
38
- "mani-injector": "0.x",
39
37
  "mani-signal": "1.x"
40
38
  }
41
39
  }
@@ -1,6 +1,6 @@
1
1
  // TODO: what if systems for entity without components are created?
2
- import {Class, createDependencyAnnotation, Dependency, ID, Injector, putIfAbsent, ResolverContext, ResolverFunction} from 'mani-injector';
3
2
  import {Signal} from 'mani-signal';
3
+ import {Class, createDependencyAnnotation, Dependency, ID, Injector, putIfAbsent, ResolverContext, ResolverFunction} from './injector';
4
4
  import {SystemContext} from './systemContext';
5
5
 
6
6
  type ComponentClass = Class;
package/src/gameEngine.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  import {Action, Class, EngineSignals, GameEnginePlugin, OnFixedUpdateParams, OnUpdateParams, Service, System} from './types';
2
2
  import {Signal, SignalBinding} from 'mani-signal';
3
3
  import {Entity} from './entity';
4
- import {ID, putIfAbsent} from 'mani-injector';
5
4
  import {EcsInjector, signalHandlers, staticSignalHandlers} from './ecsInjector';
6
5
  import {Clock, GameClock} from './clock';
7
6
  import {SystemContext} from './systemContext';
7
+ import {ID, putIfAbsent} from './injector';
8
8
 
9
9
  type AddEntry = [Entity, () => void];
10
10
  type RemoveEntry = [Entity, () => void];
@@ -33,6 +33,7 @@ export class GameEngine {
33
33
  readonly onUpdate: Signal<OnUpdateParams>;
34
34
  readonly onFixedUpdate: Signal<OnFixedUpdateParams>;
35
35
  readonly onPrePhysicsUpdate: Signal<OnFixedUpdateParams>;
36
+ readonly onPhysicsUpdate: Signal<OnFixedUpdateParams>;
36
37
  readonly onPostPhysicsUpdate: Signal<OnFixedUpdateParams>;
37
38
  readonly onLateFixedUpdate: Signal<OnFixedUpdateParams>;
38
39
  readonly onLateUpdate: Signal<OnUpdateParams>;
@@ -42,6 +43,7 @@ export class GameEngine {
42
43
  private readonly onFixedUpdateSet = new Set<System>();
43
44
  private readonly onPreFixedUpdateSet = new Set<System>();
44
45
  private readonly onPhysicsUpdateSet = new Set<System>();
46
+ private readonly onPrePhysicsUpdateSet = new Set<System>();
45
47
  private readonly onPostPhysicsUpdateSet = new Set<System>();
46
48
  private readonly onLateFixedUpdateSet = new Set<System>();
47
49
  private readonly onLateUpdateSet = new Set<System>();
@@ -86,8 +88,9 @@ export class GameEngine {
86
88
  this.onFixedUpdate = this.injector.getSignal(EngineSignals.OnFixedUpdate);
87
89
  this.onUpdate = this.injector.getSignal(EngineSignals.OnUpdate);
88
90
  this.onLateUpdate = this.injector.getSignal(EngineSignals.OnLateUpdate);
89
- this.onPrePhysicsUpdate = this.injector.getSignal(EngineSignals.OnPostPhysics);
90
- this.onPostPhysicsUpdate = this.injector.getSignal(EngineSignals.OnPostPhysics);
91
+ this.onPrePhysicsUpdate = this.injector.getSignal(EngineSignals.OnPrePhysicsUpdate);
92
+ this.onPhysicsUpdate = this.injector.getSignal(EngineSignals.OnPhysicsUpdate);
93
+ this.onPostPhysicsUpdate = this.injector.getSignal(EngineSignals.OnPostPhysicsUpdate);
91
94
  this.onLateFixedUpdate = this.injector.getSignal(EngineSignals.onLateFixedUpdate);
92
95
 
93
96
  this.setupClock();
@@ -124,6 +127,7 @@ export class GameEngine {
124
127
  service.onFixedUpdate && this.onFixedUpdateSet.add(service);
125
128
  service.onUpdate && this.onUpdateSet.add(service);
126
129
  service.onLateUpdate && this.onLateUpdateSet.add(service);
130
+ service.onPrePhysicsUpdate && this.onPrePhysicsUpdateSet.add(service);
127
131
  service.onPhysicsUpdate && this.onPhysicsUpdateSet.add(service);
128
132
  service.onPostPhysicsUpdate && this.onPostPhysicsUpdateSet.add(service);
129
133
  service.onLateFixedUpdate && this.onLateFixedUpdateSet.add(service);
@@ -189,6 +193,7 @@ export class GameEngine {
189
193
  for (const system of this.onPhysicsUpdateSet) {
190
194
  system.onPhysicsUpdate!(time, deltaTime);
191
195
  }
196
+ this.onPhysicsUpdate.dispatch(params);
192
197
  this.onPostPhysicsUpdate.dispatch(params);
193
198
  for (const system of this.onPostPhysicsUpdateSet) {
194
199
  system.onPostPhysicsUpdate!(time, deltaTime);
@@ -346,10 +351,10 @@ export class GameEngine {
346
351
  system.onEnd && system.onEnd();
347
352
  system.onPreFixedUpdate && this.onPreFixedUpdateSet.delete(system);
348
353
  system.onFixedUpdate && this.onFixedUpdateSet.delete(system);
349
- system.onEarlyUpdate && this.onEarlyUpdateSet.delete(system);
350
354
  system.onUpdate && this.onUpdateSet.delete(system);
351
355
  system.onLateUpdate && this.onLateUpdateSet.delete(system);
352
356
  system.onPhysicsUpdate && this.onPhysicsUpdateSet.delete(system);
357
+ system.onPrePhysicsUpdate && this.onPrePhysicsUpdateSet.delete(system);
353
358
  system.onPostPhysicsUpdate && this.onPostPhysicsUpdateSet.delete(system);
354
359
  system.onLateFixedUpdate && this.onLateFixedUpdateSet.delete(system);
355
360
  system.onRender && this.onRenderUpdateSet.delete(system);
@@ -387,10 +392,10 @@ export class GameEngine {
387
392
  system.onStart && system.onStart();
388
393
  system.onPreFixedUpdate && this.onPreFixedUpdateSet.add(system);
389
394
  system.onFixedUpdate && this.onFixedUpdateSet.add(system);
390
- system.onEarlyUpdate && this.onEarlyUpdateSet.add(system);
391
395
  system.onUpdate && this.onUpdateSet.add(system);
392
396
  system.onLateUpdate && this.onLateUpdateSet.add(system);
393
397
  system.onPhysicsUpdate && this.onPhysicsUpdateSet.add(system);
398
+ system.onPrePhysicsUpdate && this.onPrePhysicsUpdateSet.add(system);
394
399
  system.onPostPhysicsUpdate && this.onPostPhysicsUpdateSet.add(system);
395
400
  system.onLateFixedUpdate && this.onLateFixedUpdateSet.add(system);
396
401
  system.onRender && this.onRenderUpdateSet.add(system);
package/src/index.ts CHANGED
@@ -6,7 +6,8 @@ export * from './systemContext';
6
6
  export {EcsInjector, EntityComponent, GetComponent, GetEntity, GetContext, GetSignal, OnSignal} from './ecsInjector';
7
7
 
8
8
  // intellij doesnt auto resolve imports if we just export * from an external dependency
9
- import {ID, Inject, InjectId, Injector, InjectType, putIfAbsent} from 'mani-injector';
9
+
10
+ import {ID, Inject, InjectId, Injector, InjectType, putIfAbsent} from './injector';
10
11
  import {Signal, SignalBinding, SignalCallback} from 'mani-signal';
11
12
  import {Clock} from './clock';
12
13
 
@@ -0,0 +1,363 @@
1
+ import 'reflect-metadata';
2
+
3
+ export type Class<T = any> = { name: string, new(...args: any[]): T; }
4
+
5
+ type ProviderFunction = () => unknown;
6
+ export type ResolverFunction = (context?: any) => unknown;
7
+
8
+ export type ID = string | symbol;
9
+
10
+ export type Dependency = { kind: string; index: number };
11
+ type TypeDependency = Dependency & { kind: 'type'; index: number; id: ID; };
12
+ type InjectDependency = Dependency & { kind: 'inject'; index: number; id: ID; type: Class; };
13
+
14
+ const enum TypeMappingKind { CLASS, SINGLETON, VALUE, PROVIDER}
15
+
16
+ type ClassTypeMapping = { kind: TypeMappingKind.CLASS; type: Class };
17
+ type SingletonTypeMapping = { kind: TypeMappingKind.SINGLETON; type: Class; injector: Injector };
18
+ type ValueTypeMapping = { kind: TypeMappingKind.VALUE; value: unknown; };
19
+ type ProviderTypeMapping = { kind: TypeMappingKind.PROVIDER; provider: ProviderFunction; };
20
+ // undefined kind is needed because there is no default mapping for types
21
+ type TypeMapping = ClassTypeMapping | SingletonTypeMapping | ValueTypeMapping | ProviderTypeMapping | { kind: undefined };
22
+
23
+ const enum ClassMappingKind { INSTANCE, VALUE, SINGLETON, PROVIDER}
24
+
25
+ type InstanceClassMapping = { kind: ClassMappingKind.INSTANCE; };
26
+ type ValueClassMapping = { kind: ClassMappingKind.VALUE; value: unknown; };
27
+ type SingletonClassMapping = { kind: ClassMappingKind.SINGLETON; injector: Injector };
28
+ type ProviderClassMapping = { kind: ClassMappingKind.PROVIDER; provider: ProviderFunction; };
29
+ type ClassMapping = InstanceClassMapping | ValueClassMapping | SingletonClassMapping | ProviderClassMapping;
30
+
31
+ // most of the class mappings are done with the default id, store them in the def field so we eliminate a second map lookup
32
+ type MapContainer = { map: Map<ID, ClassMapping>; def?: ClassMapping; };
33
+ type SingletonContainer = { map: Map<ID, Object>; def?: Object; };
34
+ type ClassResolverContainer = { map: Map<ID, ResolverFunction>; def?: ResolverFunction; };
35
+
36
+ export type ResolverContext = {
37
+ [propName: string]: any;
38
+ type: Class
39
+ kind: string;
40
+ }
41
+
42
+ const isInjectDependency = (dep: Dependency): dep is InjectDependency => dep.kind === 'inject';
43
+ const isTypeDependency = (dep: Dependency): dep is TypeDependency => dep.kind === 'type';
44
+
45
+ interface ClassMapper<T extends Class> {
46
+ toValue(value: InstanceType<T>): void;
47
+ toSingleton(): void;
48
+ toProvider(provider: () => InstanceType<T>): void;
49
+ }
50
+
51
+ interface TypeMapper<T> {
52
+ toClass<C extends Class<T>>(classValue: C): void;
53
+ toSingleton<C extends Class<T>>(classValue: C): void;
54
+ toValue(value: T): void;
55
+ toProvider(provider: () => T): void;
56
+ }
57
+
58
+ // why is this not in javascript?! ...
59
+ export const putIfAbsent = <T extends Map<K, V>, K, V>(map: T, key: K, value: () => V) => {
60
+ let v = map.get(key);
61
+ if (!v) {
62
+ v = value();
63
+ map.set(key, v);
64
+ }
65
+ return v;
66
+ };
67
+
68
+ // helper method to create annotation functions
69
+ export const createDependencyAnnotation = (cb: (type: any, index: number, dependantType: Class) => Dependency) => (dependantType: Class, _propertyKey: string | symbol, index: number): any => {
70
+ const metadata = Reflect.getMetadata('design:paramtypes', dependantType);
71
+ const type = metadata[index];
72
+ if (type === dependantType) {
73
+ throw new Error('Could not inject class in itself.');
74
+ }
75
+ const depList = putIfAbsent(Injector.dependencyMap, dependantType, (): Dependency[] => []);
76
+ depList.push(cb(type, index, dependantType));
77
+ };
78
+
79
+ // Default DependencyAnnotations
80
+ export const Inject = createDependencyAnnotation((type, index) => ({kind: 'inject', index, type, id: ''}));
81
+ export const InjectId = (id: ID) => createDependencyAnnotation((type, index) => ({kind: 'inject', index, type, id}));
82
+ export const InjectType = (id: ID) => createDependencyAnnotation((_type, index) => ({kind: 'type', index, id}));
83
+
84
+ type DependencyExtensionResolver = (context: ResolverContext, dependency: Dependency) => ResolverFunction;
85
+
86
+ export class Injector {
87
+ static readonly dependencyMap = new Map<Class, Dependency[]>();
88
+
89
+ protected readonly typeMappings = new Map<ID, TypeMapping>();
90
+ protected readonly classMappings = new Map<Class, MapContainer>();
91
+ protected readonly parameterResolverArrays = new Map<Class, ResolverFunction[]>();
92
+
93
+ protected readonly classResolvers = new Map<Class, ClassResolverContainer>();
94
+ protected readonly typeResolvers = new Map<ID, ResolverFunction>();
95
+
96
+ protected readonly singletons = new Map<Class, SingletonContainer>();
97
+ protected readonly typeSingletons = new Map<ID, Object>();
98
+
99
+ protected readonly dependencyResolverExtensions: Map<string, DependencyExtensionResolver>;
100
+
101
+ constructor(readonly parent?: Injector) {
102
+ this.dependencyResolverExtensions = parent ? parent.dependencyResolverExtensions : new Map<string, DependencyExtensionResolver>();
103
+ this.map(Injector).toValue(this);
104
+ }
105
+
106
+ createChild(): this {
107
+ return new (<typeof Injector>this.constructor)(this) as this;
108
+ }
109
+
110
+ addExtensionResolver(kind: string, resolver: DependencyExtensionResolver) {
111
+ this.dependencyResolverExtensions.set(kind, resolver);
112
+ }
113
+
114
+ map<T extends Class>(type: T, id: ID = ''): ClassMapper<T> {
115
+ const mapper = new InternalClassMapper<T>(this);
116
+ const idMappings = putIfAbsent(this.classMappings, type as Class, (): MapContainer => ({map: new Map<ID, ClassMapping>()}));
117
+ if (id === '') {
118
+ idMappings.def = mapper.mapping;
119
+ } else {
120
+ idMappings.map.set(id, mapper.mapping);
121
+ }
122
+ return mapper;
123
+ }
124
+
125
+ mapType<T>(id: ID): TypeMapper<T> {
126
+ const typeMapper = new InternalTypeMapper<T>(this);
127
+ this.typeMappings.set(id, typeMapper.mapping);
128
+ return typeMapper;
129
+ }
130
+
131
+ getType<T>(id: ID): T {
132
+ const typeResolver = this.getTypeResolver(id);
133
+ if (!typeResolver) {
134
+ throw new Error(`No Mapping for Type with id: '${String(id)}'`);
135
+ }
136
+ return typeResolver() as T;
137
+ }
138
+
139
+ get<T extends Class>(type: T, id: ID = ''): InstanceType<T> {
140
+ const resolver = this.getClassIdResolver(type, id);
141
+ if (!resolver) {
142
+ throw new Error(`No Mapping for Type ${type.name}` + String(id === '' ? '' : ` with id: '${String(id)}'`));
143
+ }
144
+ return resolver() as InstanceType<T>;
145
+ }
146
+
147
+ protected createInstance<T extends Class>(type: T) {
148
+ return this.getCreateInstanceResolver(type)();
149
+ }
150
+
151
+ protected createResolverArray(resolverContext: ResolverContext) {
152
+ const {type} = resolverContext;
153
+ const result: ResolverFunction[] = [];
154
+ const dependencies = Injector.dependencyMap.get(resolverContext.type);
155
+ if (!dependencies) {
156
+ return [];
157
+ }
158
+ for (const dependency of dependencies) {
159
+ let resolver: ResolverFunction;
160
+ if (isInjectDependency(dependency)) {
161
+ if (!dependency.type) throw new Error(`Undefined dependency type for ${type.name}. Check for circular dependency.`);
162
+ const classIdResolver = this.getClassIdResolver(dependency.type, dependency.id);
163
+ if (!classIdResolver) {
164
+ throw new Error(`Could not inject ${dependency.type.name} into ${resolverContext.type.name}`);
165
+ }
166
+ resolver = classIdResolver;
167
+ } else if (isTypeDependency(dependency)) {
168
+ const typeResolver = this.getTypeResolver(dependency.id);
169
+ if (!typeResolver) {
170
+ throw new Error(`Could not inject type with id '${String(dependency.id)}' into ${resolverContext.type.name}`);
171
+ }
172
+ resolver = typeResolver;
173
+ } else {
174
+ const extensionResolver = this.dependencyResolverExtensions.get(dependency.kind);
175
+ if (!extensionResolver) {
176
+ throw new Error(`no dependency resolver for '${dependency.kind}'`);
177
+ }
178
+ resolver = extensionResolver(resolverContext, dependency);
179
+ }
180
+ result[dependency.index] = resolver;
181
+ }
182
+ return result;
183
+ }
184
+
185
+ protected getClassMapping(type: Class, id: ID): ClassMapping | undefined {
186
+ const idMapping = this.classMappings.get(type);
187
+ if (!idMapping) {
188
+ if (!this.parent) return undefined;
189
+ return this.parent.getClassMapping(type, id);
190
+ }
191
+ const mapping = id === '' ? idMapping.def : idMapping.map.get(id);
192
+ if (!mapping) {
193
+ if (!this.parent) return undefined;
194
+ return this.parent.getClassMapping(type, id);
195
+ }
196
+ return mapping;
197
+ }
198
+
199
+ protected getClassIdResolver(dependencyType: Class, id: ID) {
200
+ const getResolver = (): ResolverFunction | undefined => {
201
+ const mapping = this.getClassMapping(dependencyType, id);
202
+ if (!mapping) return undefined;
203
+ switch (mapping.kind) {
204
+ case ClassMappingKind.INSTANCE:
205
+ return this.getCreateInstanceResolver(dependencyType);
206
+ case ClassMappingKind.VALUE:
207
+ // we can cache the value for values
208
+ const instance = mapping.value;
209
+ return () => instance;
210
+ case ClassMappingKind.SINGLETON:
211
+ let singleton: unknown;
212
+ // use the injector defined in the mapping to get the right injector
213
+ const singletonContainer = putIfAbsent(mapping.injector.singletons, dependencyType, (): SingletonContainer => ({map: new Map<ID, Object>()}));
214
+ if (id === '') {
215
+ if (singletonContainer.def) {
216
+ singleton = singletonContainer.def;
217
+ } else {
218
+ singletonContainer.def = mapping.injector.createInstance(dependencyType);
219
+ singleton = singletonContainer.def;
220
+ }
221
+ } else {
222
+ singleton = putIfAbsent(singletonContainer.map, id, () => mapping.injector.createInstance(dependencyType));
223
+ }
224
+ return () => singleton;
225
+ case ClassMappingKind.PROVIDER:
226
+ // we can directly set the provider function as resolver
227
+ return mapping.provider;
228
+ }
229
+ };
230
+
231
+ const container = putIfAbsent(this.classResolvers, dependencyType, (): ClassResolverContainer => ({
232
+ def: undefined,
233
+ map: new Map<ID, ResolverFunction>(),
234
+ }));
235
+
236
+ if (id === '') {
237
+ if (container.def) {
238
+ return container.def;
239
+ }
240
+ const resolver = getResolver();
241
+ container.def = resolver;
242
+ return resolver;
243
+ } else {
244
+ return putIfAbsent(container.map, id, () => getResolver());
245
+ }
246
+ }
247
+
248
+ protected getTypeResolver(id: ID): ResolverFunction | undefined {
249
+ return putIfAbsent(this.typeResolvers, id, () => {
250
+ const mapping = this.getTypeMapping(id);
251
+ if (!mapping) return undefined;
252
+ if (mapping.kind === undefined) {
253
+ // mapping.kind is undefined if there is a type mapping without a target (toClass, toSingleton, toValue)
254
+ throw new Error(`No TypeMapping for id ${String(id)}.`);
255
+ }
256
+ if (mapping.kind === TypeMappingKind.VALUE) {
257
+ const instance = mapping.value;
258
+ return () => instance;
259
+ } else if (mapping.kind === TypeMappingKind.CLASS) {
260
+ return this.getCreateInstanceResolver(mapping.type);
261
+ } else if (mapping.kind === TypeMappingKind.SINGLETON) {
262
+ // use the injector defined in the mapping to get the right injector
263
+ const instance = putIfAbsent(mapping.injector.typeSingletons, id, () => mapping.injector.createInstance(mapping.type));
264
+ return () => instance;
265
+ } else {
266
+ // mapping kind has to be provider
267
+ return mapping.provider;
268
+ }
269
+ });
270
+ }
271
+
272
+ protected getCreateInstanceResolver(type: Class) {
273
+ const resolvers = putIfAbsent(this.parameterResolverArrays, type as Class, () => this.createResolverArray({
274
+ kind: 'class',
275
+ type: type,
276
+ }));
277
+ if (resolvers.length === 0) {
278
+ return () => new type();
279
+ }
280
+ const args = new Array(resolvers.length);
281
+ return () => {
282
+ for (let i = 0; i < args.length; i++) {
283
+ args[i] = resolvers[i]();
284
+ }
285
+ return new type(...args);
286
+ };
287
+ }
288
+
289
+ protected getTypeMapping(id: ID): TypeMapping | undefined {
290
+ const mapping = this.typeMappings.get(id);
291
+ if (!mapping) {
292
+ if (!this.parent) return undefined;
293
+ return this.parent.getTypeMapping(id);
294
+ }
295
+ return mapping;
296
+ }
297
+ }
298
+
299
+ class InternalTypeMapper<T> implements TypeMapper<T> {
300
+ mapping: TypeMapping = {kind: undefined};
301
+
302
+ constructor(private readonly injector: Injector) {
303
+ }
304
+
305
+ toClass<C extends Class<T>>(classValue: C): void {
306
+ Object.assign<TypeMapping, ClassTypeMapping>(this.mapping, {
307
+ kind: TypeMappingKind.CLASS,
308
+ type: classValue,
309
+ });
310
+ }
311
+
312
+ toSingleton<C extends Class<T>>(classValue: C): void {
313
+ Object.assign<TypeMapping, SingletonTypeMapping>(this.mapping, {
314
+ kind: TypeMappingKind.SINGLETON,
315
+ type: classValue,
316
+ injector: this.injector,
317
+ });
318
+ }
319
+
320
+ toValue(value: T): void {
321
+ Object.assign<TypeMapping, ValueTypeMapping>(this.mapping, {
322
+ kind: TypeMappingKind.VALUE,
323
+ value: value,
324
+ });
325
+ }
326
+
327
+ toProvider(provider: () => T): void {
328
+ Object.assign<TypeMapping, ProviderTypeMapping>(this.mapping, {
329
+ kind: TypeMappingKind.PROVIDER,
330
+ provider: provider,
331
+ });
332
+ }
333
+ }
334
+
335
+ class InternalClassMapper<T extends Class> implements ClassMapper<T> {
336
+ // instance is the default class mapping
337
+ mapping: ClassMapping = {kind: ClassMappingKind.INSTANCE};
338
+
339
+ constructor(private readonly injector: Injector) {}
340
+
341
+ toValue(value: InstanceType<T>) {
342
+ Object.assign<ClassMapping, ValueClassMapping>(this.mapping, {
343
+ kind: ClassMappingKind.VALUE,
344
+ value: value,
345
+ });
346
+ return value;
347
+ }
348
+
349
+ toSingleton(): void {
350
+ Object.assign<ClassMapping, SingletonClassMapping>(this.mapping, {
351
+ kind: ClassMappingKind.SINGLETON,
352
+ injector: this.injector,
353
+ });
354
+ this.mapping.kind = ClassMappingKind.SINGLETON;
355
+ }
356
+
357
+ toProvider(provider: () => InstanceType<T>): void {
358
+ Object.assign<ClassMapping, ProviderClassMapping>(this.mapping, {
359
+ kind: ClassMappingKind.PROVIDER,
360
+ provider: provider,
361
+ });
362
+ }
363
+ }
@@ -1,6 +1,6 @@
1
1
  import {Class, EcsInjector, Signal, SignalBinding, SignalCallback} from '../index';
2
- import {ID, putIfAbsent} from 'mani-injector';
3
2
  import {signalHandlers} from '../ecsInjector';
3
+ import {ID, putIfAbsent} from '../injector';
4
4
 
5
5
  export type ScopeSignalOptions = { keepAlive?: boolean | Scope[], group?: string }
6
6
 
package/src/types.ts CHANGED
@@ -6,11 +6,11 @@ export interface System {
6
6
  onStart?(): void;
7
7
  onEnd?(): void;
8
8
  onPreFixedUpdate?(time: number, deltaTime: number): void;
9
- onEarlyUpdate?(time: number, deltaTime: number): void;
10
9
  onFixedUpdate?(time: number, deltaTime: number): void;
11
10
  onPhysicsUpdate?(time: number, deltaTime: number): void;
12
11
  onUpdate?(time: number, deltaTime: number, alpha: number): void;
13
12
  onLateUpdate?(time: number, deltaTime: number, alpha: number): void;
13
+ onPrePhysicsUpdate?(time: number, deltaTime: number): void;
14
14
  onPostPhysicsUpdate?(time: number, deltaTime: number): void;
15
15
  onLateFixedUpdate?(time: number, deltaTime: number): void;
16
16
  onRender?(time: number, deltaTime: number, alpha: number): void;
@@ -31,6 +31,7 @@ export interface Service {
31
31
  onLateFixedUpdate?(time: number, deltaTime: number): void;
32
32
  onFixedUpdate?(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
37
  onRender?(time: number, deltaTime: number, alpha: number): void;
@@ -76,9 +77,11 @@ export const EngineSignals = {
76
77
  OnUpdate: Symbol('OnUpdate'),
77
78
  OnLateUpdate: Symbol('OnLateUpdate'),
78
79
  OnFixedUpdate: Symbol('OnFixedUpdate'),
79
- OnPrePhysics: Symbol('OnPostPhysics'),
80
- OnPostPhysics: Symbol('OnPostPhysics'),
81
- onLateFixedUpdate: Symbol('OnPrepare'),
80
+ OnPreFixedUpdate: Symbol('OnPreFixedUpdate'),
81
+ OnPrePhysicsUpdate: Symbol('OnPrePhysicsUpdate'),
82
+ OnPhysicsUpdate: Symbol('OnPhysicsUpdate'),
83
+ OnPostPhysicsUpdate: Symbol('OnPostPhysicsUpdate'),
84
+ onLateFixedUpdate: Symbol('onLateFixedUpdate'),
82
85
  OnRender: Symbol('OnRender'),
83
86
  OnPrepare: Symbol('OnPrepare'),
84
87
  };