bard-legends-framework 0.9.5 → 0.9.7

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 (239) 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.spec.js +263 -293
  21. package/dist/game-entities/entity/helpers/view-creation.helper.d.ts +7 -7
  22. package/dist/game-entities/entity/helpers/view-creation.helper.js +48 -48
  23. package/dist/game-entities/scene/scene.spec.js +219 -223
  24. package/dist/game-entities/service/service.js +0 -4
  25. package/dist/game-entities/service/service.spec.js +265 -237
  26. package/dist/game-entities/service/service.test.js +4 -2
  27. package/dist/game-entities/update-loop.d.ts +18 -18
  28. package/dist/game-entities/update-loop.js +46 -28
  29. package/dist/game-entities/view/view.js +1 -1
  30. package/dist/game-entities/view/view.spec.js +490 -506
  31. package/dist/game-entities/view/view.test.js +1 -1
  32. package/dist/lib/animator/animations.d.ts +13 -13
  33. package/dist/lib/animator/animations.js +43 -40
  34. package/dist/lib/animator/animator.d.ts +41 -41
  35. package/dist/lib/animator/animator.js +194 -197
  36. package/dist/lib/animator/animator.spec.js +699 -612
  37. package/dist/lib/animator/index.js +24 -19
  38. package/dist/lib/libraries/animator/animations.d.ts +13 -13
  39. package/dist/lib/libraries/animator/animations.js +43 -40
  40. package/dist/lib/libraries/animator/animator.d.ts +41 -41
  41. package/dist/lib/libraries/animator/animator.js +194 -197
  42. package/dist/lib/libraries/animator/animator.spec.js +699 -612
  43. package/dist/lib/libraries/animator/index.js +24 -19
  44. package/dist/lib/libraries/path-finder/path-finder.d.ts +2 -2
  45. package/dist/lib/libraries/path-finder/path-finder.js +19 -20
  46. package/dist/lib/path-finder/path-finder.d.ts +2 -2
  47. package/dist/lib/path-finder/path-finder.js +19 -20
  48. package/dist/lib/services/keyboard/keyboard.d.ts +4 -4
  49. package/dist/lib/services/keyboard/keyboard.js +39 -31
  50. package/dist/lib/services/mouse/mouse.service.d.ts +8 -8
  51. package/dist/lib/services/mouse/mouse.service.js +65 -53
  52. package/dist/lib/services/mouse/mouser-target-focus.service.d.ts +11 -11
  53. package/dist/lib/services/mouse/mouser-target-focus.service.js +83 -81
  54. package/dist/lib/update-loop.d.ts +10 -10
  55. package/dist/lib/update-loop.js +35 -27
  56. package/dist/physics/entitity-types/immovable-physics-entity.d.ts +6 -6
  57. package/dist/physics/entitity-types/immovable-physics-entity.js +23 -24
  58. package/dist/physics/entitity-types/movable-entity.d.ts +6 -6
  59. package/dist/physics/entitity-types/movable-entity.js +21 -22
  60. package/dist/physics/entitity-types/movable-physics-entity.d.ts +14 -14
  61. package/dist/physics/entitity-types/movable-physics-entity.js +83 -88
  62. package/dist/physics/entitity-types/physics-entity.d.ts +23 -23
  63. package/dist/physics/entitity-types/physics-entity.js +97 -88
  64. package/dist/physics/helpers/closest-available-space.helper.d.ts +16 -16
  65. package/dist/physics/helpers/closest-available-space.helper.js +98 -96
  66. package/dist/physics/helpers/closest-available-space.helper.spec.js +115 -68
  67. package/dist/physics/helpers/p2js.helper.d.ts +3 -3
  68. package/dist/physics/helpers/p2js.helper.js +21 -22
  69. package/dist/physics/helpers/shape-factory.d.ts +9 -4
  70. package/dist/physics/helpers/shape-factory.js +99 -75
  71. package/dist/physics/libs/p2js.helper.js +1 -1
  72. package/dist/physics/libs/position-to-grid-position-converter.d.ts +3 -3
  73. package/dist/physics/libs/position-to-grid-position-converter.js +15 -13
  74. package/dist/physics/module//360/237/223/220services/availability-grid.service.d.ts +10 -5
  75. package/dist/physics/module//360/237/223/220services/availability-grid.service.js +77 -57
  76. package/dist/physics/module//360/237/223/220services/border.service.d.ts +2 -2
  77. package/dist/physics/module//360/237/223/220services/border.service.js +57 -37
  78. package/dist/physics/module//360/237/223/220services/collision/physics-body-group.service.js +1 -1
  79. package/dist/physics/module//360/237/223/220services/collisions.service.d.ts +7 -7
  80. package/dist/physics/module//360/237/223/220services/collisions.service.js +110 -98
  81. package/dist/physics/module//360/237/223/220services/debug-visuals.service.d.ts +28 -6
  82. package/dist/physics/module//360/237/223/220services/debug-visuals.service.js +121 -89
  83. package/dist/physics/module//360/237/223/220services/eliptic-explosion.service.d.ts +15 -7
  84. package/dist/physics/module//360/237/223/220services/eliptic-explosion.service.js +117 -93
  85. package/dist/physics/module//360/237/223/220services/explosion.service.d.ts +14 -7
  86. package/dist/physics/module//360/237/223/220services/explosion.service.js +102 -77
  87. package/dist/physics/module//360/237/223/220services/explosions/eliptic-explosion.service.d.ts +15 -7
  88. package/dist/physics/module//360/237/223/220services/explosions/eliptic-explosion.service.js +117 -93
  89. package/dist/physics/module//360/237/223/220services/explosions/explosion.service.d.ts +14 -7
  90. package/dist/physics/module//360/237/223/220services/explosions/explosion.service.js +102 -77
  91. package/dist/physics/module//360/237/223/220services/explosions/helpers/ray-cast-hit-converter.d.ts +3 -3
  92. package/dist/physics/module//360/237/223/220services/explosions/helpers/ray-cast-hit-converter.js +71 -67
  93. package/dist/physics/module//360/237/223/220services/helpers/ray-cast-hit-converter.d.ts +3 -3
  94. package/dist/physics/module//360/237/223/220services/helpers/ray-cast-hit-converter.js +71 -67
  95. package/dist/physics/module//360/237/223/220services/impact/eliptic-explosion.service.js +1 -1
  96. package/dist/physics/module//360/237/223/220services/materials.service.d.ts +16 -11
  97. package/dist/physics/module//360/237/223/220services/materials.service.js +118 -108
  98. package/dist/physics/module//360/237/223/220services/path-finder.service.d.ts +19 -8
  99. package/dist/physics/module//360/237/223/220services/path-finder.service.js +121 -82
  100. package/dist/physics/module//360/237/223/220services/physics-world.service.d.ts +30 -15
  101. package/dist/physics/module//360/237/223/220services/physics-world.service.js +122 -100
  102. package/dist/physics/module//360/237/223/220services/ray-casting.service.d.ts +3 -3
  103. package/dist/physics/module//360/237/223/220services/ray-casting.service.js +87 -86
  104. package/dist/physics/module//360/237/223/220services/shape-creation.service.d.ts +9 -4
  105. package/dist/physics/module//360/237/223/220services/shape-creation.service.js +113 -84
  106. package/dist/physics/module//360/237/223/220services/test-visuals/test-visuals.service.js +2 -1
  107. package/dist/physics/module//360/237/247/212entities/data-structures/availability-grid-cache.d.ts +8 -8
  108. package/dist/physics/module//360/237/247/212entities/data-structures/availability-grid-cache.js +32 -33
  109. package/dist/physics/physics-world.d.ts +50 -34
  110. package/dist/physics/physics-world.js +142 -133
  111. package/dist/physics/sub-elements/available-spaces/helpers/availability-grid.helper.d.ts +3 -3
  112. package/dist/physics/sub-elements/available-spaces/helpers/availability-grid.helper.js +15 -13
  113. package/dist/physics/sub-elements/available-spaces/physics-availability-grid.d.ts +9 -9
  114. package/dist/physics/sub-elements/available-spaces/physics-availability-grid.js +82 -77
  115. package/dist/physics/sub-elements/available-spaces/physics-available-spaces.d.ts +18 -14
  116. package/dist/physics/sub-elements/available-spaces/physics-available-spaces.js +91 -79
  117. package/dist/physics/sub-elements/collisions/contact-equation-orginiser.d.ts +11 -11
  118. package/dist/physics/sub-elements/collisions/contact-equation-orginiser.js +84 -76
  119. package/dist/physics/sub-elements/collisions/physics-collision.d.ts +7 -7
  120. package/dist/physics/sub-elements/collisions/physics-collision.js +43 -44
  121. package/dist/physics/sub-elements/elements/physics-body-groups.d.ts +11 -11
  122. package/dist/physics/sub-elements/elements/physics-body-groups.js +54 -54
  123. package/dist/physics/sub-elements/elements/physics-materials.d.ts +15 -10
  124. package/dist/physics/sub-elements/elements/physics-materials.js +101 -100
  125. package/dist/physics/sub-elements/elements/physics-world-borders.d.ts +3 -3
  126. package/dist/physics/sub-elements/elements/physics-world-borders.js +69 -45
  127. package/dist/physics/sub-elements/physics-body-groups.d.ts +8 -8
  128. package/dist/physics/sub-elements/physics-body-groups.js +41 -42
  129. package/dist/physics/sub-elements/physics-collision.d.ts +16 -16
  130. package/dist/physics/sub-elements/physics-collision.js +141 -121
  131. package/dist/physics/sub-elements/physics-materials.d.ts +15 -10
  132. package/dist/physics/sub-elements/physics-materials.js +101 -100
  133. package/dist/physics/sub-elements/physics-world-borders.d.ts +2 -2
  134. package/dist/physics/sub-elements/physics-world-borders.js +25 -26
  135. package/dist/physics/sub-elements/raycasting/physics-body-explosion-hit.d.ts +15 -11
  136. package/dist/physics/sub-elements/raycasting/physics-body-explosion-hit.js +59 -59
  137. package/dist/physics/sub-elements/raycasting/physics-explosion.d.ts +13 -6
  138. package/dist/physics/sub-elements/raycasting/physics-explosion.js +108 -73
  139. package/dist/physics/sub-elements/raycasting/ray-cast.d.ts +19 -19
  140. package/dist/physics/sub-elements/raycasting/ray-cast.js +93 -98
  141. package/dist/pixi/display-object/components/filters.d.ts +18 -18
  142. package/dist/pixi/display-object/components/filters.js +106 -81
  143. package/dist/pixi/display-object/components/glow-effect.d.ts +8 -8
  144. package/dist/pixi/display-object/components/glow-effect.js +33 -36
  145. package/dist/pixi/display-object/components/glow-filter.d.ts +8 -8
  146. package/dist/pixi/display-object/components/glow-filter.js +33 -36
  147. package/dist/pixi/display-object/container-attributes.js +1 -1
  148. package/dist/pixi/display-object/display-object-attributes.d.ts +41 -41
  149. package/dist/pixi/display-object/display-object-attributes.js +148 -150
  150. package/dist/pixi/display-object/display-object.d.ts +17 -17
  151. package/dist/pixi/display-object/display-object.js +79 -75
  152. package/dist/pixi/display-object/filters/base-filters/alpha-primer-color.filter.d.ts +9 -4
  153. package/dist/pixi/display-object/filters/base-filters/alpha-primer-color.filter.js +89 -77
  154. package/dist/pixi/display-object/filters/base-filters/blur.filter.js +30 -30
  155. package/dist/pixi/display-object/filters/base-filters/contrast-filter.d.ts +9 -4
  156. package/dist/pixi/display-object/filters/base-filters/contrast-filter.js +62 -53
  157. package/dist/pixi/display-object/filters/base-filters/expand-with-alpha-color.d.ts +10 -5
  158. package/dist/pixi/display-object/filters/base-filters/expand-with-alpha-color.js +93 -81
  159. package/dist/pixi/display-object/filters/base-filters/expand-with-color-gradient.d.ts +12 -7
  160. package/dist/pixi/display-object/filters/base-filters/expand-with-color-gradient.js +120 -109
  161. package/dist/pixi/display-object/filters/base-filters/expand-with-color.d.ts +10 -5
  162. package/dist/pixi/display-object/filters/base-filters/expand-with-color.filter.js +32 -32
  163. package/dist/pixi/display-object/filters/base-filters/expand-with-color.js +92 -85
  164. package/dist/pixi/display-object/filters/templates/checking-neighbors.template.js +28 -28
  165. package/dist/pixi/display-object/filters/templates/plane.template.js +20 -20
  166. package/dist/pixi/display-object/filters.js +20 -4
  167. package/dist/pixi/display-object/objects/components/filters.d.ts +18 -18
  168. package/dist/pixi/display-object/objects/components/filters.js +106 -81
  169. package/dist/pixi/display-object/objects/container.d.ts +2 -2
  170. package/dist/pixi/display-object/objects/container.js +39 -30
  171. package/dist/pixi/display-object/objects/graphics.d.ts +28 -28
  172. package/dist/pixi/display-object/objects/graphics.js +218 -202
  173. package/dist/pixi/display-object/objects/helpers/filters.d.ts +25 -25
  174. package/dist/pixi/display-object/objects/helpers/filters.js +150 -124
  175. package/dist/pixi/display-object/objects/helpers/glow-sprite-generator.d.ts +7 -7
  176. package/dist/pixi/display-object/objects/helpers/glow-sprite-generator.js +114 -95
  177. package/dist/pixi/display-object/objects/premade-objects/sprite-with-glowing-shapes.d.ts +5 -5
  178. package/dist/pixi/display-object/objects/premade-objects/sprite-with-glowing-shapes.js +81 -57
  179. package/dist/pixi/display-object/objects/sprite.d.ts +43 -43
  180. package/dist/pixi/display-object/objects/sprite.js +248 -233
  181. package/dist/pixi/display-object/objects/text/helpers/process-steps/1-data-in-converter/rich-text-data-in-converter.js +1 -1
  182. package/dist/pixi/display-object/objects/text/helpers/process-steps/1-data-in-converter/rich-text-data-in-converter.test.js +9 -9
  183. package/dist/pixi/display-object/objects/text/helpers/rich-text-to-plane-text.d.ts +1 -1
  184. package/dist/pixi/display-object/objects/text.d.ts +25 -25
  185. package/dist/pixi/display-object/objects/text.js +111 -102
  186. package/dist/pixi/display-object/premade-objects/sprite-with-glowing-shapes.d.ts +13 -9
  187. package/dist/pixi/display-object/premade-objects/sprite-with-glowing-shapes.js +96 -67
  188. package/dist/pixi/game.d.ts +1 -1
  189. package/dist/pixi/game.js +2 -2
  190. package/dist/pixi/helpers/glow-sprite-generator.d.ts +6 -6
  191. package/dist/pixi/helpers/glow-sprite-generator.js +99 -84
  192. package/dist/pixi/helpers/pixi-container.helper.d.ts +1 -1
  193. package/dist/pixi/helpers/pixi-container.helper.js +10 -8
  194. package/dist/pixi/helpers/screen-position-to-stage.helper.d.ts +1 -1
  195. package/dist/pixi/helpers/screen-position-to-stage.helper.js +12 -12
  196. package/dist/pixi/helpers/screen-position-to-stage.helper.test.js +174 -79
  197. package/dist/pixi/modules/CAMERA/index.d.ts +1 -1
  198. package/dist/pixi/modules/CAMERA/index.js +3 -3
  199. package/dist/services/keyboard/keyboard.d.ts +4 -4
  200. package/dist/services/keyboard/keyboard.js +39 -31
  201. package/dist/services/mouse/mouse.service.d.ts +8 -8
  202. package/dist/services/mouse/mouse.service.js +65 -53
  203. package/dist/services/mouse/mouser-target-focus.service.d.ts +11 -11
  204. package/dist/services/mouse/mouser-target-focus.service.js +83 -81
  205. package/dist/utilities/libraries/animator/animating-content/state-animation.d.ts +29 -26
  206. package/dist/utilities/libraries/animator/animating-content/state-animation.js +159 -165
  207. package/dist/utilities/libraries/animator/animating-content/state-animation.test.js +386 -375
  208. package/dist/utilities/libraries/animator/animator.spec.js +765 -656
  209. package/dist/utilities/libraries/binary-heap/binary-heap.d.ts +11 -11
  210. package/dist/utilities/libraries/binary-heap/binary-heap.js +79 -81
  211. package/dist/utilities/libraries/data-structures/binary-heap/binary-heap.d.ts +11 -11
  212. package/dist/utilities/libraries/data-structures/binary-heap/binary-heap.js +79 -81
  213. package/dist/utilities/libraries/data-structures/grid/grid.d.ts +35 -31
  214. package/dist/utilities/libraries/data-structures/grid/grid.js +128 -117
  215. package/dist/utilities/libraries/data-structures/grid/grid.spec.js +176 -138
  216. package/dist/utilities/libraries/data-structures/grid/grid.test.js +218 -141
  217. package/dist/utilities/libraries/data-structures/grid/position-to-grid-position-converter.d.ts +3 -3
  218. package/dist/utilities/libraries/data-structures/grid/position-to-grid-position-converter.js +15 -13
  219. package/dist/utilities/libraries/data-structures/queue/queue.d.ts +21 -21
  220. package/dist/utilities/libraries/data-structures/queue/queue.js +63 -66
  221. package/dist/utilities/libraries/data-structures/queue/queue.test.js +54 -55
  222. package/dist/utilities/libraries/grid-algorithms/closest-available-space/closest-available-space.helper.spec.js +122 -68
  223. package/dist/utilities/libraries/grid-algorithms/path-finder/path-finder.spec.js +140 -135
  224. package/dist/utilities/libraries/grid-algorithms/vector-field-path-finder/vector-field-path-finder.spec.js +293 -229
  225. package/dist/utilities/libraries/path-finder/path-finder.d.ts +7 -7
  226. package/dist/utilities/libraries/path-finder/path-finder.js +113 -109
  227. package/dist/utilities/libraries/path-finder/path-finder.spec.js +131 -106
  228. package/dist/utilities/services/keyboard/keyboard.d.ts +4 -4
  229. package/dist/utilities/services/keyboard/keyboard.js +42 -34
  230. package/dist/utilities/services/mouse/helpers/mouse-position.helper.d.ts +1 -1
  231. package/dist/utilities/services/mouse/helpers/mouse-position.helper.js +12 -12
  232. package/dist/utilities/services/mouse/helpers/mouse-position.helper.test.js +168 -73
  233. package/dist/utilities/services/mouse/mouse-target-focus.service.d.ts +15 -15
  234. package/dist/utilities/services/mouse/mouse-target-focus.service.js +79 -76
  235. package/dist/utilities/services/mouse/mouse.service.d.ts +9 -9
  236. package/dist/utilities/services/mouse/mouse.service.js +86 -72
  237. package/dist/utilities/services/mouse/mouser-target-focus.service.d.ts +11 -11
  238. package/dist/utilities/services/mouse/mouser-target-focus.service.js +83 -81
  239. package/package.json +6 -12
@@ -1,92 +1,93 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1
+ var __decorate =
2
+ (this && this.__decorate) ||
3
+ ((decorators, target, key, desc) => {
4
+ var c = arguments.length,
5
+ r = c < 3 ? target : desc === null ? (desc = Object.getOwnPropertyDescriptor(target, key)) : desc,
6
+ d;
7
+ if (typeof Reflect === 'object' && typeof Reflect.decorate === 'function')
8
+ r = Reflect.decorate(decorators, target, key, desc);
9
+ else
10
+ for (var i = decorators.length - 1; i >= 0; i--)
11
+ if ((d = decorators[i])) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
12
  return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __importDefault = (this && this.__importDefault) || function (mod) {
9
- return (mod && mod.__esModule) ? mod : { "default": mod };
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
13
+ });
14
+ var __importDefault = (this && this.__importDefault) || (mod => (mod && mod.__esModule ? mod : { default: mod }));
15
+ Object.defineProperty(exports, '__esModule', { value: true });
12
16
  exports.RayCastingService = void 0;
13
- const p2_1 = __importDefault(require("p2"));
14
- const game_entities_1 = require("../../../game-entities");
15
- const p2js_helper_1 = require("../../libs/p2js.helper");
16
- const physics_body_groups_1 = require("../../libs/physics-body-groups");
17
+ const p2_1 = __importDefault(require('p2'));
18
+ const game_entities_1 = require('../../../game-entities');
19
+ const p2js_helper_1 = require('../../libs/p2js.helper');
20
+ const physics_body_groups_1 = require('../../libs/physics-body-groups');
17
21
  let RayCastingService = class RayCastingService {
18
- castClosest(physicsWorld, line, physicsBodyGroup) {
19
- let p2RaycastResult = new p2_1.default.RaycastResult();
20
- let p2Ray = new p2_1.default.Ray({
21
- mode: p2_1.default.Ray.CLOSEST,
22
- from: p2js_helper_1.P2JSHelper.vectorToArray(line.from),
23
- to: p2js_helper_1.P2JSHelper.vectorToArray(line.to),
24
- collisionGroup: physics_body_groups_1.PhysicsBodyGroups.getGroupConstant(physicsBodyGroup),
25
- collisionMask: physics_body_groups_1.PhysicsBodyGroups.getMaskConstant(physicsBodyGroup)
26
- });
27
- physicsWorld['p2World'].raycast(p2RaycastResult, p2Ray);
28
- if (p2RaycastResult.hasHit()) {
29
- let rayCastResult = this.convertP2RaycastResultToRaycastResult(p2RaycastResult, line);
30
- return rayCastResult;
31
- }
32
- }
33
- castAllFirstContacts(physicsWorld, line, physicsBodyGroup) {
34
- let p2BodyToClosestRaycastResult = new Map();
35
- let p2Ray = new p2_1.default.Ray({
36
- mode: p2_1.default.Ray.ALL,
37
- from: p2js_helper_1.P2JSHelper.vectorToArray(line.from),
38
- to: p2js_helper_1.P2JSHelper.vectorToArray(line.to),
39
- collisionGroup: physics_body_groups_1.PhysicsBodyGroups.getGroupConstant(physicsBodyGroup),
40
- collisionMask: physics_body_groups_1.PhysicsBodyGroups.getMaskConstant(physicsBodyGroup),
41
- callback: callbackResult => {
42
- let previousItem = p2BodyToClosestRaycastResult.get(callbackResult.body);
43
- if (!p2BodyToClosestRaycastResult.has(callbackResult.body) || callbackResult.fraction < previousItem.fraction) {
44
- p2BodyToClosestRaycastResult.set(callbackResult.body, this.convertP2RaycastResultToRaycastResult(callbackResult, line));
45
- }
46
- else if (callbackResult.fraction === previousItem.fraction && previousItem.isExternal()) {
47
- // If the raycast starts from inside an object with multiple shapes, there is a chance that first hit is wrongfuly seen as external hit.
48
- // Therefore, we need to check if the previous hit was external and if the current hit is internal.
49
- p2BodyToClosestRaycastResult.set(callbackResult.body, this.convertP2RaycastResultToRaycastResult(callbackResult, line));
50
- }
51
- }
52
- });
53
- physicsWorld['p2World'].raycast(new p2_1.default.RaycastResult(), p2Ray);
54
- return Array.from(p2BodyToClosestRaycastResult.values());
55
- }
56
- convertP2RaycastResultToRaycastResult(p2RaycastResult, line) {
57
- let fraction = p2RaycastResult.fraction;
58
- let normal = p2js_helper_1.P2JSHelper.arrayToVector(p2RaycastResult.normal);
59
- let hitPosition;
60
- let hitDistance;
61
- let isExternal;
62
- return {
63
- body: p2RaycastResult.body,
64
- hitPosition: () => {
65
- if (hitPosition === undefined) {
66
- hitPosition = line.from.lerp(line.to, fraction);
67
- }
68
- return hitPosition;
69
- },
70
- hitDistance: () => {
71
- if (hitDistance === undefined) {
72
- hitDistance = line.length * fraction;
73
- }
74
- return hitDistance;
75
- },
76
- isExternal: () => {
77
- if (isExternal === undefined) {
78
- isExternal = line.fromTo.dotProduct(normal) < 0;
79
- }
80
- return isExternal;
81
- },
82
- normal,
83
- fraction,
84
- line
85
- };
22
+ castClosest(physicsWorld, line, physicsBodyGroup) {
23
+ const p2RaycastResult = new p2_1.default.RaycastResult();
24
+ const p2Ray = new p2_1.default.Ray({
25
+ mode: p2_1.default.Ray.CLOSEST,
26
+ from: p2js_helper_1.P2JSHelper.vectorToArray(line.from),
27
+ to: p2js_helper_1.P2JSHelper.vectorToArray(line.to),
28
+ collisionGroup: physics_body_groups_1.PhysicsBodyGroups.getGroupConstant(physicsBodyGroup),
29
+ collisionMask: physics_body_groups_1.PhysicsBodyGroups.getMaskConstant(physicsBodyGroup)
30
+ });
31
+ physicsWorld['p2World'].raycast(p2RaycastResult, p2Ray);
32
+ if (p2RaycastResult.hasHit()) {
33
+ const rayCastResult = this.convertP2RaycastResultToRaycastResult(p2RaycastResult, line);
34
+ return rayCastResult;
86
35
  }
36
+ }
37
+ castAllFirstContacts(physicsWorld, line, physicsBodyGroup) {
38
+ const p2BodyToClosestRaycastResult = new Map();
39
+ const p2Ray = new p2_1.default.Ray({
40
+ mode: p2_1.default.Ray.ALL,
41
+ from: p2js_helper_1.P2JSHelper.vectorToArray(line.from),
42
+ to: p2js_helper_1.P2JSHelper.vectorToArray(line.to),
43
+ collisionGroup: physics_body_groups_1.PhysicsBodyGroups.getGroupConstant(physicsBodyGroup),
44
+ collisionMask: physics_body_groups_1.PhysicsBodyGroups.getMaskConstant(physicsBodyGroup),
45
+ callback: callbackResult => {
46
+ const previousItem = p2BodyToClosestRaycastResult.get(callbackResult.body);
47
+ if (!p2BodyToClosestRaycastResult.has(callbackResult.body) || callbackResult.fraction < previousItem.fraction) {
48
+ p2BodyToClosestRaycastResult.set(callbackResult.body, this.convertP2RaycastResultToRaycastResult(callbackResult, line));
49
+ } else if (callbackResult.fraction === previousItem.fraction && previousItem.isExternal()) {
50
+ // If the raycast starts from inside an object with multiple shapes, there is a chance that first hit is wrongfuly seen as external hit.
51
+ // Therefore, we need to check if the previous hit was external and if the current hit is internal.
52
+ p2BodyToClosestRaycastResult.set(callbackResult.body, this.convertP2RaycastResultToRaycastResult(callbackResult, line));
53
+ }
54
+ }
55
+ });
56
+ physicsWorld['p2World'].raycast(new p2_1.default.RaycastResult(), p2Ray);
57
+ return Array.from(p2BodyToClosestRaycastResult.values());
58
+ }
59
+ convertP2RaycastResultToRaycastResult(p2RaycastResult, line) {
60
+ const fraction = p2RaycastResult.fraction;
61
+ const normal = p2js_helper_1.P2JSHelper.arrayToVector(p2RaycastResult.normal);
62
+ let hitPosition;
63
+ let hitDistance;
64
+ let isExternal;
65
+ return {
66
+ body: p2RaycastResult.body,
67
+ hitPosition: () => {
68
+ if (hitPosition === undefined) {
69
+ hitPosition = line.from.lerp(line.to, fraction);
70
+ }
71
+ return hitPosition;
72
+ },
73
+ hitDistance: () => {
74
+ if (hitDistance === undefined) {
75
+ hitDistance = line.length * fraction;
76
+ }
77
+ return hitDistance;
78
+ },
79
+ isExternal: () => {
80
+ if (isExternal === undefined) {
81
+ isExternal = line.fromTo.dotProduct(normal) < 0;
82
+ }
83
+ return isExternal;
84
+ },
85
+ normal,
86
+ fraction,
87
+ line
88
+ };
89
+ }
87
90
  };
88
91
  exports.RayCastingService = RayCastingService;
89
- exports.RayCastingService = RayCastingService = __decorate([
90
- (0, game_entities_1.ServiceDecorator)()
91
- ], RayCastingService);
92
- //# sourceMappingURL=ray-casting.service.js.map
92
+ exports.RayCastingService = RayCastingService = __decorate([(0, game_entities_1.ServiceDecorator)()], RayCastingService);
93
+ //# sourceMappingURL=ray-casting.service.js.map
@@ -2,8 +2,13 @@ import p2 from 'p2';
2
2
  import { PhysicsEntityDefinition } from '../../interfaces';
3
3
  import { MaterialDefinition } from '../⚜️gateways';
4
4
  export declare class ShapeCreationService {
5
- createBody(physicsEntityDefinition: PhysicsEntityDefinition, material: p2.Material, materialDefinition: MaterialDefinition, type: 'dynamic' | 'static'): p2.Body;
6
- private createCircleBody;
7
- private createPolygonBody;
8
- private createRectangleBody;
5
+ createBody(
6
+ physicsEntityDefinition: PhysicsEntityDefinition,
7
+ material: p2.Material,
8
+ materialDefinition: MaterialDefinition,
9
+ type: 'dynamic' | 'static'
10
+ ): p2.Body;
11
+ private createCircleBody;
12
+ private createPolygonBody;
13
+ private createRectangleBody;
9
14
  }
@@ -1,95 +1,124 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1
+ var __decorate =
2
+ (this && this.__decorate) ||
3
+ ((decorators, target, key, desc) => {
4
+ var c = arguments.length,
5
+ r = c < 3 ? target : desc === null ? (desc = Object.getOwnPropertyDescriptor(target, key)) : desc,
6
+ d;
7
+ if (typeof Reflect === 'object' && typeof Reflect.decorate === 'function')
8
+ r = Reflect.decorate(decorators, target, key, desc);
9
+ else
10
+ for (var i = decorators.length - 1; i >= 0; i--)
11
+ if ((d = decorators[i])) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
12
  return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __importDefault = (this && this.__importDefault) || function (mod) {
9
- return (mod && mod.__esModule) ? mod : { "default": mod };
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
13
+ });
14
+ var __importDefault = (this && this.__importDefault) || (mod => (mod && mod.__esModule ? mod : { default: mod }));
15
+ Object.defineProperty(exports, '__esModule', { value: true });
12
16
  exports.ShapeCreationService = void 0;
13
- const p2_1 = __importDefault(require("p2"));
14
- const interfaces_1 = require("../../interfaces");
15
- const physics_body_groups_1 = require("../../libs/physics-body-groups");
16
- const game_entities_1 = require("../../../game-entities");
17
+ const p2_1 = __importDefault(require('p2'));
18
+ const interfaces_1 = require('../../interfaces');
19
+ const physics_body_groups_1 = require('../../libs/physics-body-groups');
20
+ const game_entities_1 = require('../../../game-entities');
17
21
  let ShapeCreationService = class ShapeCreationService {
18
- createBody(physicsEntityDefinition, material, materialDefinition, type) {
19
- switch (physicsEntityDefinition.shapeDefinition.shapeType) {
20
- case interfaces_1.PhysicsShapeType.point:
21
- return this.createCircleBody(undefined, material, materialDefinition, physicsEntityDefinition.shapeDefinition.group, type);
22
- case interfaces_1.PhysicsShapeType.circle:
23
- return this.createCircleBody(physicsEntityDefinition.shapeDefinition.shapeData, material, materialDefinition, physicsEntityDefinition.shapeDefinition.group, type);
24
- case interfaces_1.PhysicsShapeType.polygon:
25
- return this.createPolygonBody(physicsEntityDefinition.shapeDefinition.shapeData, material, materialDefinition, physicsEntityDefinition.shapeDefinition.group, type);
26
- case interfaces_1.PhysicsShapeType.rectangle:
27
- return this.createRectangleBody(physicsEntityDefinition.shapeDefinition.shapeData, material, materialDefinition, physicsEntityDefinition.shapeDefinition.group, type);
28
- }
29
- }
30
- createCircleBody(shapeData, material, materialDefinition, group, type) {
31
- let shape = new p2_1.default.Circle({
32
- collisionGroup: physics_body_groups_1.PhysicsBodyGroups.getGroupConstant(group),
33
- collisionMask: physics_body_groups_1.PhysicsBodyGroups.getMaskConstant(group),
34
- radius: shapeData?.radius
35
- });
36
- shape.material = material;
37
- let p2Body = new p2_1.default.Body({
38
- type: type === 'dynamic' ? p2_1.default.Body.DYNAMIC : p2_1.default.Body.STATIC,
39
- mass: materialDefinition.density,
40
- damping: materialDefinition.velocityDrag,
41
- angularDamping: materialDefinition.rotationalDrag
42
- });
43
- p2Body.addShape(shape);
44
- return p2Body;
22
+ createBody(physicsEntityDefinition, material, materialDefinition, type) {
23
+ switch (physicsEntityDefinition.shapeDefinition.shapeType) {
24
+ case interfaces_1.PhysicsShapeType.point:
25
+ return this.createCircleBody(
26
+ undefined,
27
+ material,
28
+ materialDefinition,
29
+ physicsEntityDefinition.shapeDefinition.group,
30
+ type
31
+ );
32
+ case interfaces_1.PhysicsShapeType.circle:
33
+ return this.createCircleBody(
34
+ physicsEntityDefinition.shapeDefinition.shapeData,
35
+ material,
36
+ materialDefinition,
37
+ physicsEntityDefinition.shapeDefinition.group,
38
+ type
39
+ );
40
+ case interfaces_1.PhysicsShapeType.polygon:
41
+ return this.createPolygonBody(
42
+ physicsEntityDefinition.shapeDefinition.shapeData,
43
+ material,
44
+ materialDefinition,
45
+ physicsEntityDefinition.shapeDefinition.group,
46
+ type
47
+ );
48
+ case interfaces_1.PhysicsShapeType.rectangle:
49
+ return this.createRectangleBody(
50
+ physicsEntityDefinition.shapeDefinition.shapeData,
51
+ material,
52
+ materialDefinition,
53
+ physicsEntityDefinition.shapeDefinition.group,
54
+ type
55
+ );
45
56
  }
46
- createPolygonBody(polygonShapeData, material, materialDefinition, group, type) {
47
- let shapes = polygonShapeData.boundingShapeVertices
48
- .map(vertices => new p2_1.default.Convex({
57
+ }
58
+ createCircleBody(shapeData, material, materialDefinition, group, type) {
59
+ const shape = new p2_1.default.Circle({
60
+ collisionGroup: physics_body_groups_1.PhysicsBodyGroups.getGroupConstant(group),
61
+ collisionMask: physics_body_groups_1.PhysicsBodyGroups.getMaskConstant(group),
62
+ radius: shapeData?.radius
63
+ });
64
+ shape.material = material;
65
+ const p2Body = new p2_1.default.Body({
66
+ type: type === 'dynamic' ? p2_1.default.Body.DYNAMIC : p2_1.default.Body.STATIC,
67
+ mass: materialDefinition.density,
68
+ damping: materialDefinition.velocityDrag,
69
+ angularDamping: materialDefinition.rotationalDrag
70
+ });
71
+ p2Body.addShape(shape);
72
+ return p2Body;
73
+ }
74
+ createPolygonBody(polygonShapeData, material, materialDefinition, group, type) {
75
+ const shapes = polygonShapeData.boundingShapeVertices
76
+ .map(
77
+ vertices =>
78
+ new p2_1.default.Convex({
49
79
  vertices: vertices.map(vertex => [
50
- (vertex.x - polygonShapeData.size.x * polygonShapeData.anchor.x) * polygonShapeData.scale,
51
- (vertex.y - polygonShapeData.size.y * polygonShapeData.anchor.y) * polygonShapeData.scale
80
+ (vertex.x - polygonShapeData.size.x * polygonShapeData.anchor.x) * polygonShapeData.scale,
81
+ (vertex.y - polygonShapeData.size.y * polygonShapeData.anchor.y) * polygonShapeData.scale
52
82
  ]),
53
83
  collisionGroup: physics_body_groups_1.PhysicsBodyGroups.getGroupConstant(group),
54
84
  collisionMask: physics_body_groups_1.PhysicsBodyGroups.getMaskConstant(group)
55
- }))
56
- .map(shape => {
57
- shape.material = material;
58
- return shape;
59
- });
60
- let area = shapes.reduce((acc, shape) => acc + shape.area, 0);
61
- let p2Body = new p2_1.default.Body({
62
- type: type === 'dynamic' ? p2_1.default.Body.DYNAMIC : p2_1.default.Body.STATIC,
63
- mass: area,
64
- damping: materialDefinition.velocityDrag,
65
- angularDamping: materialDefinition.rotationalDrag
66
- });
67
- shapes.forEach(shape => p2Body.addShape(shape));
68
- p2Body.setDensity(materialDefinition.density);
69
- return p2Body;
70
- }
71
- createRectangleBody(rectangleShapeData, material, materialDefinition, group, type) {
72
- let shape = new p2_1.default.Box({
73
- width: rectangleShapeData.size.x,
74
- height: rectangleShapeData.size.y,
75
- collisionGroup: physics_body_groups_1.PhysicsBodyGroups.getGroupConstant(group),
76
- collisionMask: physics_body_groups_1.PhysicsBodyGroups.getMaskConstant(group)
77
- });
85
+ })
86
+ )
87
+ .map(shape => {
78
88
  shape.material = material;
79
- let area = rectangleShapeData.size.x * rectangleShapeData.size.y;
80
- let p2Body = new p2_1.default.Body({
81
- type: type === 'dynamic' ? p2_1.default.Body.DYNAMIC : p2_1.default.Body.STATIC,
82
- mass: area,
83
- damping: materialDefinition.velocityDrag,
84
- angularDamping: materialDefinition.rotationalDrag
85
- });
86
- p2Body.addShape(shape);
87
- p2Body.setDensity(materialDefinition.density);
88
- return p2Body;
89
- }
89
+ return shape;
90
+ });
91
+ const area = shapes.reduce((acc, shape) => acc + shape.area, 0);
92
+ const p2Body = new p2_1.default.Body({
93
+ type: type === 'dynamic' ? p2_1.default.Body.DYNAMIC : p2_1.default.Body.STATIC,
94
+ mass: area,
95
+ damping: materialDefinition.velocityDrag,
96
+ angularDamping: materialDefinition.rotationalDrag
97
+ });
98
+ shapes.forEach(shape => p2Body.addShape(shape));
99
+ p2Body.setDensity(materialDefinition.density);
100
+ return p2Body;
101
+ }
102
+ createRectangleBody(rectangleShapeData, material, materialDefinition, group, type) {
103
+ const shape = new p2_1.default.Box({
104
+ width: rectangleShapeData.size.x,
105
+ height: rectangleShapeData.size.y,
106
+ collisionGroup: physics_body_groups_1.PhysicsBodyGroups.getGroupConstant(group),
107
+ collisionMask: physics_body_groups_1.PhysicsBodyGroups.getMaskConstant(group)
108
+ });
109
+ shape.material = material;
110
+ const area = rectangleShapeData.size.x * rectangleShapeData.size.y;
111
+ const p2Body = new p2_1.default.Body({
112
+ type: type === 'dynamic' ? p2_1.default.Body.DYNAMIC : p2_1.default.Body.STATIC,
113
+ mass: area,
114
+ damping: materialDefinition.velocityDrag,
115
+ angularDamping: materialDefinition.rotationalDrag
116
+ });
117
+ p2Body.addShape(shape);
118
+ p2Body.setDensity(materialDefinition.density);
119
+ return p2Body;
120
+ }
90
121
  };
91
122
  exports.ShapeCreationService = ShapeCreationService;
92
- exports.ShapeCreationService = ShapeCreationService = __decorate([
93
- (0, game_entities_1.ServiceDecorator)()
94
- ], ShapeCreationService);
95
- //# sourceMappingURL=shape-creation.service.js.map
123
+ exports.ShapeCreationService = ShapeCreationService = __decorate([(0, game_entities_1.ServiceDecorator)()], ShapeCreationService);
124
+ //# sourceMappingURL=shape-creation.service.js.map
@@ -140,6 +140,7 @@ let TestVisualsService = class TestVisualsService {
140
140
  exports.TestVisualsService = TestVisualsService;
141
141
  exports.TestVisualsService = TestVisualsService = __decorate([
142
142
  (0, game_entities_1.ServiceDecorator)(),
143
- __metadata("design:paramtypes", [availability_grid_service_1.AvailabilityGridService, path_finder_service_1.PathFinderService])
143
+ __metadata("design:paramtypes", [availability_grid_service_1.AvailabilityGridService,
144
+ path_finder_service_1.PathFinderService])
144
145
  ], TestVisualsService);
145
146
  //# sourceMappingURL=test-visuals.service.js.map
@@ -1,12 +1,12 @@
1
1
  import { Grid } from '../../../../utilities';
2
2
  import { PhysicsBodyGroup } from '../../../libs/physics-body-groups';
3
3
  export declare class AvailabilityGridCache {
4
- private grids;
5
- get(cellSize: number, group: PhysicsBodyGroup): Grid<boolean> | undefined;
6
- getCollidableGrids(physicsBodyGroup: PhysicsBodyGroup): {
7
- grid: Grid<boolean>;
8
- cellSize: number;
9
- }[];
10
- set(cellSize: number, group: PhysicsBodyGroup, grid: Grid<boolean>): void;
11
- clear(): void;
4
+ private grids;
5
+ get(cellSize: number, group: PhysicsBodyGroup): Grid<boolean> | undefined;
6
+ getCollidableGrids(physicsBodyGroup: PhysicsBodyGroup): {
7
+ grid: Grid<boolean>;
8
+ cellSize: number;
9
+ }[];
10
+ set(cellSize: number, group: PhysicsBodyGroup, grid: Grid<boolean>): void;
11
+ clear(): void;
12
12
  }
@@ -1,40 +1,39 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ Object.defineProperty(exports, '__esModule', { value: true });
3
2
  exports.AvailabilityGridCache = void 0;
4
- const physics_body_groups_1 = require("../../../libs/physics-body-groups");
3
+ const physics_body_groups_1 = require('../../../libs/physics-body-groups');
5
4
  class AvailabilityGridCache {
6
- constructor() {
7
- this.grids = new Map();
5
+ constructor() {
6
+ this.grids = new Map();
7
+ }
8
+ get(cellSize, group) {
9
+ const cellSizeMap = this.grids.get(cellSize);
10
+ if (!cellSizeMap) {
11
+ return undefined;
8
12
  }
9
- get(cellSize, group) {
10
- let cellSizeMap = this.grids.get(cellSize);
11
- if (!cellSizeMap) {
12
- return undefined;
13
+ return cellSizeMap.get(group);
14
+ }
15
+ getCollidableGrids(physicsBodyGroup) {
16
+ const results = [];
17
+ this.grids.forEach((cellSizeMap, cellSize) => {
18
+ cellSizeMap.forEach((grid, gridPhysicsBodyGroup) => {
19
+ if (physics_body_groups_1.PhysicsBodyGroups.canCollide(gridPhysicsBodyGroup, physicsBodyGroup)) {
20
+ results.push({ grid, cellSize });
13
21
  }
14
- return cellSizeMap.get(group);
15
- }
16
- getCollidableGrids(physicsBodyGroup) {
17
- let results = [];
18
- this.grids.forEach((cellSizeMap, cellSize) => {
19
- cellSizeMap.forEach((grid, gridPhysicsBodyGroup) => {
20
- if (physics_body_groups_1.PhysicsBodyGroups.canCollide(gridPhysicsBodyGroup, physicsBodyGroup)) {
21
- results.push({ grid, cellSize });
22
- }
23
- });
24
- });
25
- return results;
26
- }
27
- set(cellSize, group, grid) {
28
- let cellSizeMap = this.grids.get(cellSize);
29
- if (!cellSizeMap) {
30
- cellSizeMap = new Map();
31
- this.grids.set(cellSize, cellSizeMap);
32
- }
33
- cellSizeMap.set(group, grid);
34
- }
35
- clear() {
36
- this.grids.clear();
22
+ });
23
+ });
24
+ return results;
25
+ }
26
+ set(cellSize, group, grid) {
27
+ let cellSizeMap = this.grids.get(cellSize);
28
+ if (!cellSizeMap) {
29
+ cellSizeMap = new Map();
30
+ this.grids.set(cellSize, cellSizeMap);
37
31
  }
32
+ cellSizeMap.set(group, grid);
33
+ }
34
+ clear() {
35
+ this.grids.clear();
36
+ }
38
37
  }
39
38
  exports.AvailabilityGridCache = AvailabilityGridCache;
40
- //# sourceMappingURL=availability-grid-cache.js.map
39
+ //# sourceMappingURL=availability-grid-cache.js.map
@@ -9,38 +9,54 @@ import { PhysicsBodyGroup } from './sub-elements/elements/physics-body-groups';
9
9
  import { Grid } from '../utilities/libraries/data-structures/grid/grid';
10
10
  import { PhysicsBodyExplosionHit } from './sub-elements/raycasting/physics-body-explosion-hit';
11
11
  export declare class PhysicsWorld extends Entity {
12
- readonly mapSize: Vector;
13
- readonly mapSizeCenter: Vector;
14
- readonly physicsMaterials: PhysicsMaterials;
15
- readonly onPhysicsStep: Action<{
16
- time: number;
17
- delta: number;
18
- }>;
19
- private p2World;
20
- private physicsCollision;
21
- private physicsAvailabilityGrid;
22
- private physicsAvailableSpaces;
23
- private lastP2Time;
24
- private modifyUpdateCycle;
25
- constructor(mapSize: Vector, borderProperties: {
26
- friction: number;
27
- bounciness: number;
28
- stiffness: number;
29
- }, materialDefinitions: ReadonlyArray<MaterialDefinition>, materialContactDefinitions: ReadonlyArray<MaterialContactDefinition>, modifyUpdateCycle?: boolean);
30
- private step;
31
- destroy(): void;
32
- addBody(body: p2.Body, addInEmptySpace: boolean, physicsBodyGroup: PhysicsBodyGroup, includeOnPathfinding: boolean): boolean;
33
- removeBody(body: p2.Body): void;
34
- isCollidingWithAnything(p2Body: p2.Body): boolean;
35
- getAvailabilityGrid(physicsBodyGroup: PhysicsBodyGroup): Grid<{
36
- position: Vector;
37
- availability: boolean;
38
- }>;
39
- findPath(startingPosition: Vector, target: Vector | string, options?: {
40
- includeDiagonals?: boolean;
41
- collidableWithGroup?: PhysicsBodyGroup;
42
- }): PathFinderResult;
43
- findPathDirection(startingPosition: Vector, target: Vector | string, collidableWithGroup: PhysicsBodyGroup): number | undefined;
44
- createExplosion(position: Vector, radius: number, physicsBodyGroup: PhysicsBodyGroup, severity: number, options?: PhysicsExplosionOptions): PhysicsBodyExplosionHit[];
45
- private createBorders;
12
+ readonly mapSize: Vector;
13
+ readonly mapSizeCenter: Vector;
14
+ readonly physicsMaterials: PhysicsMaterials;
15
+ readonly onPhysicsStep: Action<{
16
+ time: number;
17
+ delta: number;
18
+ }>;
19
+ private p2World;
20
+ private physicsCollision;
21
+ private physicsAvailabilityGrid;
22
+ private physicsAvailableSpaces;
23
+ private lastP2Time;
24
+ private modifyUpdateCycle;
25
+ constructor(
26
+ mapSize: Vector,
27
+ borderProperties: {
28
+ friction: number;
29
+ bounciness: number;
30
+ stiffness: number;
31
+ },
32
+ materialDefinitions: ReadonlyArray<MaterialDefinition>,
33
+ materialContactDefinitions: ReadonlyArray<MaterialContactDefinition>,
34
+ modifyUpdateCycle?: boolean
35
+ );
36
+ private step;
37
+ destroy(): void;
38
+ addBody(body: p2.Body, addInEmptySpace: boolean, physicsBodyGroup: PhysicsBodyGroup, includeOnPathfinding: boolean): boolean;
39
+ removeBody(body: p2.Body): void;
40
+ isCollidingWithAnything(p2Body: p2.Body): boolean;
41
+ getAvailabilityGrid(physicsBodyGroup: PhysicsBodyGroup): Grid<{
42
+ position: Vector;
43
+ availability: boolean;
44
+ }>;
45
+ findPath(
46
+ startingPosition: Vector,
47
+ target: Vector | string,
48
+ options?: {
49
+ includeDiagonals?: boolean;
50
+ collidableWithGroup?: PhysicsBodyGroup;
51
+ }
52
+ ): PathFinderResult;
53
+ findPathDirection(startingPosition: Vector, target: Vector | string, collidableWithGroup: PhysicsBodyGroup): number | undefined;
54
+ createExplosion(
55
+ position: Vector,
56
+ radius: number,
57
+ physicsBodyGroup: PhysicsBodyGroup,
58
+ severity: number,
59
+ options?: PhysicsExplosionOptions
60
+ ): PhysicsBodyExplosionHit[];
61
+ private createBorders;
46
62
  }