@safe-engine/pixi 8.8.8 → 8.9.2

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,9 +1,11 @@
1
1
  import { Constructor } from 'entityx-ts';
2
- import { BaseComponentProps } from '..';
2
+ import { BaseComponentProps, Container } from '..';
3
3
  import { NodeComp } from '../components/NodeComp';
4
- export declare class EnhancedComponent<Props = object, N extends NodeComp<any> = NodeComp<any>> {
4
+ export declare class EnhancedComponent<Props = object, N extends NodeComp<Container> = NodeComp<Container>> {
5
5
  props: Props;
6
6
  enabled: boolean;
7
+ private _ticker;
8
+ private _timers;
7
9
  constructor(data?: BaseComponentProps<EnhancedComponent> & Props);
8
10
  init(data?: Props): void;
9
11
  node: N;
@@ -11,6 +13,10 @@ export declare class EnhancedComponent<Props = object, N extends NodeComp<any> =
11
13
  getComponent<T extends ComponentType>(component: Constructor<T>): T;
12
14
  getComponentsInChildren<T extends ComponentType>(component: Constructor<T>): T[];
13
15
  getComponentInChildren<T extends ComponentType>(component: Constructor<T>): T;
16
+ schedule(callback: any, interval: any, repeat?: number, delay?: number): void;
17
+ scheduleOnce(callback: any, delay: any, key?: any): void;
18
+ unschedule(callback: any): void;
19
+ unscheduleAllCallbacks(): void;
14
20
  isEqual(other: EnhancedComponent): boolean;
15
21
  }
16
22
  export type ComponentType = EnhancedComponent | NodeComp;
@@ -1 +1 @@
1
- {"version":3,"file":"EnhancedComponent.d.ts","sourceRoot":"","sources":["../../src/base/EnhancedComponent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,IAAI,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAEjD,qBAAa,iBAAiB,CAAC,KAAK,GAAG,MAAM,EAAE,CAAC,SAAS,QAAQ,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC;IACpF,KAAK,EAAE,KAAK,CAAY;IACxB,OAAO,UAAO;gBACF,IAAI,CAAC,EAAE,kBAAkB,CAAC,iBAAiB,CAAC,GAAG,KAAK;IAGhE,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK;IAQjB,IAAI,EAAE,CAAC,CAAA;IAEP,YAAY,CAAC,CAAC,SAAS,iBAAiB,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC;IAGzD,YAAY,CAAC,CAAC,SAAS,aAAa,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC;IAGnE,uBAAuB,CAAC,CAAC,SAAS,aAAa,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;IAGhF,sBAAsB,CAAC,CAAC,SAAS,aAAa,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC;IAG7E,OAAO,CAAC,KAAK,EAAE,iBAAiB;CAGjC;AAED,MAAM,MAAM,aAAa,GAAG,iBAAiB,GAAG,QAAQ,CAAA"}
1
+ {"version":3,"file":"EnhancedComponent.d.ts","sourceRoot":"","sources":["../../src/base/EnhancedComponent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAU,MAAM,IAAI,CAAA;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAEjD,qBAAa,iBAAiB,CAAC,KAAK,GAAG,MAAM,EAAE,CAAC,SAAS,QAAQ,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC;IAChG,KAAK,EAAE,KAAK,CAAY;IACxB,OAAO,UAAO;IACd,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,OAAO,CAAe;gBAElB,IAAI,CAAC,EAAE,kBAAkB,CAAC,iBAAiB,CAAC,GAAG,KAAK;IAKhE,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK;IAQjB,IAAI,EAAE,CAAC,CAAA;IAEP,YAAY,CAAC,CAAC,SAAS,iBAAiB,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC;IAGzD,YAAY,CAAC,CAAC,SAAS,aAAa,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC;IAGnE,uBAAuB,CAAC,CAAC,SAAS,aAAa,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;IAGhF,sBAAsB,CAAC,CAAC,SAAS,aAAa,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC;IAG7E,QAAQ,CAAC,QAAQ,KAAA,EAAE,QAAQ,KAAA,EAAE,MAAM,SAAiB,EAAE,KAAK,SAAI;IAwB/D,YAAY,CAAC,QAAQ,KAAA,EAAE,KAAK,KAAA,EAAE,GAAG,MAAY;IAsB7C,UAAU,CAAC,QAAQ,KAAA;IAQnB,sBAAsB;IAMtB,OAAO,CAAC,KAAK,EAAE,iBAAiB;CAGjC;AAED,MAAM,MAAM,aAAa,GAAG,iBAAiB,GAAG,QAAQ,CAAA"}
@@ -1,8 +1,12 @@
1
+ import { REPEAT_FOREVER } from 'pixi-action-ease';
2
+ import { Ticker } from '..';
1
3
  export class EnhancedComponent {
2
4
  constructor(data) {
3
5
  this.props = {};
4
6
  this.enabled = true;
5
7
  this.init(data);
8
+ this._ticker = Ticker.shared;
9
+ this._timers = new Map(); // Map<Function, TimerInfo>
6
10
  }
7
11
  init(data) {
8
12
  if (data) {
@@ -24,6 +28,57 @@ export class EnhancedComponent {
24
28
  getComponentInChildren(component) {
25
29
  return this.node.getComponentInChildren(component);
26
30
  }
31
+ schedule(callback, interval, repeat = REPEAT_FOREVER, delay = 0) {
32
+ if (this._timers.has(callback)) {
33
+ this.unschedule(callback);
34
+ }
35
+ let elapsed = -delay;
36
+ let count = 0;
37
+ const fn = () => {
38
+ elapsed += this._ticker.deltaMS / 1000;
39
+ if (elapsed >= interval) {
40
+ elapsed -= interval;
41
+ callback(count);
42
+ count++;
43
+ if (count > repeat) {
44
+ this.unschedule(callback);
45
+ }
46
+ }
47
+ };
48
+ this._timers.set(callback, { fn });
49
+ this._ticker.add(fn);
50
+ }
51
+ scheduleOnce(callback, delay, key = undefined) {
52
+ if (key) {
53
+ // Cho phép hủy bằng key thay vì callback
54
+ if (this._timers.has(key)) {
55
+ this.unschedule(key);
56
+ }
57
+ }
58
+ let elapsed = 0;
59
+ const fn = () => {
60
+ elapsed += this._ticker.deltaMS / 1000;
61
+ if (elapsed >= delay) {
62
+ callback();
63
+ this.unschedule(key || callback);
64
+ }
65
+ };
66
+ this._timers.set(key || callback, { fn });
67
+ this._ticker.add(fn);
68
+ }
69
+ unschedule(callback) {
70
+ const timer = this._timers.get(callback);
71
+ if (timer) {
72
+ this._ticker.remove(timer.fn);
73
+ this._timers.delete(callback);
74
+ }
75
+ }
76
+ unscheduleAllCallbacks() {
77
+ for (const { fn } of this._timers.values()) {
78
+ this._ticker.remove(fn);
79
+ }
80
+ this._timers.clear();
81
+ }
27
82
  isEqual(other) {
28
83
  return this.node.entity.id === other.node.entity.id;
29
84
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@safe-engine/pixi",
3
- "version": "8.8.8",
3
+ "version": "8.9.2",
4
4
  "description": "safex pixi plugin",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -17,12 +17,12 @@
17
17
  "author": "",
18
18
  "license": "ISC",
19
19
  "dependencies": {
20
- "@esotericsoftware/spine-core": "^4.2.94",
20
+ "@esotericsoftware/spine-core": "^4.2.95",
21
21
  "@pixi/tilemap": "^5.0.2",
22
22
  "@pixi/ui": "^2.2.7",
23
23
  "box2d-wasm": "^7.0.0",
24
24
  "entityx-ts": "^2.3.1",
25
- "pixi-action-ease": "^3.2.5",
25
+ "pixi-action-ease": "^3.3.2",
26
26
  "pixi-tagged-text-plus": "0.0.1-next.2",
27
27
  "pixi.js": "8.12.0",
28
28
  "planck": "^1.4.2"