@safe-engine/pixi 8.3.6 → 8.4.1

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.
Files changed (139) hide show
  1. package/.github/workflows/npm-publish.yml +35 -0
  2. package/README.md +70 -5
  3. package/dist/app.d.ts +2 -5
  4. package/dist/app.d.ts.map +1 -1
  5. package/dist/app.js +44 -27
  6. package/dist/base/gworld.d.ts +2 -0
  7. package/dist/base/gworld.d.ts.map +1 -1
  8. package/dist/box2d-wasm/ContactListener.d.ts +12 -0
  9. package/dist/box2d-wasm/ContactListener.d.ts.map +1 -0
  10. package/dist/box2d-wasm/ContactListener.js +64 -0
  11. package/dist/box2d-wasm/PhysicsComponent.d.ts +50 -0
  12. package/dist/box2d-wasm/PhysicsComponent.d.ts.map +1 -0
  13. package/dist/box2d-wasm/PhysicsComponent.js +17 -0
  14. package/dist/box2d-wasm/PhysicsSprite.d.ts +11 -0
  15. package/dist/box2d-wasm/PhysicsSprite.d.ts.map +1 -0
  16. package/dist/box2d-wasm/PhysicsSprite.js +30 -0
  17. package/dist/box2d-wasm/PhysicsSystem.d.ts +17 -0
  18. package/dist/box2d-wasm/PhysicsSystem.d.ts.map +1 -0
  19. package/dist/box2d-wasm/PhysicsSystem.js +145 -0
  20. package/dist/box2d-wasm/debugDraw.d.ts +67 -0
  21. package/dist/box2d-wasm/debugDraw.d.ts.map +1 -0
  22. package/dist/box2d-wasm/debugDraw.js +224 -0
  23. package/dist/box2d-wasm/index.d.ts +6 -0
  24. package/dist/box2d-wasm/index.d.ts.map +1 -0
  25. package/dist/box2d-wasm/index.js +17 -0
  26. package/dist/collider/CollideComponent.d.ts.map +1 -1
  27. package/dist/collider/CollideComponent.js +12 -13
  28. package/dist/collider/CollideSystem.d.ts.map +1 -1
  29. package/dist/collider/CollideSystem.js +1 -2
  30. package/dist/collider/helper/utils.d.ts +2 -0
  31. package/dist/collider/helper/utils.d.ts.map +1 -1
  32. package/dist/collider/helper/utils.js +22 -0
  33. package/dist/collider/index.d.ts +1 -0
  34. package/dist/collider/index.d.ts.map +1 -1
  35. package/dist/collider/index.js +12 -0
  36. package/dist/components/NodeComp.d.ts +6 -4
  37. package/dist/components/NodeComp.d.ts.map +1 -1
  38. package/dist/components/NodeComp.js +17 -17
  39. package/dist/components/Scene.d.ts.map +1 -1
  40. package/dist/components/Scene.js +3 -4
  41. package/dist/core/director.d.ts.map +1 -1
  42. package/dist/core/director.js +4 -3
  43. package/dist/dragonbones/DragonBonesSystem.d.ts +2 -1
  44. package/dist/dragonbones/DragonBonesSystem.d.ts.map +1 -1
  45. package/dist/dragonbones/DragonBonesSystem.js +2 -0
  46. package/dist/dragonbones/index.d.ts +1 -0
  47. package/dist/dragonbones/index.d.ts.map +1 -1
  48. package/dist/dragonbones/index.js +7 -0
  49. package/dist/gui/GUIComponent.d.ts +0 -9
  50. package/dist/gui/GUIComponent.d.ts.map +1 -1
  51. package/dist/gui/GUIComponent.js +0 -37
  52. package/dist/gui/GUISystem.d.ts +1 -0
  53. package/dist/gui/GUISystem.d.ts.map +1 -1
  54. package/dist/gui/GUISystem.js +2 -15
  55. package/dist/index.d.ts +1 -0
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +1 -0
  58. package/dist/planck/PhysicsComponent.d.ts +7 -7
  59. package/dist/planck/PhysicsComponent.js +4 -4
  60. package/dist/planck/PhysicsSystem.js +12 -12
  61. package/dist/richtext/RichTextComp.d.ts +17 -0
  62. package/dist/richtext/RichTextComp.d.ts.map +1 -0
  63. package/dist/richtext/RichTextComp.js +38 -0
  64. package/dist/richtext/RichTextSystem.d.ts +7 -0
  65. package/dist/richtext/RichTextSystem.d.ts.map +1 -0
  66. package/dist/richtext/RichTextSystem.js +25 -0
  67. package/dist/richtext/html-text-parser.d.ts +20 -0
  68. package/dist/richtext/html-text-parser.d.ts.map +1 -0
  69. package/dist/richtext/html-text-parser.js +64 -0
  70. package/dist/richtext/index.d.ts +3 -0
  71. package/dist/richtext/index.d.ts.map +1 -0
  72. package/dist/richtext/index.js +7 -0
  73. package/dist/spine/index.d.ts +1 -0
  74. package/dist/spine/index.d.ts.map +1 -1
  75. package/dist/spine/index.js +7 -0
  76. package/package.json +9 -11
  77. package/src/@types/index.d.ts +2 -0
  78. package/src/@types/safex.d.ts +15 -0
  79. package/src/app.ts +85 -0
  80. package/src/base/EnhancedComponent.ts +37 -0
  81. package/src/base/gworld.ts +19 -0
  82. package/src/base/index.ts +3 -0
  83. package/src/base/utils.ts +23 -0
  84. package/src/box2d-wasm/ContactListener.ts +66 -0
  85. package/src/box2d-wasm/PhysicsComponent.ts +83 -0
  86. package/src/box2d-wasm/PhysicsSprite.ts +42 -0
  87. package/src/box2d-wasm/PhysicsSystem.ts +145 -0
  88. package/src/box2d-wasm/debugDraw.ts +257 -0
  89. package/src/box2d-wasm/index.ts +19 -0
  90. package/src/collider/CollideComponent.ts +257 -0
  91. package/src/collider/CollideSystem.ts +166 -0
  92. package/src/collider/helper/Intersection.ts +139 -0
  93. package/src/collider/helper/utils.ts +37 -0
  94. package/src/collider/index.ts +16 -0
  95. package/src/components/BaseComponent.ts +17 -0
  96. package/src/components/NodeComp.ts +434 -0
  97. package/src/components/Scene.ts +17 -0
  98. package/src/core/Color.ts +7 -0
  99. package/src/core/LoadingBar.ts +63 -0
  100. package/src/core/NodePool.ts +28 -0
  101. package/src/core/Size.ts +21 -0
  102. package/src/core/director.ts +11 -0
  103. package/src/core/math.ts +13 -0
  104. package/src/dragonbones/DragonBonesComponent.ts +32 -0
  105. package/src/dragonbones/DragonBonesSystem.ts +35 -0
  106. package/src/dragonbones/index.ts +11 -0
  107. package/src/gui/GUIComponent.ts +159 -0
  108. package/src/gui/GUISystem.ts +116 -0
  109. package/src/helper/utils.ts +50 -0
  110. package/src/index.ts +23 -0
  111. package/src/norender/NoRenderComponent.ts +60 -0
  112. package/src/norender/NoRenderSystem.ts +66 -0
  113. package/src/planck/PhysicsComponent.ts +83 -0
  114. package/src/planck/PhysicsSprite.ts +43 -0
  115. package/src/planck/PhysicsSystem.ts +201 -0
  116. package/src/planck/index.ts +3 -0
  117. package/src/render/RenderComponent.ts +138 -0
  118. package/src/render/RenderSystem.ts +67 -0
  119. package/src/richtext/RichTextComp.ts +46 -0
  120. package/src/richtext/RichTextSystem.ts +26 -0
  121. package/src/richtext/html-text-parser.ts +87 -0
  122. package/src/richtext/index.ts +8 -0
  123. package/src/spine/SpineComponent.ts +18 -0
  124. package/src/spine/SpineSystem.ts +30 -0
  125. package/src/spine/index.ts +11 -0
  126. package/src/spine/lib/BatchableSpineSlot.ts +138 -0
  127. package/src/spine/lib/Spine.ts +910 -0
  128. package/src/spine/lib/SpineDebugRenderer.ts +615 -0
  129. package/src/spine/lib/SpinePipe.ts +203 -0
  130. package/src/spine/lib/SpineTexture.ts +143 -0
  131. package/src/spine/lib/assets/atlasLoader.ts +158 -0
  132. package/src/spine/lib/assets/skeletonLoader.ts +81 -0
  133. package/src/spine/lib/darktint/DarkTintBatchGeometry.ts +92 -0
  134. package/src/spine/lib/darktint/DarkTintBatcher.ts +186 -0
  135. package/src/spine/lib/darktint/DarkTintShader.ts +74 -0
  136. package/src/spine/lib/darktint/darkTintBit.ts +77 -0
  137. package/src/spine/lib/index.ts +43 -0
  138. package/src/spine/lib/require-shim.ts +43 -0
  139. package/tsconfig.json +18 -0
@@ -1,6 +1,7 @@
1
- import { EventManager, System } from 'entityx-ts';
1
+ import { EntityManager, EventManager, System } from 'entityx-ts';
2
2
  import { GameWorld } from '../base';
3
3
  export declare class DragonBonesSystem implements System {
4
4
  configure(event_manager: EventManager<GameWorld>): void;
5
+ update(entities: EntityManager, events: EventManager<GameWorld>, dt: number): void;
5
6
  }
6
7
  //# sourceMappingURL=DragonBonesSystem.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DragonBonesSystem.d.ts","sourceRoot":"","sources":["../../src/dragonbones/DragonBonesSystem.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAc,MAAM,EAAE,MAAM,YAAY,CAAC;AAG9D,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAIpC,qBAAa,iBAAkB,YAAW,MAAM;IAC9C,SAAS,CAAC,aAAa,EAAE,YAAY,CAAC,SAAS,CAAC;CAyBjD"}
1
+ {"version":3,"file":"DragonBonesSystem.d.ts","sourceRoot":"","sources":["../../src/dragonbones/DragonBonesSystem.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAc,MAAM,EAAE,MAAM,YAAY,CAAC;AAG7E,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAIpC,qBAAa,iBAAkB,YAAW,MAAM;IAC9C,SAAS,CAAC,aAAa,EAAE,YAAY,CAAC,SAAS,CAAC;IAuBhD,MAAM,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,MAAM;CAE5E"}
@@ -26,4 +26,6 @@ export class DragonBonesSystem {
26
26
  });
27
27
  // event_manager.subscribe(EventTypes.ComponentRemoved, DragonBones, ({ }) => { })
28
28
  }
29
+ update(entities, events, dt) {
30
+ }
29
31
  }
@@ -1,3 +1,4 @@
1
1
  export * from './DragonBonesComponent';
2
2
  export * from './DragonBonesSystem';
3
+ export declare function setupDragonBones(): void;
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dragonbones/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dragonbones/index.ts"],"names":[],"mappings":"AAGA,cAAc,wBAAwB,CAAA;AACtC,cAAc,qBAAqB,CAAA;AAEnC,wBAAgB,gBAAgB,SAI/B"}
@@ -1,2 +1,9 @@
1
+ import { GameWorld } from '..';
2
+ import { DragonBonesSystem } from './DragonBonesSystem';
1
3
  export * from './DragonBonesComponent';
2
4
  export * from './DragonBonesSystem';
5
+ export function setupDragonBones() {
6
+ GameWorld.Instance.systems.add(DragonBonesSystem);
7
+ GameWorld.Instance.listUpdate.push(DragonBonesSystem);
8
+ GameWorld.Instance.systems.configureOnce(DragonBonesSystem);
9
+ }
@@ -1,6 +1,5 @@
1
1
  import { CheckBox, CheckBoxOptions, Input, List, ProgressBar, RadioGroup, Slider, SliderOptions } from '@pixi/ui';
2
2
  import { Container, FillInput, Point, Text } from 'pixi.js';
3
- import TaggedText from 'pixi-tagged-text-plus';
4
3
  import { ComponentX, NoRenderComponentX } from '../components/BaseComponent';
5
4
  import { Color4B } from '../core/Color';
6
5
  import { LoadingBarMode, ProgressTimer } from '../core/LoadingBar';
@@ -62,14 +61,6 @@ export declare class ProgressTimerComp extends ComponentX<ProgressTimerProps & {
62
61
  setFillStart(val: number): void;
63
62
  setFillRange(val: number): void;
64
63
  }
65
- export declare class RichTextComp extends ComponentX<LabelCompProps, TaggedText> {
66
- get string(): string;
67
- set string(val: string);
68
- get size(): number;
69
- set size(size: number);
70
- get font(): string;
71
- set font(font: string);
72
- }
73
64
  interface LabelOutlineCompProps {
74
65
  color: Color4B;
75
66
  width: number;
@@ -1 +1 @@
1
- {"version":3,"file":"GUIComponent.d.ts","sourceRoot":"","sources":["../../src/gui/GUIComponent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GUIComponent.d.ts","sourceRoot":"","sources":["../../src/gui/GUIComponent.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  import { Assets, Text } from 'pixi.js';
2
2
  import { ComponentX, NoRenderComponentX } from '../components/BaseComponent';
3
3
  import { LoadingBarMode } from '../core/LoadingBar';
4
- import { generateStringFromStyledElements, generateStylesFromStyledElements, parseFontString, transformToStyledElements } from '../helper/html-text-parser';
5
4
  export const FillType = {
6
5
  HORIZONTAL: 0,
7
6
  VERTICAL: 1,
@@ -80,42 +79,6 @@ export class ProgressTimerComp extends ComponentX {
80
79
  this.node.instance.progress = val;
81
80
  }
82
81
  }
83
- export class RichTextComp extends ComponentX {
84
- get string() {
85
- return this.props.string;
86
- }
87
- set string(val) {
88
- this.props.string = val;
89
- if (!this.node)
90
- return;
91
- const jObj = parseFontString(val);
92
- const styledOutput = transformToStyledElements(jObj);
93
- const newText = generateStringFromStyledElements(styledOutput);
94
- const styles = generateStylesFromStyledElements(styledOutput);
95
- // console.log(styledOutput)
96
- const wrapped = `<root>${newText}</root>`;
97
- this.node.instance.setText(wrapped);
98
- this.node.instance.setTagStyles(styles);
99
- }
100
- get size() {
101
- return this.props.size;
102
- }
103
- set size(size) {
104
- this.props.size = size;
105
- if (!this.node)
106
- return;
107
- this.node.instance.setStyleForTag('root', { fontSize: size, color: '#fff' });
108
- }
109
- get font() {
110
- return this.props.font;
111
- }
112
- set font(font) {
113
- this.props.font = font;
114
- if (!this.node)
115
- return;
116
- this.node.instance.setStyleForTag('root', { color: '#fff', fontFamily: font });
117
- }
118
- }
119
82
  export class LabelOutlineComp extends NoRenderComponentX {
120
83
  }
121
84
  export class LabelShadowComp extends NoRenderComponentX {
@@ -1,6 +1,7 @@
1
1
  import { EventManager, System } from 'entityx-ts';
2
2
  import { GameWorld } from '../base';
3
3
  export declare class GUISystem implements System {
4
+ defaultFont: string;
4
5
  configure(event_manager: EventManager<GameWorld>): void;
5
6
  }
6
7
  //# sourceMappingURL=GUISystem.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"GUISystem.d.ts","sourceRoot":"","sources":["../../src/gui/GUISystem.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EAEZ,MAAM,EACP,MAAM,YAAY,CAAA;AAGnB,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAOnC,qBAAa,SAAU,YAAW,MAAM;IACtC,SAAS,CAAC,aAAa,EAAE,YAAY,CAAC,SAAS,CAAC;CA4GjD"}
1
+ {"version":3,"file":"GUISystem.d.ts","sourceRoot":"","sources":["../../src/gui/GUISystem.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EAEZ,MAAM,EACP,MAAM,YAAY,CAAA;AAKnB,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAInC,qBAAa,SAAU,YAAW,MAAM;IACtC,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,aAAa,EAAE,YAAY,CAAC,SAAS,CAAC;CAmGjD"}
@@ -2,10 +2,9 @@ import { Button, CheckBox, List, RadioGroup, ScrollBox } from '@pixi/ui';
2
2
  import { EventTypes } from 'entityx-ts';
3
3
  import { callFunc, easeBackIn, scaleTo, sequence } from 'pixi-action-ease';
4
4
  import { Text } from 'pixi.js';
5
- import TaggedText from 'pixi-tagged-text-plus';
6
5
  import { NodeComp } from '..';
7
6
  import { LoadingBarMode, ProgressTimer } from '../core/LoadingBar';
8
- import { ButtonComp, CheckBoxComp, LabelComp, LabelOutlineComp, LabelShadowComp, ListComp, ProgressTimerComp, RadioGroupComp, RichTextComp, ScrollView } from './GUIComponent';
7
+ import { ButtonComp, CheckBoxComp, LabelComp, LabelOutlineComp, LabelShadowComp, ListComp, ProgressTimerComp, RadioGroupComp, ScrollView } from './GUIComponent';
9
8
  export class GUISystem {
10
9
  configure(event_manager) {
11
10
  event_manager.subscribe(EventTypes.ComponentAdded, ButtonComp, ({ entity, component }) => {
@@ -77,7 +76,7 @@ export class GUISystem {
77
76
  // node.texture.rotate = 8
78
77
  node.style.fill = '#fff';
79
78
  component.node = entity.assign(new NodeComp(node, entity));
80
- const { string = '', font = '', size = 64 } = component.props;
79
+ const { string = '', font = this.defaultFont, size = 64 } = component.props;
81
80
  if (font)
82
81
  component.font = (font);
83
82
  component.size = (size);
@@ -97,18 +96,6 @@ export class GUISystem {
97
96
  node.instance.style.dropShadow = { color, blur, alpha: 1, angle: 0, distance: 0 };
98
97
  }
99
98
  });
100
- event_manager.subscribe(EventTypes.ComponentAdded, RichTextComp, ({ entity, component }) => {
101
- // console.log('ComponentAddedEvent LabelComp', component)
102
- const { string = '', font, size = 64 } = component.props;
103
- const node = new TaggedText(string);
104
- // node.defaultStyle = { }
105
- component.node = entity.assign(new NodeComp(node, entity));
106
- component.string = (string);
107
- if (font)
108
- component.font = (font);
109
- if (size)
110
- component.size = (size);
111
- });
112
99
  // event_manager.subscribe(EventTypes.ComponentAdded, BlockInputEventsComp), this);
113
100
  }
114
101
  }
package/dist/index.d.ts CHANGED
@@ -19,5 +19,6 @@ export * from './helper/utils';
19
19
  export * from './norender/NoRenderComponent';
20
20
  export * from './render/RenderComponent';
21
21
  export * from './render/RenderSystem';
22
+ export * from './richtext';
22
23
  export * from './spine';
23
24
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,SAAS,CAAA;AACvB,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,cAAc,OAAO,CAAA;AACrB,cAAc,QAAQ,CAAA;AACtB,cAAc,YAAY,CAAA;AAC1B,cAAc,gCAAgC,CAAA;AAC9C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,8BAA8B,CAAA;AAC5C,cAAc,0BAA0B,CAAA;AACxC,cAAc,uBAAuB,CAAA;AACrC,cAAc,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,SAAS,CAAA;AACvB,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,cAAc,OAAO,CAAA;AACrB,cAAc,QAAQ,CAAA;AACtB,cAAc,YAAY,CAAA;AAC1B,cAAc,gCAAgC,CAAA;AAC9C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,8BAA8B,CAAA;AAC5C,cAAc,0BAA0B,CAAA;AACxC,cAAc,uBAAuB,CAAA;AACrC,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA"}
package/dist/index.js CHANGED
@@ -19,4 +19,5 @@ export * from './helper/utils';
19
19
  export * from './norender/NoRenderComponent';
20
20
  export * from './render/RenderComponent';
21
21
  export * from './render/RenderSystem';
22
+ export * from './richtext';
22
23
  export * from './spine';
@@ -22,11 +22,11 @@ interface ColliderPhysicsProps {
22
22
  tag?: number;
23
23
  group?: number;
24
24
  offset?: Vec2;
25
- onCollisionEnter?: (other: ColliderPhysics) => void;
26
- onCollisionExit?: (other: ColliderPhysics) => void;
27
- onCollisionStay?: (other: ColliderPhysics) => void;
25
+ onCollisionEnter?: (other: PhysicsCollider) => void;
26
+ onCollisionExit?: (other: PhysicsCollider) => void;
27
+ onCollisionStay?: (other: PhysicsCollider) => void;
28
28
  }
29
- export declare class ColliderPhysics<T extends ColliderPhysicsProps = ColliderPhysicsProps> extends NoRenderComponentX<T, PhysicsSprite['node']> {
29
+ export declare class PhysicsCollider<T extends ColliderPhysicsProps = ColliderPhysicsProps> extends NoRenderComponentX<T, PhysicsSprite['node']> {
30
30
  enabled: boolean;
31
31
  instance: PhysicsSprite;
32
32
  }
@@ -34,17 +34,17 @@ interface BoxColliderPhysicsProps extends ColliderPhysicsProps {
34
34
  width: number;
35
35
  height: number;
36
36
  }
37
- export declare class BoxColliderPhysics extends ColliderPhysics<BoxColliderPhysicsProps> {
37
+ export declare class PhysicsBoxCollider extends PhysicsCollider<BoxColliderPhysicsProps> {
38
38
  }
39
39
  interface CircleColliderPhysicsProps extends ColliderPhysicsProps {
40
40
  radius: number;
41
41
  }
42
- export declare class CircleColliderPhysics extends ColliderPhysics<CircleColliderPhysicsProps> {
42
+ export declare class PhysicsCircleCollider extends PhysicsCollider<CircleColliderPhysicsProps> {
43
43
  }
44
44
  interface PolygonColliderPhysicsProps extends ColliderPhysicsProps {
45
45
  points: Array<Vec2>;
46
46
  }
47
- export declare class PolygonColliderPhysics extends ColliderPhysics<PolygonColliderPhysicsProps> {
47
+ export declare class PhysicsPolygonCollider extends PhysicsCollider<PolygonColliderPhysicsProps> {
48
48
  }
49
49
  export {};
50
50
  //# sourceMappingURL=PhysicsComponent.d.ts.map
@@ -3,15 +3,15 @@ export class RigidBody extends NoRenderComponentX {
3
3
  }
4
4
  export class PhysicsMaterial extends NoRenderComponentX {
5
5
  }
6
- export class ColliderPhysics extends NoRenderComponentX {
6
+ export class PhysicsCollider extends NoRenderComponentX {
7
7
  constructor() {
8
8
  super(...arguments);
9
9
  this.enabled = true;
10
10
  }
11
11
  }
12
- export class BoxColliderPhysics extends ColliderPhysics {
12
+ export class PhysicsBoxCollider extends PhysicsCollider {
13
13
  }
14
- export class CircleColliderPhysics extends ColliderPhysics {
14
+ export class PhysicsCircleCollider extends PhysicsCollider {
15
15
  }
16
- export class PolygonColliderPhysics extends ColliderPhysics {
16
+ export class PhysicsPolygonCollider extends PhysicsCollider {
17
17
  }
@@ -14,7 +14,7 @@ import { Box, Fixture, Vec2, World } from 'planck';
14
14
  import { Graphics } from 'pixi.js';
15
15
  import { GameWorld, instantiate } from '../base';
16
16
  import { NodeComp } from '../components/NodeComp';
17
- import { BoxColliderPhysics, CircleColliderPhysics, ColliderPhysics, PolygonColliderPhysics, RigidBody, } from './PhysicsComponent';
17
+ import { PhysicsBoxCollider, PhysicsCircleCollider, PhysicsCollider, PhysicsPolygonCollider, RigidBody, } from './PhysicsComponent';
18
18
  import { PhysicsSprite } from './PhysicsSprite';
19
19
  Fixture.prototype.shouldCollide = function (other) {
20
20
  const nodeThis = this.getBody().getUserData();
@@ -38,8 +38,8 @@ export class PhysicsSystem {
38
38
  });
39
39
  // event_manager.world.physicsManager = this
40
40
  // event_manager.subscribe(ComponentAddedEvent(RigidBody), this);
41
- event_manager.subscribe(EventTypes.ComponentAdded, BoxColliderPhysics, ({ entity, component }) => {
42
- console.log('ComponentAddedEvent BoxColliderPhysics', component);
41
+ event_manager.subscribe(EventTypes.ComponentAdded, PhysicsBoxCollider, ({ entity, component }) => {
42
+ console.log('ComponentAddedEvent PhysicsBoxCollider', component);
43
43
  let rigidBody = entity.getComponent(RigidBody);
44
44
  if (!rigidBody) {
45
45
  rigidBody = instantiate(RigidBody);
@@ -50,7 +50,7 @@ export class PhysicsSystem {
50
50
  const box = component;
51
51
  const node = entity.getComponent(NodeComp);
52
52
  const _a = box.props, { width, height } = _a, colliderProps = __rest(_a, ["width", "height"]);
53
- // ett.assign(instantiate(ColliderPhysics, { tag, offset }))
53
+ // ett.assign(instantiate(PhysicsCollider, { tag, offset }))
54
54
  // const { density, restitution, friction } = physicsMaterial
55
55
  const { x = 0, y = 0 } = colliderProps.offset || {};
56
56
  const body = this.world.createBody({
@@ -74,13 +74,13 @@ export class PhysicsSystem {
74
74
  debugBox.rect(x, y, width, height);
75
75
  debugBox.fill({ color: 0xff0000, alpha: 0.3 });
76
76
  node.instance.addChild(debugBox);
77
- const physicsCollide = entity.assign(instantiate(ColliderPhysics, colliderProps));
77
+ const physicsCollide = entity.assign(instantiate(PhysicsCollider, colliderProps));
78
78
  physicsCollide.instance = physicsNode;
79
79
  physicsCollide.node = node;
80
80
  box.node = node;
81
81
  });
82
- event_manager.subscribe(EventTypes.ComponentAdded, (CircleColliderPhysics), () => { });
83
- event_manager.subscribe(EventTypes.ComponentAdded, (PolygonColliderPhysics), () => { });
82
+ event_manager.subscribe(EventTypes.ComponentAdded, (PhysicsCircleCollider), () => { });
83
+ event_manager.subscribe(EventTypes.ComponentAdded, (PhysicsPolygonCollider), () => { });
84
84
  event_manager.subscribe(EventTypes.ComponentRemoved, (NodeComp), () => {
85
85
  // log('ComponentRemovedEvent NodeComp', event);
86
86
  // const node = event.entity.getComponent(NodeComp)
@@ -115,7 +115,7 @@ export class PhysicsSystem {
115
115
  renderBody(body) {
116
116
  // Render or update body rendering
117
117
  const ett = body.getUserData();
118
- const collider = ett.getComponent(ColliderPhysics);
118
+ const collider = ett.getComponent(PhysicsCollider);
119
119
  if (collider) {
120
120
  collider.instance.node.position = body.getPosition();
121
121
  collider.instance.angle = body.getAngle();
@@ -141,8 +141,8 @@ export class PhysicsSystem {
141
141
  // this.listRemoveBody = []
142
142
  // this.listRemoveShape = []
143
143
  // })
144
- const phys1 = ett1.getComponent(ColliderPhysics);
145
- const phys2 = ett2.getComponent(ColliderPhysics);
144
+ const phys1 = ett1.getComponent(PhysicsCollider);
145
+ const phys2 = ett2.getComponent(PhysicsCollider);
146
146
  if (phys1 && phys2) {
147
147
  if (Object.prototype.hasOwnProperty.call(phys1, 'onCollisionEnter')) {
148
148
  phys1.props.onCollisionEnter(phys2);
@@ -163,8 +163,8 @@ export class PhysicsSystem {
163
163
  const ett1 = contact.getFixtureA().getBody().getUserData();
164
164
  const ett2 = contact.getFixtureB().getBody().getUserData();
165
165
  // const event1 = ett1.getComponent(NodeComp)
166
- const phys1 = ett1.getComponent(ColliderPhysics);
167
- const phys2 = ett2.getComponent(ColliderPhysics);
166
+ const phys1 = ett1.getComponent(PhysicsCollider);
167
+ const phys2 = ett2.getComponent(PhysicsCollider);
168
168
  // const event2 = ett2.getComponent(NodeComp)
169
169
  if (phys1 && phys2) {
170
170
  if (Object.prototype.hasOwnProperty.call(phys1, 'onCollisionExit')) {
@@ -0,0 +1,17 @@
1
+ import TaggedText from 'pixi-tagged-text-plus';
2
+ import { ComponentX } from '../components/BaseComponent';
3
+ interface RichTextCompProps {
4
+ font?: string;
5
+ string?: string;
6
+ size?: number;
7
+ }
8
+ export declare class RichTextComp extends ComponentX<RichTextCompProps, TaggedText> {
9
+ get string(): string;
10
+ set string(val: string);
11
+ get size(): number;
12
+ set size(size: number);
13
+ get font(): string;
14
+ set font(font: string);
15
+ }
16
+ export {};
17
+ //# sourceMappingURL=RichTextComp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RichTextComp.d.ts","sourceRoot":"","sources":["../../src/richtext/RichTextComp.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAGxD,UAAU,iBAAiB;IACzB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,qBAAa,YAAa,SAAQ,UAAU,CAAC,iBAAiB,EAAE,UAAU,CAAC;IAEzE,IAAI,MAAM,IAKM,MAAM,CAHrB;IAGD,IAAI,MAAM,CAAC,GAAG,EAAE,MAAM,EAWrB;IACD,IAAI,IAAI,IAGO,MAAM,CADpB;IACD,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,EAIpB;IACD,IAAI,IAAI,IAGO,MAAM,CADpB;IACD,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,EAIpB;CACF"}
@@ -0,0 +1,38 @@
1
+ import { ComponentX } from '../components/BaseComponent';
2
+ import { generateStringFromStyledElements, generateStylesFromStyledElements, parseFontString, transformToStyledElements } from './html-text-parser';
3
+ export class RichTextComp extends ComponentX {
4
+ get string() {
5
+ return this.props.string;
6
+ }
7
+ set string(val) {
8
+ this.props.string = val;
9
+ if (!this.node)
10
+ return;
11
+ const jObj = parseFontString(val);
12
+ const styledOutput = transformToStyledElements(jObj);
13
+ const newText = generateStringFromStyledElements(styledOutput);
14
+ const styles = generateStylesFromStyledElements(styledOutput);
15
+ // console.log(styledOutput)
16
+ const wrapped = `<root>${newText}</root>`;
17
+ this.node.instance.setText(wrapped);
18
+ this.node.instance.setTagStyles(styles);
19
+ }
20
+ get size() {
21
+ return this.props.size;
22
+ }
23
+ set size(size) {
24
+ this.props.size = size;
25
+ if (!this.node)
26
+ return;
27
+ this.node.instance.setStyleForTag('root', { fontSize: size, color: '#fff' });
28
+ }
29
+ get font() {
30
+ return this.props.font;
31
+ }
32
+ set font(font) {
33
+ this.props.font = font;
34
+ if (!this.node)
35
+ return;
36
+ this.node.instance.setStyleForTag('root', { color: '#fff', fontFamily: font });
37
+ }
38
+ }
@@ -0,0 +1,7 @@
1
+ import { EntityManager, EventManager, System } from 'entityx-ts';
2
+ export declare class RichTextSystem implements System {
3
+ configure(event_manager: EventManager): void;
4
+ private onAddRichTextComp;
5
+ update(entities: EntityManager, events: EventManager, dt: number): any;
6
+ }
7
+ //# sourceMappingURL=RichTextSystem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RichTextSystem.d.ts","sourceRoot":"","sources":["../../src/richtext/RichTextSystem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAoC,MAAM,EAAE,MAAM,YAAY,CAAA;AAMlG,qBAAa,cAAe,YAAW,MAAM;IAC3C,SAAS,CAAC,aAAa,EAAE,YAAY;IAIrC,OAAO,CAAC,iBAAiB,CAQxB;IAED,MAAM,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM;CAIjE"}
@@ -0,0 +1,25 @@
1
+ import { EventTypes } from 'entityx-ts';
2
+ import TaggedText from 'pixi-tagged-text-plus';
3
+ import { NodeComp } from '..';
4
+ import { RichTextComp } from './RichTextComp';
5
+ export class RichTextSystem {
6
+ constructor() {
7
+ this.onAddRichTextComp = ({ entity, component }) => {
8
+ const { string = '', font = '', size = 64 } = component.props;
9
+ const node = new TaggedText(string);
10
+ // node.defaultStyle = { }
11
+ component.node = entity.assign(new NodeComp(node, entity));
12
+ component.string = (string);
13
+ if (font)
14
+ component.font = (font);
15
+ if (size)
16
+ component.size = (size);
17
+ };
18
+ }
19
+ configure(event_manager) {
20
+ event_manager.subscribe(EventTypes.ComponentAdded, RichTextComp, this.onAddRichTextComp);
21
+ }
22
+ update() {
23
+ // throw new Error('Method not implemented.');
24
+ }
25
+ }
@@ -0,0 +1,20 @@
1
+ interface FontTag {
2
+ color?: string;
3
+ size?: number;
4
+ text: string;
5
+ }
6
+ type ParsedResult = FontTag[];
7
+ type StyledElement = {
8
+ tag?: string;
9
+ style?: {
10
+ color?: string;
11
+ size?: number;
12
+ };
13
+ text: string;
14
+ };
15
+ export declare function parseFontString(input: string): ParsedResult;
16
+ export declare function transformToStyledElements(parsed: ParsedResult): StyledElement[];
17
+ export declare function generateStringFromStyledElements(elements: StyledElement[]): string;
18
+ export declare function generateStylesFromStyledElements(elements: StyledElement[]): {};
19
+ export {};
20
+ //# sourceMappingURL=html-text-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html-text-parser.d.ts","sourceRoot":"","sources":["../../src/richtext/html-text-parser.ts"],"names":[],"mappings":"AAAA,UAAU,OAAO;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,KAAK,YAAY,GAAG,OAAO,EAAE,CAAC;AAE9B,KAAK,aAAa,GAAG;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAiC3D;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,YAAY,GAAG,aAAa,EAAE,CAa/E;AAED,wBAAgB,gCAAgC,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,MAAM,CASlF;AAED,wBAAgB,gCAAgC,CAAC,QAAQ,EAAE,aAAa,EAAE,MAWzE"}
@@ -0,0 +1,64 @@
1
+ export function parseFontString(input) {
2
+ const regex = /<font\s+color=['"](#?[0-9a-fA-F]{6})['"](?:\s+size=(\d+))?>(.*?)<\/font>/gi;
3
+ const results = [];
4
+ let lastIndex = 0;
5
+ let match;
6
+ while ((match = regex.exec(input)) !== null) {
7
+ // Add plain text before the match if it exists
8
+ if (match.index > lastIndex) {
9
+ const plainText = input.slice(lastIndex, match.index);
10
+ if (plainText) {
11
+ results.push({ text: plainText });
12
+ }
13
+ }
14
+ const color = match[1];
15
+ const size = match[2] ? parseInt(match[2], 10) : undefined;
16
+ const text = match[3];
17
+ results.push({ color, size, text });
18
+ lastIndex = regex.lastIndex;
19
+ }
20
+ // Add remaining plain text after the last match
21
+ if (lastIndex < input.length) {
22
+ const plainText = input.slice(lastIndex);
23
+ if (plainText) {
24
+ results.push({ text: plainText });
25
+ }
26
+ }
27
+ return results;
28
+ }
29
+ export function transformToStyledElements(parsed) {
30
+ return parsed.map((item, index) => {
31
+ if (item.color || item.size) {
32
+ return {
33
+ tag: `b${index + 1}`,
34
+ style: { color: item.color, size: item.size },
35
+ text: item.text,
36
+ };
37
+ }
38
+ return {
39
+ text: item.text,
40
+ };
41
+ });
42
+ }
43
+ export function generateStringFromStyledElements(elements) {
44
+ return elements
45
+ .map((element) => {
46
+ if (!element.tag) {
47
+ return element.text;
48
+ }
49
+ return `<${element.tag}>${element.text}</${element.tag}>`;
50
+ })
51
+ .join('');
52
+ }
53
+ export function generateStylesFromStyledElements(elements) {
54
+ const styles = {};
55
+ elements
56
+ .forEach((element) => {
57
+ const { tag, style } = element;
58
+ if (!tag) {
59
+ return;
60
+ }
61
+ styles[element.tag] = style;
62
+ });
63
+ return styles;
64
+ }
@@ -0,0 +1,3 @@
1
+ export * from './RichTextComp';
2
+ export declare function setupRichText(): void;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/richtext/index.ts"],"names":[],"mappings":"AAEA,cAAc,gBAAgB,CAAA;AAE9B,wBAAgB,aAAa,SAG5B"}
@@ -0,0 +1,7 @@
1
+ import { GameWorld } from '..';
2
+ import { RichTextSystem } from './RichTextSystem';
3
+ export * from './RichTextComp';
4
+ export function setupRichText() {
5
+ GameWorld.Instance.systems.add(RichTextSystem);
6
+ GameWorld.Instance.systems.configureOnce(RichTextSystem);
7
+ }
@@ -1,3 +1,4 @@
1
1
  export * from './SpineComponent';
2
2
  export * from './SpineSystem';
3
+ export declare function setupSpine(): void;
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/spine/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/spine/index.ts"],"names":[],"mappings":"AAGA,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAE7B,wBAAgB,UAAU,SAIzB"}
@@ -1,2 +1,9 @@
1
+ import { GameWorld } from '..';
2
+ import { SpineSystem } from './SpineSystem';
1
3
  export * from './SpineComponent';
2
4
  export * from './SpineSystem';
5
+ export function setupSpine() {
6
+ GameWorld.Instance.systems.add(SpineSystem);
7
+ // GameWorld.Instance.listUpdate.push(SpineSystem)
8
+ GameWorld.Instance.systems.configureOnce(SpineSystem);
9
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@safe-engine/pixi",
3
- "version": "8.3.6",
3
+ "version": "8.4.1",
4
4
  "description": "safex pixi plugin",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -16,20 +16,18 @@
16
16
  "author": "",
17
17
  "license": "ISC",
18
18
  "dependencies": {
19
- "@esotericsoftware/spine-core": "^4.2.74",
20
- "@pixi/ui": "^2.2.2",
21
- "@types/node": "^22.13.5",
19
+ "@esotericsoftware/spine-core": "^4.2.84",
20
+ "@pixi/ui": "^2.2.4",
21
+ "@types/node": "^24.0.10",
22
22
  "copyfiles": "^2.4.1",
23
- "dragonbones-pixijs": "^1.0.3",
24
- "entityx-ts": "^2.1.3",
25
- "lodash": "^4.17.21",
23
+ "dragonbones-pixijs": "^1.0.5",
24
+ "entityx-ts": "^2.2.1",
26
25
  "pixi-action-ease": "^3.0.6",
27
26
  "pixi-tagged-text-plus": "0.0.1-next.2",
28
- "pixi.js": "8.8.0",
29
- "planck": "^1.3.0"
27
+ "pixi.js": "8.10.2",
28
+ "planck": "^1.4.2"
30
29
  },
31
30
  "devDependencies": {
32
- "@types/lodash": "^4.17.15",
33
- "typescript": "^5.7.3"
31
+ "typescript": "^5.8.3"
34
32
  }
35
33
  }
@@ -0,0 +1,2 @@
1
+ type Float = number
2
+ type Integer = number
@@ -0,0 +1,15 @@
1
+ import { NodeComp } from "..";
2
+
3
+ interface BaseComponentProps {
4
+ $ref?: object;
5
+ $refNode?: NodeComp<any>
6
+ $push?: object[];
7
+ node?: Partial<NodeComp>;
8
+ }
9
+
10
+ interface NodeCompProps {
11
+ nodeName?: string
12
+ }
13
+
14
+ interface LoadingBarProps {
15
+ }