@safe-engine/cocos 1.4.11 → 1.5.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.
Files changed (74) hide show
  1. package/@types/index.d.ts +0 -7
  2. package/dist/app.d.ts +13 -2
  3. package/dist/app.d.ts.map +1 -1
  4. package/dist/app.js +6 -10
  5. package/dist/collider/CollideComponent.d.ts +64 -0
  6. package/dist/collider/CollideComponent.d.ts.map +1 -0
  7. package/dist/collider/CollideComponent.js +265 -0
  8. package/dist/collider/CollideSystem.d.ts +21 -0
  9. package/dist/collider/CollideSystem.d.ts.map +1 -0
  10. package/dist/collider/CollideSystem.js +181 -0
  11. package/dist/collider/index.d.ts +2 -0
  12. package/dist/collider/index.d.ts.map +1 -0
  13. package/dist/collider/index.js +10 -0
  14. package/dist/dragonbones/PixiDragonBonesSprite.d.ts.map +1 -1
  15. package/dist/dragonbones/PixiDragonBonesSprite.js +11 -11
  16. package/dist/dragonbones/cocos/CocosArmatureDisplay.d.ts +77 -0
  17. package/dist/dragonbones/cocos/CocosArmatureDisplay.d.ts.map +1 -0
  18. package/dist/dragonbones/cocos/CocosArmatureDisplay.js +227 -0
  19. package/dist/dragonbones/cocos/CocosFactory.d.ts +128 -0
  20. package/dist/dragonbones/cocos/CocosFactory.d.ts.map +1 -0
  21. package/dist/dragonbones/cocos/CocosFactory.js +231 -0
  22. package/dist/dragonbones/cocos/CocosSlot.d.ts +49 -0
  23. package/dist/dragonbones/cocos/CocosSlot.d.ts.map +1 -0
  24. package/dist/dragonbones/cocos/CocosSlot.js +385 -0
  25. package/dist/dragonbones/cocos/CocosTextureAtlasData.d.ts +53 -0
  26. package/dist/dragonbones/cocos/CocosTextureAtlasData.d.ts.map +1 -0
  27. package/dist/dragonbones/cocos/CocosTextureAtlasData.js +158 -0
  28. package/dist/dragonbones/dragonBones.d.ts +3 -0
  29. package/dist/dragonbones/dragonBones.d.ts.map +1 -0
  30. package/dist/dragonbones/dragonBones.js +4788 -0
  31. package/dist/dragonbones/index.d.ts +3 -2
  32. package/dist/dragonbones/index.d.ts.map +1 -1
  33. package/dist/dragonbones/index.js +9 -9
  34. package/dist/gworld/components/CollideComponent.d.ts +3 -3
  35. package/dist/gworld/components/GUIComponent.d.ts +0 -4
  36. package/dist/gworld/components/GUIComponent.d.ts.map +1 -1
  37. package/dist/gworld/components/GUIComponent.js +1 -39
  38. package/dist/gworld/components/NodeComp.d.ts +2 -2
  39. package/dist/gworld/components/NodeComp.d.ts.map +1 -1
  40. package/dist/gworld/components/RenderComponent.d.ts.map +1 -1
  41. package/dist/gworld/systems/CollideSystem.d.ts +2 -1
  42. package/dist/gworld/systems/CollideSystem.d.ts.map +1 -1
  43. package/dist/gworld/systems/CollideSystem.js +12 -2
  44. package/dist/gworld/systems/GUISystem.d.ts +0 -1
  45. package/dist/gworld/systems/GUISystem.d.ts.map +1 -1
  46. package/dist/gworld/systems/GUISystem.js +0 -11
  47. package/dist/gworld/systems/RenderSystem.d.ts.map +1 -1
  48. package/dist/gworld/systems/RenderSystem.js +0 -15
  49. package/dist/helper/NodePool.d.ts +9 -0
  50. package/dist/helper/NodePool.d.ts.map +1 -0
  51. package/dist/helper/NodePool.js +29 -0
  52. package/dist/helper/action.d.ts +1 -1
  53. package/dist/helper/utils.d.ts +1 -2
  54. package/dist/helper/utils.d.ts.map +1 -1
  55. package/dist/helper/utils.js +0 -10
  56. package/dist/index.d.ts +1 -5
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +1 -5
  59. package/dist/richtext/RichTextComp.d.ts +13 -0
  60. package/dist/richtext/RichTextComp.d.ts.map +1 -0
  61. package/dist/richtext/RichTextComp.js +57 -0
  62. package/dist/richtext/RichTextSystem.d.ts +7 -0
  63. package/dist/richtext/RichTextSystem.d.ts.map +1 -0
  64. package/dist/richtext/RichTextSystem.js +28 -0
  65. package/dist/richtext/html-text-parser.d.ts +30 -0
  66. package/dist/richtext/html-text-parser.d.ts.map +1 -0
  67. package/dist/richtext/html-text-parser.js +354 -0
  68. package/dist/richtext/index.d.ts +2 -0
  69. package/dist/richtext/index.d.ts.map +1 -0
  70. package/dist/richtext/index.js +9 -0
  71. package/dist/spine/index.d.ts +31 -0
  72. package/dist/spine/index.d.ts.map +1 -0
  73. package/dist/spine/index.js +74 -0
  74. package/package.json +1 -1
package/@types/index.d.ts CHANGED
@@ -4,13 +4,6 @@ declare let dragonBones: any
4
4
  declare let PIXI: any
5
5
 
6
6
  declare namespace cc {
7
- interface RunOptions {
8
- debugMode: 1 | 0
9
- showFPS: boolean
10
- frameRate: number
11
- id: string
12
- renderMode: 0 | 1 | 2
13
- }
14
7
  declare let v2: (x?: number | any, y?: number) => Vec2
15
8
  declare let v3: (x?: number | any, y?: number, z?: number) => Vec3
16
9
  declare let instantiate: (id: string) => NodeComp
package/dist/app.d.ts CHANGED
@@ -1,6 +1,17 @@
1
- export declare function initWorld(): void;
2
- export declare function startGame(option: cc.RunOptions, designedResolution: any, cb: any): void;
1
+ export declare function initWorld(defaultFont?: string): void;
2
+ interface RunOptions {
3
+ debugMode: 1 | 0;
4
+ showFPS: boolean;
5
+ frameRate: number;
6
+ id: string;
7
+ renderMode: 0 | 1 | 2;
8
+ }
9
+ export declare function startGame(option: RunOptions, { width, height }: {
10
+ width: any;
11
+ height: any;
12
+ }, cb: () => void): void;
3
13
  export declare function loadAll(assets: string[], cb: (progress: number) => void): void;
4
14
  export declare function loadJsonFromCache<T>(filePath: string): T;
5
15
  export declare const audioEngine: typeof cc.audioEngine;
16
+ export {};
6
17
  //# sourceMappingURL=app.d.ts.map
package/dist/app.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAOA,wBAAgB,SAAS,SAcxB;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,EAAE,kBAAkB,KAAA,EAAE,EAAE,KAAA,QAiCtE;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAO,EAAE,EAAE,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,QA4B5E;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,CAIxD;AAED,eAAO,MAAM,WAAW,uBAAiB,CAAA"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAMA,wBAAgB,SAAS,CAAC,WAAW,CAAC,EAAE,MAAM,QAY7C;AACD,UAAU,UAAU;IAClB,SAAS,EAAE,CAAC,GAAG,CAAC,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;CACtB;AACD,wBAAgB,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;;;CAAA,EAAE,EAAE,EAAE,MAAM,IAAI,QA+B9E;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAO,EAAE,EAAE,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,QA4B5E;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,CAIxD;AAED,eAAO,MAAM,WAAW,uBAAiB,CAAA"}
package/dist/app.js CHANGED
@@ -20,33 +20,29 @@ exports.initWorld = initWorld;
20
20
  exports.startGame = startGame;
21
21
  exports.loadAll = loadAll;
22
22
  exports.loadJsonFromCache = loadJsonFromCache;
23
- var dragonbones_1 = require("./dragonbones");
23
+ var CollideSystem_1 = require("./collider/CollideSystem");
24
24
  var gworld_1 = require("./gworld");
25
- var CollideSystem_1 = require("./gworld/systems/CollideSystem");
26
25
  var GUISystem_1 = require("./gworld/systems/GUISystem");
27
26
  var NoRenderSystem_1 = require("./gworld/systems/NoRenderSystem");
28
27
  var RenderSystem_1 = require("./gworld/systems/RenderSystem");
29
- function initWorld() {
28
+ function initWorld(defaultFont) {
30
29
  gworld_1.GameWorld.Instance.systems.add(RenderSystem_1.RenderSystem);
31
- // GameWorld.Instance.systems.add(PhysicsSystem)
32
30
  gworld_1.GameWorld.Instance.systems.add(CollideSystem_1.CollideSystem);
33
31
  gworld_1.GameWorld.Instance.systems.add(GUISystem_1.GUISystem);
34
32
  gworld_1.GameWorld.Instance.systems.add(NoRenderSystem_1.NoRenderSystem);
35
- // GameWorld.Instance.listUpdate.push(PhysicsSystem)
36
33
  gworld_1.GameWorld.Instance.listUpdate.push(CollideSystem_1.CollideSystem);
37
34
  gworld_1.GameWorld.Instance.systems.configureOnce(RenderSystem_1.RenderSystem);
38
- // GameWorld.Instance.systems.configureOnce(PhysicsSystem)
39
35
  gworld_1.GameWorld.Instance.systems.configureOnce(CollideSystem_1.CollideSystem);
40
36
  gworld_1.GameWorld.Instance.systems.configureOnce(GUISystem_1.GUISystem);
41
37
  gworld_1.GameWorld.Instance.systems.configureOnce(NoRenderSystem_1.NoRenderSystem);
42
- (0, dragonbones_1.setupDragonBones)();
38
+ var guiSystem = gworld_1.GameWorld.Instance.systems.get(GUISystem_1.GUISystem);
39
+ guiSystem.defaultFont = defaultFont;
43
40
  }
44
- function startGame(option, designedResolution, cb) {
45
- var width = designedResolution.width, height = designedResolution.height;
41
+ function startGame(option, _a, cb) {
42
+ var width = _a.width, height = _a.height;
46
43
  var BootScene = /** @class */ (function (_super) {
47
44
  __extends(BootScene, _super);
48
45
  function BootScene() {
49
- // 1. super init first
50
46
  var _this = _super.call(this) || this;
51
47
  _super.prototype.ctor.call(_this); // always call this for compatibility with cocos2dx JS Javascript class system
52
48
  _this.scheduleUpdate();
@@ -0,0 +1,64 @@
1
+ import { NoRenderComponentX } from '../gworld/core/decorator';
2
+ import { Vec2 } from '../polyfills';
3
+ interface ColliderProps {
4
+ offset?: Vec2;
5
+ tag?: number;
6
+ enabled?: boolean;
7
+ onCollisionEnter?: (other: Collider) => void;
8
+ onCollisionExit?: (other: Collider) => void;
9
+ onCollisionStay?: (other: Collider) => void;
10
+ }
11
+ export declare class Collider<T = ColliderProps> extends NoRenderComponentX<T> {
12
+ _worldPoints: cc.Vec2[] | cc.Point[];
13
+ _worldPosition: cc.Vec2 | cc.Point;
14
+ _worldRadius: any;
15
+ _AABB: cc.Rect;
16
+ _preAabb: cc.Rect;
17
+ getAABB(): cc.Rect;
18
+ get world(): {
19
+ points: cc.Point[] | cc.Vec2[];
20
+ preAabb: cc.Rect;
21
+ };
22
+ }
23
+ interface BoxColliderProps extends ColliderProps {
24
+ width: number;
25
+ height: number;
26
+ }
27
+ export declare class BoxCollider extends Collider<BoxColliderProps> {
28
+ get size(): cc.Size;
29
+ set size(s: cc.Size);
30
+ update(dt: any, draw: cc.DrawNode): void;
31
+ }
32
+ interface CircleColliderProps extends ColliderProps {
33
+ radius: number;
34
+ }
35
+ export declare class CircleCollider extends Collider<CircleColliderProps> {
36
+ update(dt: any, draw: cc.DrawNode): void;
37
+ }
38
+ interface PolygonColliderProps extends ColliderProps {
39
+ points: Array<Vec2>;
40
+ }
41
+ export declare class PolygonCollider extends Collider<PolygonColliderProps> {
42
+ get points(): Vec2[];
43
+ set points(points: Vec2[]);
44
+ update(dt: any, draw: cc.DrawNode): void;
45
+ }
46
+ export declare enum CollisionType {
47
+ NONE = 0,
48
+ ENTER = 1,
49
+ STAY = 2,
50
+ EXIT = 3
51
+ }
52
+ export declare class Contract {
53
+ _collider1: Collider;
54
+ _collider2: Collider;
55
+ _touching: boolean;
56
+ _isPolygonPolygon: boolean;
57
+ _isCircleCircle: boolean;
58
+ _isPolygonCircle: boolean;
59
+ constructor(collider1: Collider, collider2: Collider);
60
+ updateState(): CollisionType;
61
+ test(): any;
62
+ }
63
+ export {};
64
+ //# sourceMappingURL=CollideComponent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CollideComponent.d.ts","sourceRoot":"","sources":["../../src/collider/CollideComponent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAE7D,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAYnC,UAAU,aAAa;IACrB,MAAM,CAAC,EAAE,IAAI,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAA;IAC5C,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAA;IAC3C,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAA;CAC5C;AACD,qBAAa,QAAQ,CAAC,CAAC,GAAG,aAAa,CAAE,SAAQ,kBAAkB,CAAC,CAAC,CAAC;IACpE,YAAY,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAK;IACzC,cAAc,EAAE,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,KAAK,CAAA;IAClC,YAAY,MAAA;IACZ,KAAK,EAAE,EAAE,CAAC,IAAI,CAAsB;IACpC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAsB;IAGvC,OAAO;IAKP,IAAI,KAAK;;;MAKR;CACF;AAED,UAAU,gBAAiB,SAAQ,aAAa;IAC9C,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AACD,qBAAa,WAAY,SAAQ,QAAQ,CAAC,gBAAgB,CAAC;IACzD,IAAI,IAAI,IAII,EAAE,CAAC,IAAI,CAFlB;IAED,IAAI,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,EAGlB;IAED,MAAM,CAAC,EAAE,KAAA,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ;CA4B7B;AAED,UAAU,mBAAoB,SAAQ,aAAa;IACjD,MAAM,EAAE,MAAM,CAAA;CACf;AACD,qBAAa,cAAe,SAAQ,QAAQ,CAAC,mBAAmB,CAAC;IAC/D,MAAM,CAAC,EAAE,KAAA,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ;CAqB7B;AAED,UAAU,oBAAqB,SAAQ,aAAa;IAClD,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;CACpB;AAED,qBAAa,eAAgB,SAAQ,QAAQ,CAAC,oBAAoB,CAAC;IACjE,IAAI,MAAM,IAAI,IAAI,EAAE,CAInB;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,EAExB;IAED,MAAM,CAAC,EAAE,KAAA,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ;CAqB7B;AAED,oBAAY,aAAa;IACvB,IAAI,IAAA;IACJ,KAAK,IAAA;IACL,IAAI,IAAA;IACJ,IAAI,IAAA;CACL;AASD,qBAAa,QAAQ;IACnB,UAAU,EAAE,QAAQ,CAAA;IACpB,UAAU,EAAE,QAAQ,CAAA;IACpB,SAAS,EAAE,OAAO,CAAA;IAClB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,eAAe,EAAE,OAAO,CAAA;IACxB,gBAAgB,EAAE,OAAO,CAAA;gBAEb,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ;IAsBpD,WAAW;IAeX,IAAI;CAyBL"}
@@ -0,0 +1,265 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.Contract = exports.CollisionType = exports.PolygonCollider = exports.CircleCollider = exports.BoxCollider = exports.Collider = void 0;
19
+ var decorator_1 = require("../gworld/core/decorator");
20
+ var math_1 = require("../helper/math");
21
+ var polyfills_1 = require("../polyfills");
22
+ function getNodeToWorldTransformAR(node) {
23
+ var t = node.instance.getNodeToWorldTransform();
24
+ var anchorPointSize = node.instance.getAnchorPointInPoints();
25
+ var transform = cc.affineTransformTranslate(t, anchorPointSize.x, anchorPointSize.y);
26
+ return transform;
27
+ }
28
+ function cloneRect(origin) {
29
+ return cc.rect(origin.x, origin.y, origin.width, origin.height);
30
+ }
31
+ var Collider = /** @class */ (function (_super) {
32
+ __extends(Collider, _super);
33
+ function Collider() {
34
+ var _this = _super !== null && _super.apply(this, arguments) || this;
35
+ _this._worldPoints = [];
36
+ _this._AABB = cc.rect(0, 0, 0, 0);
37
+ _this._preAabb = cc.rect(0, 0, 0, 0);
38
+ return _this;
39
+ }
40
+ // update(dt: number, draw?: cc.DrawNode) {}
41
+ Collider.prototype.getAABB = function () {
42
+ var collider = this.getComponent(Collider);
43
+ if (collider)
44
+ return collider._AABB;
45
+ return this._AABB;
46
+ };
47
+ Object.defineProperty(Collider.prototype, "world", {
48
+ get: function () {
49
+ return {
50
+ points: this._worldPoints,
51
+ preAabb: this._preAabb,
52
+ };
53
+ },
54
+ enumerable: false,
55
+ configurable: true
56
+ });
57
+ return Collider;
58
+ }(decorator_1.NoRenderComponentX));
59
+ exports.Collider = Collider;
60
+ var BoxCollider = /** @class */ (function (_super) {
61
+ __extends(BoxCollider, _super);
62
+ function BoxCollider() {
63
+ return _super !== null && _super.apply(this, arguments) || this;
64
+ }
65
+ Object.defineProperty(BoxCollider.prototype, "size", {
66
+ get: function () {
67
+ return cc.size(this.props.width, this.props.height);
68
+ },
69
+ set: function (s) {
70
+ this.props.width = s.width;
71
+ this.props.height = s.height;
72
+ },
73
+ enumerable: false,
74
+ configurable: true
75
+ });
76
+ BoxCollider.prototype.update = function (dt, draw) {
77
+ if (!this.node) {
78
+ return;
79
+ }
80
+ var collider = this.getComponent(Collider);
81
+ var _a = collider.props.offset || (0, polyfills_1.Vec2)(0, 0), x = _a.x, y = _a.y;
82
+ var hw = this.props.width * 0.5;
83
+ var hh = this.props.height * 0.5;
84
+ var transform = getNodeToWorldTransformAR(this.node);
85
+ var rect = cc.rect(x - hw, y - hh, this.props.width, this.props.height);
86
+ var rectTrs = cc.rectApplyAffineTransform(rect, transform);
87
+ // cc.log(rectTrs);
88
+ collider._worldPoints[0] = (0, polyfills_1.Vec2)(rectTrs.x, rectTrs.y);
89
+ collider._worldPoints[1] = (0, polyfills_1.Vec2)(rectTrs.x, rectTrs.y + rectTrs.height);
90
+ collider._worldPoints[2] = (0, polyfills_1.Vec2)(rectTrs.x + rectTrs.width, rectTrs.y + rectTrs.height);
91
+ collider._worldPoints[3] = (0, polyfills_1.Vec2)(rectTrs.x + rectTrs.width, rectTrs.y);
92
+ var listX = collider._worldPoints.map(function (_a) {
93
+ var x = _a.x;
94
+ return x;
95
+ });
96
+ var listY = collider._worldPoints.map(function (_a) {
97
+ var y = _a.y;
98
+ return y;
99
+ });
100
+ collider._preAabb = cloneRect(collider._AABB);
101
+ collider._AABB.x = (0, math_1.getMin)(listX);
102
+ collider._AABB.y = (0, math_1.getMin)(listY);
103
+ collider._AABB.width = (0, math_1.getMax)(listX) - collider._AABB.x;
104
+ collider._AABB.height = (0, math_1.getMax)(listY) - collider._AABB.y;
105
+ if (draw) {
106
+ draw.drawPoly(collider._worldPoints, null, 3, cc.Color.DEBUG_BORDER_COLOR);
107
+ }
108
+ };
109
+ return BoxCollider;
110
+ }(Collider));
111
+ exports.BoxCollider = BoxCollider;
112
+ var CircleCollider = /** @class */ (function (_super) {
113
+ __extends(CircleCollider, _super);
114
+ function CircleCollider() {
115
+ return _super !== null && _super.apply(this, arguments) || this;
116
+ }
117
+ CircleCollider.prototype.update = function (dt, draw) {
118
+ if (!this.node) {
119
+ return;
120
+ }
121
+ var transform = getNodeToWorldTransformAR(this.node);
122
+ var collider = this.getComponent(Collider);
123
+ collider._worldRadius = this.props.radius * this.node.scaleX;
124
+ collider._worldPosition = cc.pointApplyAffineTransform(collider.props.offset, transform);
125
+ if (draw) {
126
+ draw.drawDot(collider._worldPosition, collider._worldRadius, cc.Color.DEBUG_FILL_COLOR);
127
+ draw.drawCircle(collider._worldPosition, collider._worldRadius, 0, 64, true, 3, cc.Color.DEBUG_BORDER_COLOR);
128
+ }
129
+ collider._preAabb = cloneRect(collider._AABB);
130
+ collider._AABB.x = collider._worldPosition.x - collider._worldRadius;
131
+ collider._AABB.y = collider._worldPosition.y - collider._worldRadius;
132
+ collider._AABB.width = collider._worldRadius * 2;
133
+ collider._AABB.height = collider._AABB.width;
134
+ // draw.drawRect(cc.p(this._AABB.x, this._AABB.y),
135
+ // cc.p(this._worldPosition.x + this._worldRadius, this._worldPosition.y + this._worldRadius),
136
+ // cc.Color.WHITE, 3, cc.Color.DEBUG_BORDER_COLOR);
137
+ };
138
+ return CircleCollider;
139
+ }(Collider));
140
+ exports.CircleCollider = CircleCollider;
141
+ var PolygonCollider = /** @class */ (function (_super) {
142
+ __extends(PolygonCollider, _super);
143
+ function PolygonCollider() {
144
+ return _super !== null && _super.apply(this, arguments) || this;
145
+ }
146
+ Object.defineProperty(PolygonCollider.prototype, "points", {
147
+ get: function () {
148
+ var _a = this.props.offset, x = _a.x, y = _a.y;
149
+ var pointsList = this.props.points.map(function (p) { return (0, polyfills_1.Vec2)(p.x + x, p.y + y); });
150
+ return pointsList;
151
+ },
152
+ set: function (points) {
153
+ this.props.points = points;
154
+ },
155
+ enumerable: false,
156
+ configurable: true
157
+ });
158
+ PolygonCollider.prototype.update = function (dt, draw) {
159
+ if (!this.node) {
160
+ return;
161
+ }
162
+ var transform = getNodeToWorldTransformAR(this.node);
163
+ var collider = this.getComponent(Collider);
164
+ collider._worldPoints = this.points.map(function (p) { return cc.pointApplyAffineTransform(p, transform); });
165
+ // cc.log(polyPoints);
166
+ if (draw) {
167
+ draw.drawPoly(collider._worldPoints, cc.Color.DEBUG_FILL_COLOR, 3, cc.Color.DEBUG_BORDER_COLOR);
168
+ }
169
+ var listX = collider._worldPoints.map(function (_a) {
170
+ var x = _a.x;
171
+ return x;
172
+ });
173
+ var listY = collider._worldPoints.map(function (_a) {
174
+ var y = _a.y;
175
+ return y;
176
+ });
177
+ collider._preAabb = cloneRect(collider._AABB);
178
+ collider._AABB.x = (0, math_1.getMin)(listX);
179
+ collider._AABB.y = (0, math_1.getMin)(listY);
180
+ collider._AABB.width = (0, math_1.getMax)(listX) - collider._AABB.x;
181
+ collider._AABB.height = (0, math_1.getMax)(listY) - collider._AABB.y;
182
+ // draw.drawRect(cc.p(this._AABB.x, this._AABB.y), cc.p(max(listX), max(listY)),
183
+ // cc.Color.WHITE, 3, cc.Color.DEBUG_BORDER_COLOR);
184
+ };
185
+ return PolygonCollider;
186
+ }(Collider));
187
+ exports.PolygonCollider = PolygonCollider;
188
+ var CollisionType;
189
+ (function (CollisionType) {
190
+ CollisionType[CollisionType["NONE"] = 0] = "NONE";
191
+ CollisionType[CollisionType["ENTER"] = 1] = "ENTER";
192
+ CollisionType[CollisionType["STAY"] = 2] = "STAY";
193
+ CollisionType[CollisionType["EXIT"] = 3] = "EXIT";
194
+ })(CollisionType || (exports.CollisionType = CollisionType = {}));
195
+ function isPolygonCollider(col) {
196
+ return col.getComponent(PolygonCollider) || col.getComponent(BoxCollider);
197
+ }
198
+ function isCircleCollider(col) {
199
+ return col.getComponent(CircleCollider);
200
+ }
201
+ var Contract = /** @class */ (function () {
202
+ function Contract(collider1, collider2) {
203
+ this._collider1 = collider1;
204
+ this._collider2 = collider2;
205
+ var isCollider1Polygon = isPolygonCollider(collider1);
206
+ var isCollider2Polygon = isPolygonCollider(collider2);
207
+ var isCollider1Circle = isCircleCollider(collider1);
208
+ var isCollider2Circle = isCircleCollider(collider2);
209
+ if (isCollider1Polygon && isCollider2Polygon) {
210
+ this._isPolygonPolygon = true;
211
+ }
212
+ else if (isCollider1Circle && isCollider2Circle) {
213
+ this._isCircleCircle = true;
214
+ }
215
+ else if (isCollider1Polygon && isCollider2Circle) {
216
+ this._isPolygonCircle = true;
217
+ }
218
+ else if (isCollider1Circle && isCollider2Polygon) {
219
+ this._isPolygonCircle = true;
220
+ this._collider1 = collider2;
221
+ this._collider2 = collider1;
222
+ }
223
+ // cc.log(this._isPolygonPolygon);
224
+ }
225
+ Contract.prototype.updateState = function () {
226
+ var result = this.test();
227
+ var type = CollisionType.NONE;
228
+ if (result && !this._touching) {
229
+ this._touching = true;
230
+ type = CollisionType.ENTER;
231
+ }
232
+ else if (result && this._touching) {
233
+ type = CollisionType.STAY;
234
+ }
235
+ else if (!result && this._touching) {
236
+ this._touching = false;
237
+ type = CollisionType.EXIT;
238
+ }
239
+ return type;
240
+ };
241
+ Contract.prototype.test = function () {
242
+ // if (!shouldCollider(this._collider1, this._collider2)) {
243
+ // return false;
244
+ // }
245
+ // cc.log(this._collider1.getAABB(), this._collider2.getAABB());
246
+ if (!cc.rectIntersectsRect(this._collider1.getAABB(), this._collider2.getAABB())) {
247
+ return false;
248
+ }
249
+ if (this._isPolygonPolygon) {
250
+ return cc.Intersection.polygonPolygon(this._collider1._worldPoints, this._collider2._worldPoints);
251
+ }
252
+ if (this._isCircleCircle) {
253
+ var p1 = this._collider1;
254
+ var p2 = this._collider2;
255
+ return cc.Intersection.circleCircle(p1._worldPosition, p1._worldRadius, p2._worldPosition, p2._worldRadius);
256
+ }
257
+ if (this._isPolygonCircle) {
258
+ var p2 = this._collider2;
259
+ return cc.Intersection.polygonCircle(this._collider1._worldPoints, p2._worldPosition, p2._worldRadius);
260
+ }
261
+ return false;
262
+ };
263
+ return Contract;
264
+ }());
265
+ exports.Contract = Contract;
@@ -0,0 +1,21 @@
1
+ import { EntityManager, EventManager, System } from 'entityx-ts';
2
+ import { Collider, Contract } from './CollideComponent';
3
+ export declare function shouldCollider(colA: Collider, colB: Collider): any;
4
+ export declare class CollideSystem implements System {
5
+ listColliders: Collider[];
6
+ _contracts: Contract[];
7
+ removeColliders: any[];
8
+ debugGraphics: cc.DrawNode;
9
+ enabledDebugDraw: boolean;
10
+ enabled: boolean;
11
+ colliderMatrix: boolean[][];
12
+ configure(event_manager: EventManager): void;
13
+ private onAddCollider;
14
+ private onRemoveCollider;
15
+ update(entities: EntityManager, events: EventManager, dt: number): void;
16
+ addCollider(collider: Collider): void;
17
+ removeCollider(collider: Collider): void;
18
+ addDebugNode(root: cc.Scene): void;
19
+ toggleDebugDraw(enable?: boolean): void;
20
+ }
21
+ //# sourceMappingURL=CollideSystem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CollideSystem.d.ts","sourceRoot":"","sources":["../../src/collider/CollideSystem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAc,MAAM,EAAE,MAAM,YAAY,CAAA;AAI5E,OAAO,EAA+B,QAAQ,EAAiB,QAAQ,EAAmB,MAAM,oBAAoB,CAAA;AAEpH,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,OAQ5D;AAED,qBAAa,aAAc,YAAW,MAAM;IAC1C,aAAa,EAAE,QAAQ,EAAE,CAAK;IAC9B,UAAU,EAAE,QAAQ,EAAE,CAAK;IAC3B,eAAe,QAAK;IACpB,aAAa,EAAE,EAAE,CAAC,QAAQ,CAAA;IAC1B,gBAAgB,UAAQ;IACxB,OAAO,UAAO;IACd,cAAc,cAAW;IAEzB,SAAS,CAAC,aAAa,EAAE,YAAY;IASrC,OAAO,CAAC,aAAa,CAOpB;IAED,OAAO,CAAC,gBAAgB,CAEvB;IAED,MAAM,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM;IA2GhE,WAAW,CAAC,QAAQ,EAAE,QAAQ;IAS9B,cAAc,CAAC,QAAQ,EAAE,QAAQ;IAIjC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK;IAK3B,eAAe,CAAC,MAAM,UAAO;CAI9B"}
@@ -0,0 +1,181 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CollideSystem = void 0;
4
+ exports.shouldCollider = shouldCollider;
5
+ var entityx_ts_1 = require("entityx-ts");
6
+ var gworld_1 = require("../gworld");
7
+ var NodeComp_1 = require("../gworld/components/NodeComp");
8
+ var CollideComponent_1 = require("./CollideComponent");
9
+ function shouldCollider(colA, colB) {
10
+ var groupA = colA.node.group;
11
+ var groupB = colB.node.group;
12
+ if (groupA === undefined || groupB === undefined) {
13
+ return true;
14
+ }
15
+ var colliderMatrix = gworld_1.GameWorld.Instance.systems.get(CollideSystem).colliderMatrix;
16
+ return colliderMatrix[groupA][groupB];
17
+ }
18
+ var CollideSystem = /** @class */ (function () {
19
+ function CollideSystem() {
20
+ var _this = this;
21
+ this.listColliders = [];
22
+ this._contracts = [];
23
+ this.removeColliders = [];
24
+ this.enabledDebugDraw = false;
25
+ this.enabled = true;
26
+ this.colliderMatrix = [[true]];
27
+ this.onAddCollider = function (_a) {
28
+ var entity = _a.entity, component = _a.component;
29
+ var collider = entity.assign(new CollideComponent_1.Collider(component));
30
+ collider.node = entity.getComponent(NodeComp_1.NodeComp);
31
+ collider.props = component.props;
32
+ // collider.props.enable = true
33
+ component.node = entity.getComponent(NodeComp_1.NodeComp);
34
+ _this.addCollider(collider);
35
+ };
36
+ this.onRemoveCollider = function (_a) {
37
+ var component = _a.component;
38
+ _this.removeColliders.push(component.getComponent(CollideComponent_1.Collider));
39
+ };
40
+ }
41
+ CollideSystem.prototype.configure = function (event_manager) {
42
+ event_manager.subscribe(entityx_ts_1.EventTypes.ComponentAdded, CollideComponent_1.BoxCollider, this.onAddCollider.bind(this));
43
+ event_manager.subscribe(entityx_ts_1.EventTypes.ComponentAdded, CollideComponent_1.CircleCollider, this.onAddCollider.bind(this));
44
+ event_manager.subscribe(entityx_ts_1.EventTypes.ComponentAdded, CollideComponent_1.PolygonCollider, this.onAddCollider.bind(this));
45
+ event_manager.subscribe(entityx_ts_1.EventTypes.ComponentRemoved, CollideComponent_1.BoxCollider, this.onRemoveCollider.bind(this));
46
+ event_manager.subscribe(entityx_ts_1.EventTypes.ComponentRemoved, CollideComponent_1.CircleCollider, this.onRemoveCollider.bind(this));
47
+ event_manager.subscribe(entityx_ts_1.EventTypes.ComponentRemoved, CollideComponent_1.PolygonCollider, this.onRemoveCollider.bind(this));
48
+ };
49
+ CollideSystem.prototype.update = function (entities, events, dt) {
50
+ var _this = this;
51
+ if (!this.enabled) {
52
+ return;
53
+ }
54
+ this.listColliders.forEach(function (collider) {
55
+ if (!cc.sys.isObjectValid(collider.node.instance)) {
56
+ _this.removeColliders.push(collider);
57
+ }
58
+ });
59
+ // this.removeColliders.forEach(comp => {
60
+ // this.listColliders = this.listColliders.filter(col => !col.isEqual(comp)
61
+ // && cc.sys.isObjectValid(col.node.instance));
62
+ // this._contracts = this._contracts.filter(contract => {
63
+ // const col1 = contract._collider1;
64
+ // const col2 = contract._collider2;
65
+ // if (col1.isEqual(comp) || !cc.sys.isObjectValid(col1.node.instance)) {
66
+ // if (contract._touching) {
67
+ // col2.node.emit('onCollisionExit', col1, col2);
68
+ // }
69
+ // return false;
70
+ // }
71
+ // if (col2.isEqual(comp) || !cc.sys.isObjectValid(col2.node.instance)) {
72
+ // if (contract._touching) {
73
+ // col1.node.emit('onCollisionExit', col2, col1);
74
+ // }
75
+ // return false;
76
+ // }
77
+ // return true;
78
+ // }
79
+ // );
80
+ // });
81
+ this.removeColliders = [];
82
+ var draw;
83
+ var _a = this, enabledDebugDraw = _a.enabledDebugDraw, debugGraphics = _a.debugGraphics;
84
+ if (enabledDebugDraw) {
85
+ draw = debugGraphics;
86
+ draw.clear();
87
+ // this.listColliders.forEach(collider => {
88
+ // if (collider.node && collider.node.active) {
89
+ // collider.update(dt, draw);
90
+ // }
91
+ // });
92
+ // } else {
93
+ // this.listColliders.forEach(collider => {
94
+ // if (collider.node && collider.node.active) {
95
+ // collider.update(dt);
96
+ // }
97
+ // });
98
+ }
99
+ for (var _i = 0, _b = entities.entities_with_components(CollideComponent_1.BoxCollider); _i < _b.length; _i++) {
100
+ var entt = _b[_i];
101
+ var comp = entt.getComponent(CollideComponent_1.BoxCollider);
102
+ comp.update(dt, draw);
103
+ }
104
+ for (var _c = 0, _d = entities.entities_with_components(CollideComponent_1.CircleCollider); _c < _d.length; _c++) {
105
+ var entt = _d[_c];
106
+ var comp = entt.getComponent(CollideComponent_1.CircleCollider);
107
+ comp.update(dt, draw);
108
+ }
109
+ for (var _e = 0, _f = entities.entities_with_components(CollideComponent_1.PolygonCollider); _e < _f.length; _e++) {
110
+ var entt = _f[_e];
111
+ var comp = entt.getComponent(CollideComponent_1.PolygonCollider);
112
+ comp.update(dt, draw);
113
+ }
114
+ this._contracts.forEach(function (contract) {
115
+ var col1 = contract._collider1;
116
+ var col2 = contract._collider2;
117
+ if (!cc.sys.isObjectValid(col1.node.instance) ||
118
+ !cc.sys.isObjectValid(col2.node.instance) ||
119
+ !col1.node ||
120
+ !col2.node ||
121
+ !col1.node.active ||
122
+ !col2.node.active) {
123
+ return;
124
+ }
125
+ var type = contract.updateState();
126
+ switch (type) {
127
+ case CollideComponent_1.CollisionType.ENTER: {
128
+ if (col1.props.onCollisionEnter) {
129
+ col1.props.onCollisionEnter(col2);
130
+ }
131
+ if (col2.props.onCollisionEnter) {
132
+ col2.props.onCollisionEnter(col1);
133
+ }
134
+ break;
135
+ }
136
+ case CollideComponent_1.CollisionType.STAY:
137
+ if (col1.props.onCollisionStay) {
138
+ col1.props.onCollisionStay(col2);
139
+ }
140
+ if (col2.props.onCollisionStay) {
141
+ col2.props.onCollisionStay(col1);
142
+ }
143
+ break;
144
+ case CollideComponent_1.CollisionType.EXIT:
145
+ if (col1.props.onCollisionExit) {
146
+ col1.props.onCollisionExit(col2);
147
+ }
148
+ if (col2.props.onCollisionExit) {
149
+ col2.props.onCollisionExit(col1);
150
+ }
151
+ break;
152
+ default:
153
+ break;
154
+ }
155
+ });
156
+ };
157
+ CollideSystem.prototype.addCollider = function (collider) {
158
+ var _this = this;
159
+ this.listColliders.forEach(function (col) {
160
+ if (shouldCollider(col, collider)) {
161
+ _this._contracts.push(new CollideComponent_1.Contract(col, collider));
162
+ }
163
+ });
164
+ this.listColliders.push(collider);
165
+ };
166
+ CollideSystem.prototype.removeCollider = function (collider) {
167
+ this.removeColliders.push(collider);
168
+ };
169
+ CollideSystem.prototype.addDebugNode = function (root) {
170
+ this.debugGraphics = new cc.DrawNode();
171
+ this.debugGraphics.zIndex = 1000;
172
+ root.addChild(this.debugGraphics);
173
+ };
174
+ CollideSystem.prototype.toggleDebugDraw = function (enable) {
175
+ if (enable === void 0) { enable = true; }
176
+ this.enabledDebugDraw = enable;
177
+ this.addDebugNode(cc.director.getRunningScene());
178
+ };
179
+ return CollideSystem;
180
+ }());
181
+ exports.CollideSystem = CollideSystem;
@@ -0,0 +1,2 @@
1
+ export declare function setupCollider(): void;
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/collider/index.ts"],"names":[],"mappings":"AAGA,wBAAgB,aAAa,SAI5B"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setupCollider = setupCollider;
4
+ var gworld_1 = require("../gworld");
5
+ var CollideSystem_1 = require("./CollideSystem");
6
+ function setupCollider() {
7
+ gworld_1.GameWorld.Instance.systems.add(CollideSystem_1.CollideSystem);
8
+ gworld_1.GameWorld.Instance.listUpdate.push(CollideSystem_1.CollideSystem);
9
+ gworld_1.GameWorld.Instance.systems.configureOnce(CollideSystem_1.CollideSystem);
10
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"PixiDragonBonesSprite.d.ts","sourceRoot":"","sources":["../../src/dragonbones/PixiDragonBonesSprite.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,wBAAwB;;;;;;CAkCpC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,GA+DlC,CAAC"}
1
+ {"version":3,"file":"PixiDragonBonesSprite.d.ts","sourceRoot":"","sources":["../../src/dragonbones/PixiDragonBonesSprite.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,wBAAwB;;;;;;CA8BpC,CAAA;AAED,eAAO,MAAM,qBAAqB,EAAE,GA+DlC,CAAA"}