bard-legends-framework 0.9.6 → 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 (238) 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.spec.js +490 -506
  30. package/dist/game-entities/view/view.test.js +1 -1
  31. package/dist/lib/animator/animations.d.ts +13 -13
  32. package/dist/lib/animator/animations.js +43 -40
  33. package/dist/lib/animator/animator.d.ts +41 -41
  34. package/dist/lib/animator/animator.js +194 -197
  35. package/dist/lib/animator/animator.spec.js +699 -612
  36. package/dist/lib/animator/index.js +24 -19
  37. package/dist/lib/libraries/animator/animations.d.ts +13 -13
  38. package/dist/lib/libraries/animator/animations.js +43 -40
  39. package/dist/lib/libraries/animator/animator.d.ts +41 -41
  40. package/dist/lib/libraries/animator/animator.js +194 -197
  41. package/dist/lib/libraries/animator/animator.spec.js +699 -612
  42. package/dist/lib/libraries/animator/index.js +24 -19
  43. package/dist/lib/libraries/path-finder/path-finder.d.ts +2 -2
  44. package/dist/lib/libraries/path-finder/path-finder.js +19 -20
  45. package/dist/lib/path-finder/path-finder.d.ts +2 -2
  46. package/dist/lib/path-finder/path-finder.js +19 -20
  47. package/dist/lib/services/keyboard/keyboard.d.ts +4 -4
  48. package/dist/lib/services/keyboard/keyboard.js +39 -31
  49. package/dist/lib/services/mouse/mouse.service.d.ts +8 -8
  50. package/dist/lib/services/mouse/mouse.service.js +65 -53
  51. package/dist/lib/services/mouse/mouser-target-focus.service.d.ts +11 -11
  52. package/dist/lib/services/mouse/mouser-target-focus.service.js +83 -81
  53. package/dist/lib/update-loop.d.ts +10 -10
  54. package/dist/lib/update-loop.js +35 -27
  55. package/dist/physics/entitity-types/immovable-physics-entity.d.ts +6 -6
  56. package/dist/physics/entitity-types/immovable-physics-entity.js +23 -24
  57. package/dist/physics/entitity-types/movable-entity.d.ts +6 -6
  58. package/dist/physics/entitity-types/movable-entity.js +21 -22
  59. package/dist/physics/entitity-types/movable-physics-entity.d.ts +14 -14
  60. package/dist/physics/entitity-types/movable-physics-entity.js +83 -88
  61. package/dist/physics/entitity-types/physics-entity.d.ts +23 -23
  62. package/dist/physics/entitity-types/physics-entity.js +97 -88
  63. package/dist/physics/helpers/closest-available-space.helper.d.ts +16 -16
  64. package/dist/physics/helpers/closest-available-space.helper.js +98 -96
  65. package/dist/physics/helpers/closest-available-space.helper.spec.js +115 -68
  66. package/dist/physics/helpers/p2js.helper.d.ts +3 -3
  67. package/dist/physics/helpers/p2js.helper.js +21 -22
  68. package/dist/physics/helpers/shape-factory.d.ts +9 -4
  69. package/dist/physics/helpers/shape-factory.js +99 -75
  70. package/dist/physics/libs/p2js.helper.js +1 -1
  71. package/dist/physics/libs/position-to-grid-position-converter.d.ts +3 -3
  72. package/dist/physics/libs/position-to-grid-position-converter.js +15 -13
  73. package/dist/physics/module//360/237/223/220services/availability-grid.service.d.ts +10 -5
  74. package/dist/physics/module//360/237/223/220services/availability-grid.service.js +77 -57
  75. package/dist/physics/module//360/237/223/220services/border.service.d.ts +2 -2
  76. package/dist/physics/module//360/237/223/220services/border.service.js +57 -37
  77. package/dist/physics/module//360/237/223/220services/collision/physics-body-group.service.js +1 -1
  78. package/dist/physics/module//360/237/223/220services/collisions.service.d.ts +7 -7
  79. package/dist/physics/module//360/237/223/220services/collisions.service.js +110 -98
  80. package/dist/physics/module//360/237/223/220services/debug-visuals.service.d.ts +28 -6
  81. package/dist/physics/module//360/237/223/220services/debug-visuals.service.js +121 -89
  82. package/dist/physics/module//360/237/223/220services/eliptic-explosion.service.d.ts +15 -7
  83. package/dist/physics/module//360/237/223/220services/eliptic-explosion.service.js +117 -93
  84. package/dist/physics/module//360/237/223/220services/explosion.service.d.ts +14 -7
  85. package/dist/physics/module//360/237/223/220services/explosion.service.js +102 -77
  86. package/dist/physics/module//360/237/223/220services/explosions/eliptic-explosion.service.d.ts +15 -7
  87. package/dist/physics/module//360/237/223/220services/explosions/eliptic-explosion.service.js +117 -93
  88. package/dist/physics/module//360/237/223/220services/explosions/explosion.service.d.ts +14 -7
  89. package/dist/physics/module//360/237/223/220services/explosions/explosion.service.js +102 -77
  90. package/dist/physics/module//360/237/223/220services/explosions/helpers/ray-cast-hit-converter.d.ts +3 -3
  91. package/dist/physics/module//360/237/223/220services/explosions/helpers/ray-cast-hit-converter.js +71 -67
  92. package/dist/physics/module//360/237/223/220services/helpers/ray-cast-hit-converter.d.ts +3 -3
  93. package/dist/physics/module//360/237/223/220services/helpers/ray-cast-hit-converter.js +71 -67
  94. package/dist/physics/module//360/237/223/220services/impact/eliptic-explosion.service.js +1 -1
  95. package/dist/physics/module//360/237/223/220services/materials.service.d.ts +16 -11
  96. package/dist/physics/module//360/237/223/220services/materials.service.js +118 -108
  97. package/dist/physics/module//360/237/223/220services/path-finder.service.d.ts +19 -8
  98. package/dist/physics/module//360/237/223/220services/path-finder.service.js +121 -82
  99. package/dist/physics/module//360/237/223/220services/physics-world.service.d.ts +30 -15
  100. package/dist/physics/module//360/237/223/220services/physics-world.service.js +122 -100
  101. package/dist/physics/module//360/237/223/220services/ray-casting.service.d.ts +3 -3
  102. package/dist/physics/module//360/237/223/220services/ray-casting.service.js +87 -86
  103. package/dist/physics/module//360/237/223/220services/shape-creation.service.d.ts +9 -4
  104. package/dist/physics/module//360/237/223/220services/shape-creation.service.js +113 -84
  105. package/dist/physics/module//360/237/223/220services/test-visuals/test-visuals.service.js +2 -1
  106. package/dist/physics/module//360/237/247/212entities/data-structures/availability-grid-cache.d.ts +8 -8
  107. package/dist/physics/module//360/237/247/212entities/data-structures/availability-grid-cache.js +32 -33
  108. package/dist/physics/physics-world.d.ts +50 -34
  109. package/dist/physics/physics-world.js +142 -133
  110. package/dist/physics/sub-elements/available-spaces/helpers/availability-grid.helper.d.ts +3 -3
  111. package/dist/physics/sub-elements/available-spaces/helpers/availability-grid.helper.js +15 -13
  112. package/dist/physics/sub-elements/available-spaces/physics-availability-grid.d.ts +9 -9
  113. package/dist/physics/sub-elements/available-spaces/physics-availability-grid.js +82 -77
  114. package/dist/physics/sub-elements/available-spaces/physics-available-spaces.d.ts +18 -14
  115. package/dist/physics/sub-elements/available-spaces/physics-available-spaces.js +91 -79
  116. package/dist/physics/sub-elements/collisions/contact-equation-orginiser.d.ts +11 -11
  117. package/dist/physics/sub-elements/collisions/contact-equation-orginiser.js +84 -76
  118. package/dist/physics/sub-elements/collisions/physics-collision.d.ts +7 -7
  119. package/dist/physics/sub-elements/collisions/physics-collision.js +43 -44
  120. package/dist/physics/sub-elements/elements/physics-body-groups.d.ts +11 -11
  121. package/dist/physics/sub-elements/elements/physics-body-groups.js +54 -54
  122. package/dist/physics/sub-elements/elements/physics-materials.d.ts +15 -10
  123. package/dist/physics/sub-elements/elements/physics-materials.js +101 -100
  124. package/dist/physics/sub-elements/elements/physics-world-borders.d.ts +3 -3
  125. package/dist/physics/sub-elements/elements/physics-world-borders.js +69 -45
  126. package/dist/physics/sub-elements/physics-body-groups.d.ts +8 -8
  127. package/dist/physics/sub-elements/physics-body-groups.js +41 -42
  128. package/dist/physics/sub-elements/physics-collision.d.ts +16 -16
  129. package/dist/physics/sub-elements/physics-collision.js +141 -121
  130. package/dist/physics/sub-elements/physics-materials.d.ts +15 -10
  131. package/dist/physics/sub-elements/physics-materials.js +101 -100
  132. package/dist/physics/sub-elements/physics-world-borders.d.ts +2 -2
  133. package/dist/physics/sub-elements/physics-world-borders.js +25 -26
  134. package/dist/physics/sub-elements/raycasting/physics-body-explosion-hit.d.ts +15 -11
  135. package/dist/physics/sub-elements/raycasting/physics-body-explosion-hit.js +59 -59
  136. package/dist/physics/sub-elements/raycasting/physics-explosion.d.ts +13 -6
  137. package/dist/physics/sub-elements/raycasting/physics-explosion.js +108 -73
  138. package/dist/physics/sub-elements/raycasting/ray-cast.d.ts +19 -19
  139. package/dist/physics/sub-elements/raycasting/ray-cast.js +93 -98
  140. package/dist/pixi/display-object/components/filters.d.ts +18 -18
  141. package/dist/pixi/display-object/components/filters.js +106 -81
  142. package/dist/pixi/display-object/components/glow-effect.d.ts +8 -8
  143. package/dist/pixi/display-object/components/glow-effect.js +33 -36
  144. package/dist/pixi/display-object/components/glow-filter.d.ts +8 -8
  145. package/dist/pixi/display-object/components/glow-filter.js +33 -36
  146. package/dist/pixi/display-object/container-attributes.js +1 -1
  147. package/dist/pixi/display-object/display-object-attributes.d.ts +41 -41
  148. package/dist/pixi/display-object/display-object-attributes.js +148 -150
  149. package/dist/pixi/display-object/display-object.d.ts +17 -17
  150. package/dist/pixi/display-object/display-object.js +79 -75
  151. package/dist/pixi/display-object/filters/base-filters/alpha-primer-color.filter.d.ts +9 -4
  152. package/dist/pixi/display-object/filters/base-filters/alpha-primer-color.filter.js +89 -77
  153. package/dist/pixi/display-object/filters/base-filters/blur.filter.js +30 -30
  154. package/dist/pixi/display-object/filters/base-filters/contrast-filter.d.ts +9 -4
  155. package/dist/pixi/display-object/filters/base-filters/contrast-filter.js +62 -53
  156. package/dist/pixi/display-object/filters/base-filters/expand-with-alpha-color.d.ts +10 -5
  157. package/dist/pixi/display-object/filters/base-filters/expand-with-alpha-color.js +93 -81
  158. package/dist/pixi/display-object/filters/base-filters/expand-with-color-gradient.d.ts +12 -7
  159. package/dist/pixi/display-object/filters/base-filters/expand-with-color-gradient.js +120 -109
  160. package/dist/pixi/display-object/filters/base-filters/expand-with-color.d.ts +10 -5
  161. package/dist/pixi/display-object/filters/base-filters/expand-with-color.filter.js +32 -32
  162. package/dist/pixi/display-object/filters/base-filters/expand-with-color.js +92 -85
  163. package/dist/pixi/display-object/filters/templates/checking-neighbors.template.js +28 -28
  164. package/dist/pixi/display-object/filters/templates/plane.template.js +20 -20
  165. package/dist/pixi/display-object/filters.js +20 -4
  166. package/dist/pixi/display-object/objects/components/filters.d.ts +18 -18
  167. package/dist/pixi/display-object/objects/components/filters.js +106 -81
  168. package/dist/pixi/display-object/objects/container.d.ts +2 -2
  169. package/dist/pixi/display-object/objects/container.js +39 -30
  170. package/dist/pixi/display-object/objects/graphics.d.ts +28 -28
  171. package/dist/pixi/display-object/objects/graphics.js +218 -202
  172. package/dist/pixi/display-object/objects/helpers/filters.d.ts +25 -25
  173. package/dist/pixi/display-object/objects/helpers/filters.js +150 -124
  174. package/dist/pixi/display-object/objects/helpers/glow-sprite-generator.d.ts +7 -7
  175. package/dist/pixi/display-object/objects/helpers/glow-sprite-generator.js +114 -95
  176. package/dist/pixi/display-object/objects/premade-objects/sprite-with-glowing-shapes.d.ts +5 -5
  177. package/dist/pixi/display-object/objects/premade-objects/sprite-with-glowing-shapes.js +81 -57
  178. package/dist/pixi/display-object/objects/sprite.d.ts +43 -43
  179. package/dist/pixi/display-object/objects/sprite.js +248 -233
  180. package/dist/pixi/display-object/objects/text/helpers/process-steps/1-data-in-converter/rich-text-data-in-converter.js +1 -1
  181. package/dist/pixi/display-object/objects/text/helpers/process-steps/1-data-in-converter/rich-text-data-in-converter.test.js +9 -9
  182. package/dist/pixi/display-object/objects/text/helpers/rich-text-to-plane-text.d.ts +1 -1
  183. package/dist/pixi/display-object/objects/text.d.ts +25 -25
  184. package/dist/pixi/display-object/objects/text.js +111 -102
  185. package/dist/pixi/display-object/premade-objects/sprite-with-glowing-shapes.d.ts +13 -9
  186. package/dist/pixi/display-object/premade-objects/sprite-with-glowing-shapes.js +96 -67
  187. package/dist/pixi/game.d.ts +1 -1
  188. package/dist/pixi/game.js +2 -2
  189. package/dist/pixi/helpers/glow-sprite-generator.d.ts +6 -6
  190. package/dist/pixi/helpers/glow-sprite-generator.js +99 -84
  191. package/dist/pixi/helpers/pixi-container.helper.d.ts +1 -1
  192. package/dist/pixi/helpers/pixi-container.helper.js +10 -8
  193. package/dist/pixi/helpers/screen-position-to-stage.helper.d.ts +1 -1
  194. package/dist/pixi/helpers/screen-position-to-stage.helper.js +12 -12
  195. package/dist/pixi/helpers/screen-position-to-stage.helper.test.js +174 -79
  196. package/dist/pixi/modules/CAMERA/index.d.ts +1 -1
  197. package/dist/pixi/modules/CAMERA/index.js +3 -3
  198. package/dist/services/keyboard/keyboard.d.ts +4 -4
  199. package/dist/services/keyboard/keyboard.js +39 -31
  200. package/dist/services/mouse/mouse.service.d.ts +8 -8
  201. package/dist/services/mouse/mouse.service.js +65 -53
  202. package/dist/services/mouse/mouser-target-focus.service.d.ts +11 -11
  203. package/dist/services/mouse/mouser-target-focus.service.js +83 -81
  204. package/dist/utilities/libraries/animator/animating-content/state-animation.d.ts +29 -26
  205. package/dist/utilities/libraries/animator/animating-content/state-animation.js +159 -165
  206. package/dist/utilities/libraries/animator/animating-content/state-animation.test.js +386 -375
  207. package/dist/utilities/libraries/animator/animator.spec.js +765 -656
  208. package/dist/utilities/libraries/binary-heap/binary-heap.d.ts +11 -11
  209. package/dist/utilities/libraries/binary-heap/binary-heap.js +79 -81
  210. package/dist/utilities/libraries/data-structures/binary-heap/binary-heap.d.ts +11 -11
  211. package/dist/utilities/libraries/data-structures/binary-heap/binary-heap.js +79 -81
  212. package/dist/utilities/libraries/data-structures/grid/grid.d.ts +35 -31
  213. package/dist/utilities/libraries/data-structures/grid/grid.js +128 -117
  214. package/dist/utilities/libraries/data-structures/grid/grid.spec.js +176 -138
  215. package/dist/utilities/libraries/data-structures/grid/grid.test.js +218 -141
  216. package/dist/utilities/libraries/data-structures/grid/position-to-grid-position-converter.d.ts +3 -3
  217. package/dist/utilities/libraries/data-structures/grid/position-to-grid-position-converter.js +15 -13
  218. package/dist/utilities/libraries/data-structures/queue/queue.d.ts +21 -21
  219. package/dist/utilities/libraries/data-structures/queue/queue.js +63 -66
  220. package/dist/utilities/libraries/data-structures/queue/queue.test.js +54 -55
  221. package/dist/utilities/libraries/grid-algorithms/closest-available-space/closest-available-space.helper.spec.js +122 -68
  222. package/dist/utilities/libraries/grid-algorithms/path-finder/path-finder.spec.js +140 -135
  223. package/dist/utilities/libraries/grid-algorithms/vector-field-path-finder/vector-field-path-finder.spec.js +293 -229
  224. package/dist/utilities/libraries/path-finder/path-finder.d.ts +7 -7
  225. package/dist/utilities/libraries/path-finder/path-finder.js +113 -109
  226. package/dist/utilities/libraries/path-finder/path-finder.spec.js +131 -106
  227. package/dist/utilities/services/keyboard/keyboard.d.ts +4 -4
  228. package/dist/utilities/services/keyboard/keyboard.js +42 -34
  229. package/dist/utilities/services/mouse/helpers/mouse-position.helper.d.ts +1 -1
  230. package/dist/utilities/services/mouse/helpers/mouse-position.helper.js +12 -12
  231. package/dist/utilities/services/mouse/helpers/mouse-position.helper.test.js +168 -73
  232. package/dist/utilities/services/mouse/mouse-target-focus.service.d.ts +15 -15
  233. package/dist/utilities/services/mouse/mouse-target-focus.service.js +79 -76
  234. package/dist/utilities/services/mouse/mouse.service.d.ts +9 -9
  235. package/dist/utilities/services/mouse/mouse.service.js +86 -72
  236. package/dist/utilities/services/mouse/mouser-target-focus.service.d.ts +11 -11
  237. package/dist/utilities/services/mouse/mouser-target-focus.service.js +83 -81
  238. package/package.json +4 -10
@@ -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
  }