bard-legends-framework 0.9.6 → 0.10.0

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 (241) hide show
  1. package/dist/_interfaces/index.d.ts +2 -2
  2. package/dist/_interfaces/index.js +2 -3
  3. package/dist/game-entities/attachable/attachable.d.ts +6 -6
  4. package/dist/game-entities/attachable/attachable.js +28 -30
  5. package/dist/game-entities/attachable/attachable.spec.js +129 -128
  6. package/dist/game-entities/attachable/attachable.store.d.ts +5 -5
  7. package/dist/game-entities/attachable/attachable.store.js +34 -32
  8. package/dist/game-entities/attachable/attachable.test.js +132 -131
  9. package/dist/game-entities/attachable/destroyable.d.ts +13 -13
  10. package/dist/game-entities/attachable/destroyable.js +64 -69
  11. package/dist/game-entities/attachable/helpers/decorate-actions-lib.d.ts +15 -15
  12. package/dist/game-entities/attachable/helpers/decorate-actions-lib.js +125 -116
  13. package/dist/game-entities/attachable/helpers/referance-variable.d.ts +15 -15
  14. package/dist/game-entities/attachable/helpers/referance-variable.js +47 -48
  15. package/dist/game-entities/attachable/interfaces.d.ts +6 -6
  16. package/dist/game-entities/attachable/interfaces.js +2 -3
  17. package/dist/game-entities/base/helpers/decorate-actions-lib.js +0 -1
  18. package/dist/game-entities/controller/controller.js +0 -1
  19. package/dist/game-entities/controller/controller.spec.js +128 -125
  20. package/dist/game-entities/entity/entity.d.ts +4 -1
  21. package/dist/game-entities/entity/entity.js +5 -5
  22. package/dist/game-entities/entity/entity.spec.js +263 -293
  23. package/dist/game-entities/entity/helpers/view-creation.helper.d.ts +7 -7
  24. package/dist/game-entities/entity/helpers/view-creation.helper.js +48 -48
  25. package/dist/game-entities/scene/scene.spec.js +219 -223
  26. package/dist/game-entities/service/service.js +0 -4
  27. package/dist/game-entities/service/service.spec.js +265 -237
  28. package/dist/game-entities/service/service.test.js +4 -2
  29. package/dist/game-entities/update-loop.d.ts +18 -18
  30. package/dist/game-entities/update-loop.js +46 -28
  31. package/dist/game-entities/view/view.spec.js +490 -506
  32. package/dist/game-entities/view/view.test.js +1 -1
  33. package/dist/lib/animator/animations.d.ts +13 -13
  34. package/dist/lib/animator/animations.js +43 -40
  35. package/dist/lib/animator/animator.d.ts +41 -41
  36. package/dist/lib/animator/animator.js +194 -197
  37. package/dist/lib/animator/animator.spec.js +699 -612
  38. package/dist/lib/animator/index.js +24 -19
  39. package/dist/lib/libraries/animator/animations.d.ts +13 -13
  40. package/dist/lib/libraries/animator/animations.js +43 -40
  41. package/dist/lib/libraries/animator/animator.d.ts +41 -41
  42. package/dist/lib/libraries/animator/animator.js +194 -197
  43. package/dist/lib/libraries/animator/animator.spec.js +699 -612
  44. package/dist/lib/libraries/animator/index.js +24 -19
  45. package/dist/lib/libraries/path-finder/path-finder.d.ts +2 -2
  46. package/dist/lib/libraries/path-finder/path-finder.js +19 -20
  47. package/dist/lib/path-finder/path-finder.d.ts +2 -2
  48. package/dist/lib/path-finder/path-finder.js +19 -20
  49. package/dist/lib/services/keyboard/keyboard.d.ts +4 -4
  50. package/dist/lib/services/keyboard/keyboard.js +39 -31
  51. package/dist/lib/services/mouse/mouse.service.d.ts +8 -8
  52. package/dist/lib/services/mouse/mouse.service.js +65 -53
  53. package/dist/lib/services/mouse/mouser-target-focus.service.d.ts +11 -11
  54. package/dist/lib/services/mouse/mouser-target-focus.service.js +83 -81
  55. package/dist/lib/update-loop.d.ts +10 -10
  56. package/dist/lib/update-loop.js +35 -27
  57. package/dist/physics/entitity-types/immovable-physics-entity.d.ts +6 -6
  58. package/dist/physics/entitity-types/immovable-physics-entity.js +23 -24
  59. package/dist/physics/entitity-types/movable-entity.d.ts +6 -6
  60. package/dist/physics/entitity-types/movable-entity.js +21 -22
  61. package/dist/physics/entitity-types/movable-physics-entity.d.ts +14 -14
  62. package/dist/physics/entitity-types/movable-physics-entity.js +83 -88
  63. package/dist/physics/entitity-types/physics-entity.d.ts +23 -23
  64. package/dist/physics/entitity-types/physics-entity.js +97 -88
  65. package/dist/physics/helpers/closest-available-space.helper.d.ts +16 -16
  66. package/dist/physics/helpers/closest-available-space.helper.js +98 -96
  67. package/dist/physics/helpers/closest-available-space.helper.spec.js +115 -68
  68. package/dist/physics/helpers/p2js.helper.d.ts +3 -3
  69. package/dist/physics/helpers/p2js.helper.js +21 -22
  70. package/dist/physics/helpers/shape-factory.d.ts +9 -4
  71. package/dist/physics/helpers/shape-factory.js +99 -75
  72. package/dist/physics/libs/p2js.helper.js +1 -1
  73. package/dist/physics/libs/position-to-grid-position-converter.d.ts +3 -3
  74. package/dist/physics/libs/position-to-grid-position-converter.js +15 -13
  75. package/dist/physics/module//360/237/223/220services/availability-grid.service.d.ts +10 -5
  76. package/dist/physics/module//360/237/223/220services/availability-grid.service.js +77 -57
  77. package/dist/physics/module//360/237/223/220services/border.service.d.ts +2 -2
  78. package/dist/physics/module//360/237/223/220services/border.service.js +57 -37
  79. package/dist/physics/module//360/237/223/220services/collision/physics-body-group.service.js +1 -1
  80. package/dist/physics/module//360/237/223/220services/collisions.service.d.ts +7 -7
  81. package/dist/physics/module//360/237/223/220services/collisions.service.js +110 -98
  82. package/dist/physics/module//360/237/223/220services/debug-visuals.service.d.ts +28 -6
  83. package/dist/physics/module//360/237/223/220services/debug-visuals.service.js +121 -89
  84. package/dist/physics/module//360/237/223/220services/eliptic-explosion.service.d.ts +15 -7
  85. package/dist/physics/module//360/237/223/220services/eliptic-explosion.service.js +117 -93
  86. package/dist/physics/module//360/237/223/220services/explosion.service.d.ts +14 -7
  87. package/dist/physics/module//360/237/223/220services/explosion.service.js +102 -77
  88. package/dist/physics/module//360/237/223/220services/explosions/eliptic-explosion.service.d.ts +15 -7
  89. package/dist/physics/module//360/237/223/220services/explosions/eliptic-explosion.service.js +117 -93
  90. package/dist/physics/module//360/237/223/220services/explosions/explosion.service.d.ts +14 -7
  91. package/dist/physics/module//360/237/223/220services/explosions/explosion.service.js +102 -77
  92. package/dist/physics/module//360/237/223/220services/explosions/helpers/ray-cast-hit-converter.d.ts +3 -3
  93. package/dist/physics/module//360/237/223/220services/explosions/helpers/ray-cast-hit-converter.js +71 -67
  94. package/dist/physics/module//360/237/223/220services/helpers/ray-cast-hit-converter.d.ts +3 -3
  95. package/dist/physics/module//360/237/223/220services/helpers/ray-cast-hit-converter.js +71 -67
  96. package/dist/physics/module//360/237/223/220services/impact/eliptic-explosion.service.js +1 -1
  97. package/dist/physics/module//360/237/223/220services/materials.service.d.ts +16 -11
  98. package/dist/physics/module//360/237/223/220services/materials.service.js +118 -108
  99. package/dist/physics/module//360/237/223/220services/path-finder.service.d.ts +19 -8
  100. package/dist/physics/module//360/237/223/220services/path-finder.service.js +121 -82
  101. package/dist/physics/module//360/237/223/220services/physics-world.service.d.ts +30 -15
  102. package/dist/physics/module//360/237/223/220services/physics-world.service.js +122 -100
  103. package/dist/physics/module//360/237/223/220services/ray-casting.service.d.ts +3 -3
  104. package/dist/physics/module//360/237/223/220services/ray-casting.service.js +87 -86
  105. package/dist/physics/module//360/237/223/220services/shape-creation.service.d.ts +9 -4
  106. package/dist/physics/module//360/237/223/220services/shape-creation.service.js +113 -84
  107. package/dist/physics/module//360/237/223/220services/test-visuals/test-visuals.service.js +2 -1
  108. package/dist/physics/module//360/237/247/212entities/data-structures/availability-grid-cache.d.ts +8 -8
  109. package/dist/physics/module//360/237/247/212entities/data-structures/availability-grid-cache.js +32 -33
  110. package/dist/physics/physics-world.d.ts +50 -34
  111. package/dist/physics/physics-world.js +142 -133
  112. package/dist/physics/sub-elements/available-spaces/helpers/availability-grid.helper.d.ts +3 -3
  113. package/dist/physics/sub-elements/available-spaces/helpers/availability-grid.helper.js +15 -13
  114. package/dist/physics/sub-elements/available-spaces/physics-availability-grid.d.ts +9 -9
  115. package/dist/physics/sub-elements/available-spaces/physics-availability-grid.js +82 -77
  116. package/dist/physics/sub-elements/available-spaces/physics-available-spaces.d.ts +18 -14
  117. package/dist/physics/sub-elements/available-spaces/physics-available-spaces.js +91 -79
  118. package/dist/physics/sub-elements/collisions/contact-equation-orginiser.d.ts +11 -11
  119. package/dist/physics/sub-elements/collisions/contact-equation-orginiser.js +84 -76
  120. package/dist/physics/sub-elements/collisions/physics-collision.d.ts +7 -7
  121. package/dist/physics/sub-elements/collisions/physics-collision.js +43 -44
  122. package/dist/physics/sub-elements/elements/physics-body-groups.d.ts +11 -11
  123. package/dist/physics/sub-elements/elements/physics-body-groups.js +54 -54
  124. package/dist/physics/sub-elements/elements/physics-materials.d.ts +15 -10
  125. package/dist/physics/sub-elements/elements/physics-materials.js +101 -100
  126. package/dist/physics/sub-elements/elements/physics-world-borders.d.ts +3 -3
  127. package/dist/physics/sub-elements/elements/physics-world-borders.js +69 -45
  128. package/dist/physics/sub-elements/physics-body-groups.d.ts +8 -8
  129. package/dist/physics/sub-elements/physics-body-groups.js +41 -42
  130. package/dist/physics/sub-elements/physics-collision.d.ts +16 -16
  131. package/dist/physics/sub-elements/physics-collision.js +141 -121
  132. package/dist/physics/sub-elements/physics-materials.d.ts +15 -10
  133. package/dist/physics/sub-elements/physics-materials.js +101 -100
  134. package/dist/physics/sub-elements/physics-world-borders.d.ts +2 -2
  135. package/dist/physics/sub-elements/physics-world-borders.js +25 -26
  136. package/dist/physics/sub-elements/raycasting/physics-body-explosion-hit.d.ts +15 -11
  137. package/dist/physics/sub-elements/raycasting/physics-body-explosion-hit.js +59 -59
  138. package/dist/physics/sub-elements/raycasting/physics-explosion.d.ts +13 -6
  139. package/dist/physics/sub-elements/raycasting/physics-explosion.js +108 -73
  140. package/dist/physics/sub-elements/raycasting/ray-cast.d.ts +19 -19
  141. package/dist/physics/sub-elements/raycasting/ray-cast.js +93 -98
  142. package/dist/pixi/display-object/components/filters.d.ts +18 -18
  143. package/dist/pixi/display-object/components/filters.js +106 -81
  144. package/dist/pixi/display-object/components/glow-effect.d.ts +8 -8
  145. package/dist/pixi/display-object/components/glow-effect.js +33 -36
  146. package/dist/pixi/display-object/components/glow-filter.d.ts +8 -8
  147. package/dist/pixi/display-object/components/glow-filter.js +33 -36
  148. package/dist/pixi/display-object/container-attributes.js +1 -1
  149. package/dist/pixi/display-object/display-object-attributes.d.ts +41 -41
  150. package/dist/pixi/display-object/display-object-attributes.js +148 -150
  151. package/dist/pixi/display-object/display-object.d.ts +17 -17
  152. package/dist/pixi/display-object/display-object.js +79 -75
  153. package/dist/pixi/display-object/filters/base-filters/alpha-primer-color.filter.d.ts +9 -4
  154. package/dist/pixi/display-object/filters/base-filters/alpha-primer-color.filter.js +89 -77
  155. package/dist/pixi/display-object/filters/base-filters/blur.filter.js +30 -30
  156. package/dist/pixi/display-object/filters/base-filters/contrast-filter.d.ts +9 -4
  157. package/dist/pixi/display-object/filters/base-filters/contrast-filter.js +62 -53
  158. package/dist/pixi/display-object/filters/base-filters/expand-with-alpha-color.d.ts +10 -5
  159. package/dist/pixi/display-object/filters/base-filters/expand-with-alpha-color.js +93 -81
  160. package/dist/pixi/display-object/filters/base-filters/expand-with-color-gradient.d.ts +12 -7
  161. package/dist/pixi/display-object/filters/base-filters/expand-with-color-gradient.js +120 -109
  162. package/dist/pixi/display-object/filters/base-filters/expand-with-color.d.ts +10 -5
  163. package/dist/pixi/display-object/filters/base-filters/expand-with-color.filter.js +32 -32
  164. package/dist/pixi/display-object/filters/base-filters/expand-with-color.js +92 -85
  165. package/dist/pixi/display-object/filters/templates/checking-neighbors.template.js +28 -28
  166. package/dist/pixi/display-object/filters/templates/plane.template.js +20 -20
  167. package/dist/pixi/display-object/filters.js +20 -4
  168. package/dist/pixi/display-object/objects/components/filters.d.ts +18 -18
  169. package/dist/pixi/display-object/objects/components/filters.js +106 -81
  170. package/dist/pixi/display-object/objects/container.d.ts +2 -2
  171. package/dist/pixi/display-object/objects/container.js +39 -30
  172. package/dist/pixi/display-object/objects/graphics.d.ts +28 -28
  173. package/dist/pixi/display-object/objects/graphics.js +218 -202
  174. package/dist/pixi/display-object/objects/helpers/filters.d.ts +25 -25
  175. package/dist/pixi/display-object/objects/helpers/filters.js +150 -124
  176. package/dist/pixi/display-object/objects/helpers/glow-sprite-generator.d.ts +7 -7
  177. package/dist/pixi/display-object/objects/helpers/glow-sprite-generator.js +114 -95
  178. package/dist/pixi/display-object/objects/premade-objects/sprite-with-glowing-shapes.d.ts +5 -5
  179. package/dist/pixi/display-object/objects/premade-objects/sprite-with-glowing-shapes.js +81 -57
  180. package/dist/pixi/display-object/objects/sprite.d.ts +43 -43
  181. package/dist/pixi/display-object/objects/sprite.js +248 -233
  182. package/dist/pixi/display-object/objects/text/helpers/process-steps/1-data-in-converter/rich-text-data-in-converter.js +1 -1
  183. package/dist/pixi/display-object/objects/text/helpers/process-steps/1-data-in-converter/rich-text-data-in-converter.test.js +9 -9
  184. package/dist/pixi/display-object/objects/text/helpers/rich-text-to-plane-text.d.ts +1 -1
  185. package/dist/pixi/display-object/objects/text.d.ts +25 -25
  186. package/dist/pixi/display-object/objects/text.js +111 -102
  187. package/dist/pixi/display-object/premade-objects/sprite-with-glowing-shapes.d.ts +13 -9
  188. package/dist/pixi/display-object/premade-objects/sprite-with-glowing-shapes.js +96 -67
  189. package/dist/pixi/game.d.ts +1 -1
  190. package/dist/pixi/game.js +2 -2
  191. package/dist/pixi/helpers/glow-sprite-generator.d.ts +6 -6
  192. package/dist/pixi/helpers/glow-sprite-generator.js +99 -84
  193. package/dist/pixi/helpers/pixi-container.helper.d.ts +1 -1
  194. package/dist/pixi/helpers/pixi-container.helper.js +10 -8
  195. package/dist/pixi/helpers/screen-position-to-stage.helper.d.ts +1 -1
  196. package/dist/pixi/helpers/screen-position-to-stage.helper.js +12 -12
  197. package/dist/pixi/helpers/screen-position-to-stage.helper.test.js +174 -79
  198. package/dist/pixi/modules/CAMERA/index.d.ts +1 -1
  199. package/dist/pixi/modules/CAMERA/index.js +3 -3
  200. package/dist/pixi/modules/CAMERA//360/237/247/212entities/camera.entity.js +1 -1
  201. package/dist/services/keyboard/keyboard.d.ts +4 -4
  202. package/dist/services/keyboard/keyboard.js +39 -31
  203. package/dist/services/mouse/mouse.service.d.ts +8 -8
  204. package/dist/services/mouse/mouse.service.js +65 -53
  205. package/dist/services/mouse/mouser-target-focus.service.d.ts +11 -11
  206. package/dist/services/mouse/mouser-target-focus.service.js +83 -81
  207. package/dist/utilities/libraries/animator/animating-content/state-animation.d.ts +29 -26
  208. package/dist/utilities/libraries/animator/animating-content/state-animation.js +159 -165
  209. package/dist/utilities/libraries/animator/animating-content/state-animation.test.js +386 -375
  210. package/dist/utilities/libraries/animator/animator.spec.js +765 -656
  211. package/dist/utilities/libraries/binary-heap/binary-heap.d.ts +11 -11
  212. package/dist/utilities/libraries/binary-heap/binary-heap.js +79 -81
  213. package/dist/utilities/libraries/data-structures/binary-heap/binary-heap.d.ts +11 -11
  214. package/dist/utilities/libraries/data-structures/binary-heap/binary-heap.js +79 -81
  215. package/dist/utilities/libraries/data-structures/grid/grid.d.ts +35 -31
  216. package/dist/utilities/libraries/data-structures/grid/grid.js +128 -117
  217. package/dist/utilities/libraries/data-structures/grid/grid.spec.js +176 -138
  218. package/dist/utilities/libraries/data-structures/grid/grid.test.js +218 -141
  219. package/dist/utilities/libraries/data-structures/grid/position-to-grid-position-converter.d.ts +3 -3
  220. package/dist/utilities/libraries/data-structures/grid/position-to-grid-position-converter.js +15 -13
  221. package/dist/utilities/libraries/data-structures/queue/queue.d.ts +21 -21
  222. package/dist/utilities/libraries/data-structures/queue/queue.js +63 -66
  223. package/dist/utilities/libraries/data-structures/queue/queue.test.js +54 -55
  224. package/dist/utilities/libraries/grid-algorithms/closest-available-space/closest-available-space.helper.spec.js +122 -68
  225. package/dist/utilities/libraries/grid-algorithms/path-finder/path-finder.spec.js +140 -135
  226. package/dist/utilities/libraries/grid-algorithms/vector-field-path-finder/vector-field-path-finder.spec.js +293 -229
  227. package/dist/utilities/libraries/path-finder/path-finder.d.ts +7 -7
  228. package/dist/utilities/libraries/path-finder/path-finder.js +113 -109
  229. package/dist/utilities/libraries/path-finder/path-finder.spec.js +131 -106
  230. package/dist/utilities/services/keyboard/keyboard.d.ts +4 -4
  231. package/dist/utilities/services/keyboard/keyboard.js +42 -34
  232. package/dist/utilities/services/mouse/helpers/mouse-position.helper.d.ts +1 -1
  233. package/dist/utilities/services/mouse/helpers/mouse-position.helper.js +12 -12
  234. package/dist/utilities/services/mouse/helpers/mouse-position.helper.test.js +168 -73
  235. package/dist/utilities/services/mouse/mouse-target-focus.service.d.ts +15 -15
  236. package/dist/utilities/services/mouse/mouse-target-focus.service.js +79 -76
  237. package/dist/utilities/services/mouse/mouse.service.d.ts +9 -9
  238. package/dist/utilities/services/mouse/mouse.service.js +86 -72
  239. package/dist/utilities/services/mouse/mouser-target-focus.service.d.ts +11 -11
  240. package/dist/utilities/services/mouse/mouser-target-focus.service.js +83 -81
  241. package/package.json +8 -13
@@ -1,90 +1,102 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ Object.defineProperty(exports, '__esModule', { value: true });
3
2
  exports.PhysicsAvailableSpaces = void 0;
4
- const helpers_lib_1 = require("helpers-lib");
5
- const closest_available_space_helper_1 = require("../../../utilities/libraries/grid-algorithms/closest-available-space/closest-available-space.helper");
6
- const p2js_helper_1 = require("../../helpers/p2js.helper");
7
- const utilities_1 = require("../../../utilities");
8
- const physics_body_groups_1 = require("../elements/physics-body-groups");
9
- const physics_entity_1 = require("../../entitity-types/physics-entity");
10
- const vector_field_path_finder_1 = require("../../../utilities/libraries/grid-algorithms/vector-field-path-finder/vector-field-path-finder");
11
- const availability_grid_helper_1 = require("./helpers/availability-grid.helper");
3
+ const helpers_lib_1 = require('helpers-lib');
4
+ const closest_available_space_helper_1 = require('../../../utilities/libraries/grid-algorithms/closest-available-space/closest-available-space.helper');
5
+ const p2js_helper_1 = require('../../helpers/p2js.helper');
6
+ const utilities_1 = require('../../../utilities');
7
+ const physics_body_groups_1 = require('../elements/physics-body-groups');
8
+ const physics_entity_1 = require('../../entitity-types/physics-entity');
9
+ const vector_field_path_finder_1 = require('../../../utilities/libraries/grid-algorithms/vector-field-path-finder/vector-field-path-finder');
10
+ const availability_grid_helper_1 = require('./helpers/availability-grid.helper');
12
11
  const GRID_CELL_SIZE = 50;
13
12
  class PhysicsAvailableSpaces {
14
- constructor(physicsAvailabilityGrid) {
15
- this.physicsAvailabilityGrid = physicsAvailabilityGrid;
16
- this.vectorFieldCache = new Map();
13
+ constructor(physicsAvailabilityGrid) {
14
+ this.physicsAvailabilityGrid = physicsAvailabilityGrid;
15
+ this.vectorFieldCache = new Map();
16
+ }
17
+ clear() {
18
+ this.vectorFieldCache.clear();
19
+ }
20
+ getAvailabilityGrid(physicsBodyGroup) {
21
+ const availabilityGrid = this.physicsAvailabilityGrid.getAvilabilityGrid(GRID_CELL_SIZE, physicsBodyGroup);
22
+ return availabilityGrid.map((value, position) => ({
23
+ position: availability_grid_helper_1.AvailabilityGridHelper.gridPositionToPosition(position, GRID_CELL_SIZE),
24
+ availability: value
25
+ }));
26
+ }
27
+ findClosestAvailableSpace(body, physicsBodyGroup) {
28
+ body.aabbNeedsUpdate = true;
29
+ body.updateAABB();
30
+ const changeVector = closest_available_space_helper_1.ClosestAvailableSpaceHelper.findByConvertingGridSpace(
31
+ this.physicsAvailabilityGrid.getAvilabilityGrid(GRID_CELL_SIZE, physicsBodyGroup),
32
+ p2js_helper_1.P2JSHelper.aabbToBoundingBox(body.aabb),
33
+ GRID_CELL_SIZE
34
+ );
35
+ return changeVector;
36
+ }
37
+ findPathAStar(startingPosition, target, options) {
38
+ if (!options) {
39
+ options = {};
17
40
  }
18
- clear() {
19
- this.vectorFieldCache.clear();
41
+ if (options.includeDiagonals === undefined) {
42
+ options.includeDiagonals = false;
20
43
  }
21
- getAvailabilityGrid(physicsBodyGroup) {
22
- let availabilityGrid = this.physicsAvailabilityGrid.getAvilabilityGrid(GRID_CELL_SIZE, physicsBodyGroup);
23
- return availabilityGrid.map((value, position) => ({
24
- position: availability_grid_helper_1.AvailabilityGridHelper.gridPositionToPosition(position, GRID_CELL_SIZE),
25
- availability: value
26
- }));
44
+ if (options.collidableWithGroup === undefined) {
45
+ options.collidableWithGroup = physics_body_groups_1.PhysicsBodyGroup.none;
27
46
  }
28
- findClosestAvailableSpace(body, physicsBodyGroup) {
29
- body.aabbNeedsUpdate = true;
30
- body.updateAABB();
31
- let changeVector = closest_available_space_helper_1.ClosestAvailableSpaceHelper.findByConvertingGridSpace(this.physicsAvailabilityGrid.getAvilabilityGrid(GRID_CELL_SIZE, physicsBodyGroup), p2js_helper_1.P2JSHelper.aabbToBoundingBox(body.aabb), GRID_CELL_SIZE);
32
- return changeVector;
47
+ let targetPosition;
48
+ let targetP2Body;
49
+ if (helpers_lib_1.Comparator.isString(target)) {
50
+ const targetEntity = physics_entity_1.PhysicsEntity.getPhysicsInstanceOrFail(target);
51
+ targetP2Body = targetEntity['p2Body'];
52
+ targetPosition = p2js_helper_1.P2JSHelper.arrayToVector(targetP2Body.position);
53
+ } else {
54
+ targetPosition = target;
33
55
  }
34
- findPathAStar(startingPosition, target, options) {
35
- if (!options) {
36
- options = {};
37
- }
38
- if (options.includeDiagonals === undefined) {
39
- options.includeDiagonals = false;
40
- }
41
- if (options.collidableWithGroup === undefined) {
42
- options.collidableWithGroup = physics_body_groups_1.PhysicsBodyGroup.none;
43
- }
44
- let targetPosition;
45
- let targetP2Body;
46
- if (helpers_lib_1.Comparator.isString(target)) {
47
- let targetEntity = physics_entity_1.PhysicsEntity.getPhysicsInstanceOrFail(target);
48
- targetP2Body = targetEntity['p2Body'];
49
- targetPosition = p2js_helper_1.P2JSHelper.arrayToVector(targetP2Body.position);
50
- }
51
- else {
52
- targetPosition = target;
53
- }
54
- let startingGridPosition = availability_grid_helper_1.AvailabilityGridHelper.positionToGridPosition(startingPosition, GRID_CELL_SIZE);
55
- let targetGridPosition = availability_grid_helper_1.AvailabilityGridHelper.positionToGridPosition(targetPosition, GRID_CELL_SIZE);
56
- let availabilityGrid = this.physicsAvailabilityGrid.getAvilabilityGrid(GRID_CELL_SIZE, options.collidableWithGroup);
57
- if (targetP2Body) {
58
- let boundingBox = p2js_helper_1.P2JSHelper.aabbToBoundingBox(targetP2Body.aabb);
59
- let gridSpaceBoundingBox = availability_grid_helper_1.AvailabilityGridHelper.areaToGridArea(boundingBox, GRID_CELL_SIZE);
60
- availabilityGrid.safeSetArea(gridSpaceBoundingBox, true);
61
- }
62
- let result = utilities_1.PathFinder.findPath(availabilityGrid, startingGridPosition, targetGridPosition, {
63
- includeDiagonals: options.includeDiagonals
64
- });
65
- result.path = result.path.map(gridPosition => availability_grid_helper_1.AvailabilityGridHelper.gridPositionToPosition(gridPosition, GRID_CELL_SIZE));
66
- return result;
56
+ const startingGridPosition = availability_grid_helper_1.AvailabilityGridHelper.positionToGridPosition(
57
+ startingPosition,
58
+ GRID_CELL_SIZE
59
+ );
60
+ const targetGridPosition = availability_grid_helper_1.AvailabilityGridHelper.positionToGridPosition(
61
+ targetPosition,
62
+ GRID_CELL_SIZE
63
+ );
64
+ const availabilityGrid = this.physicsAvailabilityGrid.getAvilabilityGrid(GRID_CELL_SIZE, options.collidableWithGroup);
65
+ if (targetP2Body) {
66
+ const boundingBox = p2js_helper_1.P2JSHelper.aabbToBoundingBox(targetP2Body.aabb);
67
+ const gridSpaceBoundingBox = availability_grid_helper_1.AvailabilityGridHelper.areaToGridArea(boundingBox, GRID_CELL_SIZE);
68
+ availabilityGrid.safeSetArea(gridSpaceBoundingBox, true);
67
69
  }
68
- findPathDirection(startingPosition, target, collidableWithGroup) {
69
- let targetArea;
70
- if (helpers_lib_1.Comparator.isString(target)) {
71
- let targetEntity = physics_entity_1.PhysicsEntity.getPhysicsInstanceOrFail(target);
72
- targetArea = p2js_helper_1.P2JSHelper.aabbToBoundingBox(targetEntity['p2Body'].aabb);
73
- }
74
- else {
75
- targetArea = new helpers_lib_1.Rectangle(target, target);
76
- }
77
- let targetGridArea = availability_grid_helper_1.AvailabilityGridHelper.areaToGridArea(targetArea, GRID_CELL_SIZE);
78
- let cacheName = JSON.stringify({ targetGridArea, collidableWithGroup });
79
- let vectorField = this.vectorFieldCache.get(cacheName);
80
- if (!vectorField) {
81
- let availabilityGrid = this.physicsAvailabilityGrid.getAvilabilityGrid(GRID_CELL_SIZE, collidableWithGroup);
82
- vectorField = new vector_field_path_finder_1.VectorFieldPathFinder(targetGridArea, availabilityGrid);
83
- this.vectorFieldCache.set(cacheName, vectorField);
84
- }
85
- let startingGridPosition = availability_grid_helper_1.AvailabilityGridHelper.positionToGridPosition(startingPosition, GRID_CELL_SIZE);
86
- return vectorField.getDirectionToTarget(startingGridPosition);
70
+ const result = utilities_1.PathFinder.findPath(availabilityGrid, startingGridPosition, targetGridPosition, {
71
+ includeDiagonals: options.includeDiagonals
72
+ });
73
+ result.path = result.path.map(gridPosition =>
74
+ availability_grid_helper_1.AvailabilityGridHelper.gridPositionToPosition(gridPosition, GRID_CELL_SIZE)
75
+ );
76
+ return result;
77
+ }
78
+ findPathDirection(startingPosition, target, collidableWithGroup) {
79
+ let targetArea;
80
+ if (helpers_lib_1.Comparator.isString(target)) {
81
+ const targetEntity = physics_entity_1.PhysicsEntity.getPhysicsInstanceOrFail(target);
82
+ targetArea = p2js_helper_1.P2JSHelper.aabbToBoundingBox(targetEntity['p2Body'].aabb);
83
+ } else {
84
+ targetArea = new helpers_lib_1.Rectangle(target, target);
87
85
  }
86
+ const targetGridArea = availability_grid_helper_1.AvailabilityGridHelper.areaToGridArea(targetArea, GRID_CELL_SIZE);
87
+ const cacheName = JSON.stringify({ targetGridArea, collidableWithGroup });
88
+ let vectorField = this.vectorFieldCache.get(cacheName);
89
+ if (!vectorField) {
90
+ const availabilityGrid = this.physicsAvailabilityGrid.getAvilabilityGrid(GRID_CELL_SIZE, collidableWithGroup);
91
+ vectorField = new vector_field_path_finder_1.VectorFieldPathFinder(targetGridArea, availabilityGrid);
92
+ this.vectorFieldCache.set(cacheName, vectorField);
93
+ }
94
+ const startingGridPosition = availability_grid_helper_1.AvailabilityGridHelper.positionToGridPosition(
95
+ startingPosition,
96
+ GRID_CELL_SIZE
97
+ );
98
+ return vectorField.getDirectionToTarget(startingGridPosition);
99
+ }
88
100
  }
89
101
  exports.PhysicsAvailableSpaces = PhysicsAvailableSpaces;
90
- //# sourceMappingURL=physics-available-spaces.js.map
102
+ //# sourceMappingURL=physics-available-spaces.js.map
@@ -2,17 +2,17 @@
2
2
  import { PhysicsEntity } from '../../entitity-types/physics-entity';
3
3
  import { CollisionReport } from '../../interfaces';
4
4
  export interface BodyWithCollisionReports {
5
- p2Body: p2.Body;
6
- entity: PhysicsEntity;
7
- collisionReports: CollisionReport[];
5
+ p2Body: p2.Body;
6
+ entity: PhysicsEntity;
7
+ collisionReports: CollisionReport[];
8
8
  }
9
9
  export declare class ContactEquationOrganiser {
10
- private bodiesInContactWith;
11
- private collisionReports;
12
- getAllBodiesWithTheirCollisionReports(): BodyWithCollisionReports[];
13
- registerContactEquation(contactEquation: p2.ContactEquation): void;
14
- reset(): void;
15
- private getCollisionDetails;
16
- private getCollisionDetail;
17
- private getNormals;
10
+ private bodiesInContactWith;
11
+ private collisionReports;
12
+ getAllBodiesWithTheirCollisionReports(): BodyWithCollisionReports[];
13
+ registerContactEquation(contactEquation: p2.ContactEquation): void;
14
+ reset(): void;
15
+ private getCollisionDetails;
16
+ private getCollisionDetail;
17
+ private getNormals;
18
18
  }
@@ -1,82 +1,90 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ Object.defineProperty(exports, '__esModule', { value: true });
3
2
  exports.ContactEquationOrganiser = void 0;
4
- const helpers_lib_1 = require("helpers-lib");
5
- const physics_entity_1 = require("../../entitity-types/physics-entity");
6
- const p2js_helper_1 = require("../../helpers/p2js.helper");
3
+ const helpers_lib_1 = require('helpers-lib');
4
+ const physics_entity_1 = require('../../entitity-types/physics-entity');
5
+ const p2js_helper_1 = require('../../helpers/p2js.helper');
7
6
  class ContactEquationOrganiser {
8
- constructor() {
9
- this.bodiesInContactWith = new Map();
10
- this.collisionReports = new Map();
7
+ constructor() {
8
+ this.bodiesInContactWith = new Map();
9
+ this.collisionReports = new Map();
10
+ }
11
+ getAllBodiesWithTheirCollisionReports() {
12
+ const result = [];
13
+ this.bodiesInContactWith.forEach((item, bodyId) => {
14
+ const collisionReports = this.collisionReports.get(bodyId) || [];
15
+ result.push({
16
+ p2Body: item.p2Body,
17
+ entity: item.entity,
18
+ collisionReports
19
+ });
20
+ });
21
+ return result;
22
+ }
23
+ registerContactEquation(contactEquation) {
24
+ const entityA = physics_entity_1.PhysicsEntity.getFromP2BodyId(contactEquation.bodyA.id);
25
+ const entityB = physics_entity_1.PhysicsEntity.getFromP2BodyId(contactEquation.bodyB.id);
26
+ if (entityA && entityB) {
27
+ this.bodiesInContactWith.set(contactEquation.bodyA.id, {
28
+ p2Body: contactEquation.bodyA,
29
+ entity: entityA
30
+ });
31
+ this.bodiesInContactWith.set(contactEquation.bodyB.id, {
32
+ p2Body: contactEquation.bodyB,
33
+ entity: entityB
34
+ });
35
+ const bodyACollisions = this.collisionReports.get(contactEquation.bodyA.id) || [];
36
+ const bodyBCollisions = this.collisionReports.get(contactEquation.bodyB.id) || [];
37
+ const { collisionDetailsA, collisionDetailsB } = this.getCollisionDetails(entityA, entityB, contactEquation);
38
+ bodyACollisions.push({
39
+ self: collisionDetailsA,
40
+ target: collisionDetailsB
41
+ });
42
+ bodyBCollisions.push({
43
+ self: collisionDetailsB,
44
+ target: collisionDetailsA
45
+ });
46
+ this.collisionReports.set(contactEquation.bodyA.id, bodyACollisions);
47
+ this.collisionReports.set(contactEquation.bodyB.id, bodyBCollisions);
48
+ } else {
49
+ console.warn('ContactEquationOrganiser: Entity not found for contact equation', contactEquation);
11
50
  }
12
- getAllBodiesWithTheirCollisionReports() {
13
- let result = [];
14
- this.bodiesInContactWith.forEach((item, bodyId) => {
15
- let collisionReports = this.collisionReports.get(bodyId) || [];
16
- result.push({ p2Body: item.p2Body, entity: item.entity, collisionReports });
17
- });
18
- return result;
19
- }
20
- registerContactEquation(contactEquation) {
21
- let entityA = physics_entity_1.PhysicsEntity.getFromP2BodyId(contactEquation.bodyA.id);
22
- let entityB = physics_entity_1.PhysicsEntity.getFromP2BodyId(contactEquation.bodyB.id);
23
- if (entityA && entityB) {
24
- this.bodiesInContactWith.set(contactEquation.bodyA.id, { p2Body: contactEquation.bodyA, entity: entityA });
25
- this.bodiesInContactWith.set(contactEquation.bodyB.id, { p2Body: contactEquation.bodyB, entity: entityB });
26
- let bodyACollisions = this.collisionReports.get(contactEquation.bodyA.id) || [];
27
- let bodyBCollisions = this.collisionReports.get(contactEquation.bodyB.id) || [];
28
- let { collisionDetailsA, collisionDetailsB } = this.getCollisionDetails(entityA, entityB, contactEquation);
29
- bodyACollisions.push({
30
- self: collisionDetailsA,
31
- target: collisionDetailsB
32
- });
33
- bodyBCollisions.push({
34
- self: collisionDetailsB,
35
- target: collisionDetailsA
36
- });
37
- this.collisionReports.set(contactEquation.bodyA.id, bodyACollisions);
38
- this.collisionReports.set(contactEquation.bodyB.id, bodyBCollisions);
39
- }
40
- else {
41
- console.warn('ContactEquationOrganiser: Entity not found for contact equation', contactEquation);
51
+ }
52
+ reset() {
53
+ this.bodiesInContactWith.clear();
54
+ this.collisionReports.clear();
55
+ }
56
+ getCollisionDetails(entityA, entityB, contactEquation) {
57
+ const dtoA = entityA.convertToDTO();
58
+ const dtoB = entityB.convertToDTO();
59
+ const contactPointA = p2js_helper_1.P2JSHelper.arrayToVector(contactEquation.contactPointA);
60
+ const contactPointB = p2js_helper_1.P2JSHelper.arrayToVector(contactEquation.contactPointB);
61
+ const { normalA, normalB } = this.getNormals(contactEquation);
62
+ return {
63
+ collisionDetailsA: this.getCollisionDetail(dtoA, contactEquation.bodyA.mass, contactPointA, normalA, entityA.area),
64
+ collisionDetailsB: this.getCollisionDetail(dtoB, contactEquation.bodyB.mass, contactPointB, normalB, entityB.area)
65
+ };
66
+ }
67
+ getCollisionDetail(physicsBodyDTOSelf, massSelf, contactPointSelf, normalSelf, areaSelf) {
68
+ let positionRelativeToObject;
69
+ return {
70
+ body: physicsBodyDTOSelf,
71
+ getPositionReletiveToObject: () => {
72
+ if (!positionRelativeToObject) {
73
+ positionRelativeToObject = contactPointSelf.rotate(helpers_lib_1.Radian.toVector(-physicsBodyDTOSelf.rotation));
42
74
  }
43
- }
44
- reset() {
45
- this.bodiesInContactWith.clear();
46
- this.collisionReports.clear();
47
- }
48
- getCollisionDetails(entityA, entityB, contactEquation) {
49
- let dtoA = entityA.convertToDTO();
50
- let dtoB = entityB.convertToDTO();
51
- let contactPointA = p2js_helper_1.P2JSHelper.arrayToVector(contactEquation.contactPointA);
52
- let contactPointB = p2js_helper_1.P2JSHelper.arrayToVector(contactEquation.contactPointB);
53
- let { normalA, normalB } = this.getNormals(contactEquation);
54
- return {
55
- collisionDetailsA: this.getCollisionDetail(dtoA, contactEquation.bodyA.mass, contactPointA, normalA, entityA.area),
56
- collisionDetailsB: this.getCollisionDetail(dtoB, contactEquation.bodyB.mass, contactPointB, normalB, entityB.area)
57
- };
58
- }
59
- getCollisionDetail(physicsBodyDTOSelf, massSelf, contactPointSelf, normalSelf, areaSelf) {
60
- let positionRelativeToObject;
61
- return {
62
- body: physicsBodyDTOSelf,
63
- getPositionReletiveToObject: () => {
64
- if (!positionRelativeToObject) {
65
- positionRelativeToObject = contactPointSelf.rotate(helpers_lib_1.Radian.toVector(-physicsBodyDTOSelf.rotation));
66
- }
67
- return positionRelativeToObject;
68
- },
69
- position: contactPointSelf,
70
- mass: massSelf,
71
- area: areaSelf,
72
- normal: normalSelf
73
- };
74
- }
75
- getNormals(contactEquation) {
76
- let contactEquationNormalA = p2js_helper_1.P2JSHelper.arrayToVector(contactEquation.normalA);
77
- let contactEquationNormalB = contactEquationNormalA.multiply(-1);
78
- return { normalA: contactEquationNormalA, normalB: contactEquationNormalB };
79
- }
75
+ return positionRelativeToObject;
76
+ },
77
+ position: contactPointSelf,
78
+ mass: massSelf,
79
+ area: areaSelf,
80
+ normal: normalSelf
81
+ };
82
+ }
83
+ getNormals(contactEquation) {
84
+ const contactEquationNormalA = p2js_helper_1.P2JSHelper.arrayToVector(contactEquation.normalA);
85
+ const contactEquationNormalB = contactEquationNormalA.multiply(-1);
86
+ return { normalA: contactEquationNormalA, normalB: contactEquationNormalB };
87
+ }
80
88
  }
81
89
  exports.ContactEquationOrganiser = ContactEquationOrganiser;
82
- //# sourceMappingURL=contact-equation-orginiser.js.map
90
+ //# sourceMappingURL=contact-equation-orginiser.js.map
@@ -2,11 +2,11 @@
2
2
  import { CollisionReport } from '../../interfaces';
3
3
  export type OnCollisionCallbackFunciton = (collision: CollisionReport) => void;
4
4
  export declare class PhysicsCollision {
5
- private p2World;
6
- private contactEquationOrganiser;
7
- constructor(p2World: p2.World);
8
- update(time: number, delta: number): void;
9
- isCollidingWithAnything(p2Body: p2.Body): boolean;
10
- private setResults;
11
- private handleSpeedLimit;
5
+ private p2World;
6
+ private contactEquationOrganiser;
7
+ constructor(p2World: p2.World);
8
+ update(time: number, delta: number): void;
9
+ isCollidingWithAnything(p2Body: p2.Body): boolean;
10
+ private setResults;
11
+ private handleSpeedLimit;
12
12
  }
@@ -1,51 +1,50 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ Object.defineProperty(exports, '__esModule', { value: true });
3
2
  exports.PhysicsCollision = void 0;
4
- const p2js_helper_1 = require("../../helpers/p2js.helper");
5
- const contact_equation_orginiser_1 = require("./contact-equation-orginiser");
6
- const physics_entity_1 = require("../../entitity-types/physics-entity");
3
+ const p2js_helper_1 = require('../../helpers/p2js.helper');
4
+ const contact_equation_orginiser_1 = require('./contact-equation-orginiser');
5
+ const physics_entity_1 = require('../../entitity-types/physics-entity');
7
6
  const SPEED_LIMIT = 0.8;
8
7
  const ROTATIONAL_SPEED_LIMIT = 0.01;
9
8
  class PhysicsCollision {
10
- constructor(p2World) {
11
- this.contactEquationOrganiser = new contact_equation_orginiser_1.ContactEquationOrganiser();
12
- this.p2World = p2World;
13
- this.p2World.on('beginContact', (event) => {
14
- event.contactEquations.forEach(contactEquation => {
15
- this.contactEquationOrganiser.registerContactEquation(contactEquation);
16
- });
17
- });
18
- }
19
- update(time, delta) {
20
- physics_entity_1.PhysicsEntity.getPhysicsEntities().forEach(entity => {
21
- entity['_collisions'] = [];
22
- });
23
- this.p2World.narrowphase.contactEquations.forEach(contactEquation => {
24
- this.contactEquationOrganiser.registerContactEquation(contactEquation);
25
- });
26
- this.setResults();
27
- this.contactEquationOrganiser.reset();
28
- }
29
- isCollidingWithAnything(p2Body) {
30
- p2Body.aabbNeedsUpdate = true;
31
- p2Body.updateAABB();
32
- let overlappingBodies = this.p2World.broadphase.aabbQuery(this.p2World, p2Body.aabb);
33
- return overlappingBodies.length > 0;
34
- }
35
- setResults() {
36
- this.contactEquationOrganiser.getAllBodiesWithTheirCollisionReports().forEach(bodiesAndContacts => {
37
- this.handleSpeedLimit(bodiesAndContacts.p2Body);
38
- bodiesAndContacts.entity['setCollisionReports'](bodiesAndContacts.collisionReports);
39
- });
40
- }
41
- handleSpeedLimit(body) {
42
- let velocity = p2js_helper_1.P2JSHelper.arrayToVector(body.velocity);
43
- if (velocity.length > SPEED_LIMIT) {
44
- velocity = velocity.normalize(SPEED_LIMIT);
45
- body.velocity = p2js_helper_1.P2JSHelper.vectorToArray(velocity);
46
- }
47
- body.angularVelocity = Math.min(Math.max(body.angularVelocity, -ROTATIONAL_SPEED_LIMIT), ROTATIONAL_SPEED_LIMIT);
9
+ constructor(p2World) {
10
+ this.contactEquationOrganiser = new contact_equation_orginiser_1.ContactEquationOrganiser();
11
+ this.p2World = p2World;
12
+ this.p2World.on('beginContact', event => {
13
+ event.contactEquations.forEach(contactEquation => {
14
+ this.contactEquationOrganiser.registerContactEquation(contactEquation);
15
+ });
16
+ });
17
+ }
18
+ update(time, delta) {
19
+ physics_entity_1.PhysicsEntity.getPhysicsEntities().forEach(entity => {
20
+ entity['_collisions'] = [];
21
+ });
22
+ this.p2World.narrowphase.contactEquations.forEach(contactEquation => {
23
+ this.contactEquationOrganiser.registerContactEquation(contactEquation);
24
+ });
25
+ this.setResults();
26
+ this.contactEquationOrganiser.reset();
27
+ }
28
+ isCollidingWithAnything(p2Body) {
29
+ p2Body.aabbNeedsUpdate = true;
30
+ p2Body.updateAABB();
31
+ const overlappingBodies = this.p2World.broadphase.aabbQuery(this.p2World, p2Body.aabb);
32
+ return overlappingBodies.length > 0;
33
+ }
34
+ setResults() {
35
+ this.contactEquationOrganiser.getAllBodiesWithTheirCollisionReports().forEach(bodiesAndContacts => {
36
+ this.handleSpeedLimit(bodiesAndContacts.p2Body);
37
+ bodiesAndContacts.entity['setCollisionReports'](bodiesAndContacts.collisionReports);
38
+ });
39
+ }
40
+ handleSpeedLimit(body) {
41
+ let velocity = p2js_helper_1.P2JSHelper.arrayToVector(body.velocity);
42
+ if (velocity.length > SPEED_LIMIT) {
43
+ velocity = velocity.normalize(SPEED_LIMIT);
44
+ body.velocity = p2js_helper_1.P2JSHelper.vectorToArray(velocity);
48
45
  }
46
+ body.angularVelocity = Math.min(Math.max(body.angularVelocity, -ROTATIONAL_SPEED_LIMIT), ROTATIONAL_SPEED_LIMIT);
47
+ }
49
48
  }
50
49
  exports.PhysicsCollision = PhysicsCollision;
51
- //# sourceMappingURL=physics-collision.js.map
50
+ //# sourceMappingURL=physics-collision.js.map
@@ -1,15 +1,15 @@
1
1
  export declare enum PhysicsBodyGroup {
2
- none = 0,
3
- border = 1,
4
- friend = 2,
5
- friendProjectile = 3,
6
- enemy = 4,
7
- enemyProjectile = 5,
8
- neutral = 6,
9
- explosion = 7
2
+ none = 0,
3
+ border = 1,
4
+ friend = 2,
5
+ friendProjectile = 3,
6
+ enemy = 4,
7
+ enemyProjectile = 5,
8
+ neutral = 6,
9
+ explosion = 7
10
10
  }
11
11
  export declare class PhysicsBodyGroups {
12
- static getGroupConstant(group: PhysicsBodyGroup): number;
13
- static getMaskConstant(group: PhysicsBodyGroup): number;
14
- static canCollide(group1: PhysicsBodyGroup, group2: PhysicsBodyGroup): boolean;
12
+ static getGroupConstant(group: PhysicsBodyGroup): number;
13
+ static getMaskConstant(group: PhysicsBodyGroup): number;
14
+ static canCollide(group1: PhysicsBodyGroup, group2: PhysicsBodyGroup): boolean;
15
15
  }