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,90 +1,102 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ Object.defineProperty(exports, '__esModule', { value: true });
3
2
  exports.PhysicsAvailableSpaces = void 0;
4
- const helpers_lib_1 = require("helpers-lib");
5
- const closest_available_space_helper_1 = require("../../../utilities/libraries/grid-algorithms/closest-available-space/closest-available-space.helper");
6
- const p2js_helper_1 = require("../../helpers/p2js.helper");
7
- const utilities_1 = require("../../../utilities");
8
- const physics_body_groups_1 = require("../elements/physics-body-groups");
9
- const physics_entity_1 = require("../../entitity-types/physics-entity");
10
- const vector_field_path_finder_1 = require("../../../utilities/libraries/grid-algorithms/vector-field-path-finder/vector-field-path-finder");
11
- const availability_grid_helper_1 = require("./helpers/availability-grid.helper");
3
+ const helpers_lib_1 = require('helpers-lib');
4
+ const closest_available_space_helper_1 = require('../../../utilities/libraries/grid-algorithms/closest-available-space/closest-available-space.helper');
5
+ const p2js_helper_1 = require('../../helpers/p2js.helper');
6
+ const utilities_1 = require('../../../utilities');
7
+ const physics_body_groups_1 = require('../elements/physics-body-groups');
8
+ const physics_entity_1 = require('../../entitity-types/physics-entity');
9
+ const vector_field_path_finder_1 = require('../../../utilities/libraries/grid-algorithms/vector-field-path-finder/vector-field-path-finder');
10
+ const availability_grid_helper_1 = require('./helpers/availability-grid.helper');
12
11
  const GRID_CELL_SIZE = 50;
13
12
  class PhysicsAvailableSpaces {
14
- constructor(physicsAvailabilityGrid) {
15
- this.physicsAvailabilityGrid = physicsAvailabilityGrid;
16
- this.vectorFieldCache = new Map();
13
+ constructor(physicsAvailabilityGrid) {
14
+ this.physicsAvailabilityGrid = physicsAvailabilityGrid;
15
+ this.vectorFieldCache = new Map();
16
+ }
17
+ clear() {
18
+ this.vectorFieldCache.clear();
19
+ }
20
+ getAvailabilityGrid(physicsBodyGroup) {
21
+ const availabilityGrid = this.physicsAvailabilityGrid.getAvilabilityGrid(GRID_CELL_SIZE, physicsBodyGroup);
22
+ return availabilityGrid.map((value, position) => ({
23
+ position: availability_grid_helper_1.AvailabilityGridHelper.gridPositionToPosition(position, GRID_CELL_SIZE),
24
+ availability: value
25
+ }));
26
+ }
27
+ findClosestAvailableSpace(body, physicsBodyGroup) {
28
+ body.aabbNeedsUpdate = true;
29
+ body.updateAABB();
30
+ const changeVector = closest_available_space_helper_1.ClosestAvailableSpaceHelper.findByConvertingGridSpace(
31
+ this.physicsAvailabilityGrid.getAvilabilityGrid(GRID_CELL_SIZE, physicsBodyGroup),
32
+ p2js_helper_1.P2JSHelper.aabbToBoundingBox(body.aabb),
33
+ GRID_CELL_SIZE
34
+ );
35
+ return changeVector;
36
+ }
37
+ findPathAStar(startingPosition, target, options) {
38
+ if (!options) {
39
+ options = {};
17
40
  }
18
- clear() {
19
- this.vectorFieldCache.clear();
41
+ if (options.includeDiagonals === undefined) {
42
+ options.includeDiagonals = false;
20
43
  }
21
- getAvailabilityGrid(physicsBodyGroup) {
22
- let availabilityGrid = this.physicsAvailabilityGrid.getAvilabilityGrid(GRID_CELL_SIZE, physicsBodyGroup);
23
- return availabilityGrid.map((value, position) => ({
24
- position: availability_grid_helper_1.AvailabilityGridHelper.gridPositionToPosition(position, GRID_CELL_SIZE),
25
- availability: value
26
- }));
44
+ if (options.collidableWithGroup === undefined) {
45
+ options.collidableWithGroup = physics_body_groups_1.PhysicsBodyGroup.none;
27
46
  }
28
- findClosestAvailableSpace(body, physicsBodyGroup) {
29
- body.aabbNeedsUpdate = true;
30
- body.updateAABB();
31
- let changeVector = closest_available_space_helper_1.ClosestAvailableSpaceHelper.findByConvertingGridSpace(this.physicsAvailabilityGrid.getAvilabilityGrid(GRID_CELL_SIZE, physicsBodyGroup), p2js_helper_1.P2JSHelper.aabbToBoundingBox(body.aabb), GRID_CELL_SIZE);
32
- return changeVector;
47
+ let targetPosition;
48
+ let targetP2Body;
49
+ if (helpers_lib_1.Comparator.isString(target)) {
50
+ const targetEntity = physics_entity_1.PhysicsEntity.getPhysicsInstanceOrFail(target);
51
+ targetP2Body = targetEntity['p2Body'];
52
+ targetPosition = p2js_helper_1.P2JSHelper.arrayToVector(targetP2Body.position);
53
+ } else {
54
+ targetPosition = target;
33
55
  }
34
- findPathAStar(startingPosition, target, options) {
35
- if (!options) {
36
- options = {};
37
- }
38
- if (options.includeDiagonals === undefined) {
39
- options.includeDiagonals = false;
40
- }
41
- if (options.collidableWithGroup === undefined) {
42
- options.collidableWithGroup = physics_body_groups_1.PhysicsBodyGroup.none;
43
- }
44
- let targetPosition;
45
- let targetP2Body;
46
- if (helpers_lib_1.Comparator.isString(target)) {
47
- let targetEntity = physics_entity_1.PhysicsEntity.getPhysicsInstanceOrFail(target);
48
- targetP2Body = targetEntity['p2Body'];
49
- targetPosition = p2js_helper_1.P2JSHelper.arrayToVector(targetP2Body.position);
50
- }
51
- else {
52
- targetPosition = target;
53
- }
54
- let startingGridPosition = availability_grid_helper_1.AvailabilityGridHelper.positionToGridPosition(startingPosition, GRID_CELL_SIZE);
55
- let targetGridPosition = availability_grid_helper_1.AvailabilityGridHelper.positionToGridPosition(targetPosition, GRID_CELL_SIZE);
56
- let availabilityGrid = this.physicsAvailabilityGrid.getAvilabilityGrid(GRID_CELL_SIZE, options.collidableWithGroup);
57
- if (targetP2Body) {
58
- let boundingBox = p2js_helper_1.P2JSHelper.aabbToBoundingBox(targetP2Body.aabb);
59
- let gridSpaceBoundingBox = availability_grid_helper_1.AvailabilityGridHelper.areaToGridArea(boundingBox, GRID_CELL_SIZE);
60
- availabilityGrid.safeSetArea(gridSpaceBoundingBox, true);
61
- }
62
- let result = utilities_1.PathFinder.findPath(availabilityGrid, startingGridPosition, targetGridPosition, {
63
- includeDiagonals: options.includeDiagonals
64
- });
65
- result.path = result.path.map(gridPosition => availability_grid_helper_1.AvailabilityGridHelper.gridPositionToPosition(gridPosition, GRID_CELL_SIZE));
66
- return result;
56
+ const startingGridPosition = availability_grid_helper_1.AvailabilityGridHelper.positionToGridPosition(
57
+ startingPosition,
58
+ GRID_CELL_SIZE
59
+ );
60
+ const targetGridPosition = availability_grid_helper_1.AvailabilityGridHelper.positionToGridPosition(
61
+ targetPosition,
62
+ GRID_CELL_SIZE
63
+ );
64
+ const availabilityGrid = this.physicsAvailabilityGrid.getAvilabilityGrid(GRID_CELL_SIZE, options.collidableWithGroup);
65
+ if (targetP2Body) {
66
+ const boundingBox = p2js_helper_1.P2JSHelper.aabbToBoundingBox(targetP2Body.aabb);
67
+ const gridSpaceBoundingBox = availability_grid_helper_1.AvailabilityGridHelper.areaToGridArea(boundingBox, GRID_CELL_SIZE);
68
+ availabilityGrid.safeSetArea(gridSpaceBoundingBox, true);
67
69
  }
68
- findPathDirection(startingPosition, target, collidableWithGroup) {
69
- let targetArea;
70
- if (helpers_lib_1.Comparator.isString(target)) {
71
- let targetEntity = physics_entity_1.PhysicsEntity.getPhysicsInstanceOrFail(target);
72
- targetArea = p2js_helper_1.P2JSHelper.aabbToBoundingBox(targetEntity['p2Body'].aabb);
73
- }
74
- else {
75
- targetArea = new helpers_lib_1.Rectangle(target, target);
76
- }
77
- let targetGridArea = availability_grid_helper_1.AvailabilityGridHelper.areaToGridArea(targetArea, GRID_CELL_SIZE);
78
- let cacheName = JSON.stringify({ targetGridArea, collidableWithGroup });
79
- let vectorField = this.vectorFieldCache.get(cacheName);
80
- if (!vectorField) {
81
- let availabilityGrid = this.physicsAvailabilityGrid.getAvilabilityGrid(GRID_CELL_SIZE, collidableWithGroup);
82
- vectorField = new vector_field_path_finder_1.VectorFieldPathFinder(targetGridArea, availabilityGrid);
83
- this.vectorFieldCache.set(cacheName, vectorField);
84
- }
85
- let startingGridPosition = availability_grid_helper_1.AvailabilityGridHelper.positionToGridPosition(startingPosition, GRID_CELL_SIZE);
86
- return vectorField.getDirectionToTarget(startingGridPosition);
70
+ const result = utilities_1.PathFinder.findPath(availabilityGrid, startingGridPosition, targetGridPosition, {
71
+ includeDiagonals: options.includeDiagonals
72
+ });
73
+ result.path = result.path.map(gridPosition =>
74
+ availability_grid_helper_1.AvailabilityGridHelper.gridPositionToPosition(gridPosition, GRID_CELL_SIZE)
75
+ );
76
+ return result;
77
+ }
78
+ findPathDirection(startingPosition, target, collidableWithGroup) {
79
+ let targetArea;
80
+ if (helpers_lib_1.Comparator.isString(target)) {
81
+ const targetEntity = physics_entity_1.PhysicsEntity.getPhysicsInstanceOrFail(target);
82
+ targetArea = p2js_helper_1.P2JSHelper.aabbToBoundingBox(targetEntity['p2Body'].aabb);
83
+ } else {
84
+ targetArea = new helpers_lib_1.Rectangle(target, target);
87
85
  }
86
+ const targetGridArea = availability_grid_helper_1.AvailabilityGridHelper.areaToGridArea(targetArea, GRID_CELL_SIZE);
87
+ const cacheName = JSON.stringify({ targetGridArea, collidableWithGroup });
88
+ let vectorField = this.vectorFieldCache.get(cacheName);
89
+ if (!vectorField) {
90
+ const availabilityGrid = this.physicsAvailabilityGrid.getAvilabilityGrid(GRID_CELL_SIZE, collidableWithGroup);
91
+ vectorField = new vector_field_path_finder_1.VectorFieldPathFinder(targetGridArea, availabilityGrid);
92
+ this.vectorFieldCache.set(cacheName, vectorField);
93
+ }
94
+ const startingGridPosition = availability_grid_helper_1.AvailabilityGridHelper.positionToGridPosition(
95
+ startingPosition,
96
+ GRID_CELL_SIZE
97
+ );
98
+ return vectorField.getDirectionToTarget(startingGridPosition);
99
+ }
88
100
  }
89
101
  exports.PhysicsAvailableSpaces = PhysicsAvailableSpaces;
90
- //# sourceMappingURL=physics-available-spaces.js.map
102
+ //# sourceMappingURL=physics-available-spaces.js.map
@@ -2,17 +2,17 @@
2
2
  import { PhysicsEntity } from '../../entitity-types/physics-entity';
3
3
  import { CollisionReport } from '../../interfaces';
4
4
  export interface BodyWithCollisionReports {
5
- p2Body: p2.Body;
6
- entity: PhysicsEntity;
7
- collisionReports: CollisionReport[];
5
+ p2Body: p2.Body;
6
+ entity: PhysicsEntity;
7
+ collisionReports: CollisionReport[];
8
8
  }
9
9
  export declare class ContactEquationOrganiser {
10
- private bodiesInContactWith;
11
- private collisionReports;
12
- getAllBodiesWithTheirCollisionReports(): BodyWithCollisionReports[];
13
- registerContactEquation(contactEquation: p2.ContactEquation): void;
14
- reset(): void;
15
- private getCollisionDetails;
16
- private getCollisionDetail;
17
- private getNormals;
10
+ private bodiesInContactWith;
11
+ private collisionReports;
12
+ getAllBodiesWithTheirCollisionReports(): BodyWithCollisionReports[];
13
+ registerContactEquation(contactEquation: p2.ContactEquation): void;
14
+ reset(): void;
15
+ private getCollisionDetails;
16
+ private getCollisionDetail;
17
+ private getNormals;
18
18
  }
@@ -1,82 +1,90 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ Object.defineProperty(exports, '__esModule', { value: true });
3
2
  exports.ContactEquationOrganiser = void 0;
4
- const helpers_lib_1 = require("helpers-lib");
5
- const physics_entity_1 = require("../../entitity-types/physics-entity");
6
- const p2js_helper_1 = require("../../helpers/p2js.helper");
3
+ const helpers_lib_1 = require('helpers-lib');
4
+ const physics_entity_1 = require('../../entitity-types/physics-entity');
5
+ const p2js_helper_1 = require('../../helpers/p2js.helper');
7
6
  class ContactEquationOrganiser {
8
- constructor() {
9
- this.bodiesInContactWith = new Map();
10
- this.collisionReports = new Map();
7
+ constructor() {
8
+ this.bodiesInContactWith = new Map();
9
+ this.collisionReports = new Map();
10
+ }
11
+ getAllBodiesWithTheirCollisionReports() {
12
+ const result = [];
13
+ this.bodiesInContactWith.forEach((item, bodyId) => {
14
+ const collisionReports = this.collisionReports.get(bodyId) || [];
15
+ result.push({
16
+ p2Body: item.p2Body,
17
+ entity: item.entity,
18
+ collisionReports
19
+ });
20
+ });
21
+ return result;
22
+ }
23
+ registerContactEquation(contactEquation) {
24
+ const entityA = physics_entity_1.PhysicsEntity.getFromP2BodyId(contactEquation.bodyA.id);
25
+ const entityB = physics_entity_1.PhysicsEntity.getFromP2BodyId(contactEquation.bodyB.id);
26
+ if (entityA && entityB) {
27
+ this.bodiesInContactWith.set(contactEquation.bodyA.id, {
28
+ p2Body: contactEquation.bodyA,
29
+ entity: entityA
30
+ });
31
+ this.bodiesInContactWith.set(contactEquation.bodyB.id, {
32
+ p2Body: contactEquation.bodyB,
33
+ entity: entityB
34
+ });
35
+ const bodyACollisions = this.collisionReports.get(contactEquation.bodyA.id) || [];
36
+ const bodyBCollisions = this.collisionReports.get(contactEquation.bodyB.id) || [];
37
+ const { collisionDetailsA, collisionDetailsB } = this.getCollisionDetails(entityA, entityB, contactEquation);
38
+ bodyACollisions.push({
39
+ self: collisionDetailsA,
40
+ target: collisionDetailsB
41
+ });
42
+ bodyBCollisions.push({
43
+ self: collisionDetailsB,
44
+ target: collisionDetailsA
45
+ });
46
+ this.collisionReports.set(contactEquation.bodyA.id, bodyACollisions);
47
+ this.collisionReports.set(contactEquation.bodyB.id, bodyBCollisions);
48
+ } else {
49
+ console.warn('ContactEquationOrganiser: Entity not found for contact equation', contactEquation);
11
50
  }
12
- getAllBodiesWithTheirCollisionReports() {
13
- let result = [];
14
- this.bodiesInContactWith.forEach((item, bodyId) => {
15
- let collisionReports = this.collisionReports.get(bodyId) || [];
16
- result.push({ p2Body: item.p2Body, entity: item.entity, collisionReports });
17
- });
18
- return result;
19
- }
20
- registerContactEquation(contactEquation) {
21
- let entityA = physics_entity_1.PhysicsEntity.getFromP2BodyId(contactEquation.bodyA.id);
22
- let entityB = physics_entity_1.PhysicsEntity.getFromP2BodyId(contactEquation.bodyB.id);
23
- if (entityA && entityB) {
24
- this.bodiesInContactWith.set(contactEquation.bodyA.id, { p2Body: contactEquation.bodyA, entity: entityA });
25
- this.bodiesInContactWith.set(contactEquation.bodyB.id, { p2Body: contactEquation.bodyB, entity: entityB });
26
- let bodyACollisions = this.collisionReports.get(contactEquation.bodyA.id) || [];
27
- let bodyBCollisions = this.collisionReports.get(contactEquation.bodyB.id) || [];
28
- let { collisionDetailsA, collisionDetailsB } = this.getCollisionDetails(entityA, entityB, contactEquation);
29
- bodyACollisions.push({
30
- self: collisionDetailsA,
31
- target: collisionDetailsB
32
- });
33
- bodyBCollisions.push({
34
- self: collisionDetailsB,
35
- target: collisionDetailsA
36
- });
37
- this.collisionReports.set(contactEquation.bodyA.id, bodyACollisions);
38
- this.collisionReports.set(contactEquation.bodyB.id, bodyBCollisions);
39
- }
40
- else {
41
- console.warn('ContactEquationOrganiser: Entity not found for contact equation', contactEquation);
51
+ }
52
+ reset() {
53
+ this.bodiesInContactWith.clear();
54
+ this.collisionReports.clear();
55
+ }
56
+ getCollisionDetails(entityA, entityB, contactEquation) {
57
+ const dtoA = entityA.convertToDTO();
58
+ const dtoB = entityB.convertToDTO();
59
+ const contactPointA = p2js_helper_1.P2JSHelper.arrayToVector(contactEquation.contactPointA);
60
+ const contactPointB = p2js_helper_1.P2JSHelper.arrayToVector(contactEquation.contactPointB);
61
+ const { normalA, normalB } = this.getNormals(contactEquation);
62
+ return {
63
+ collisionDetailsA: this.getCollisionDetail(dtoA, contactEquation.bodyA.mass, contactPointA, normalA, entityA.area),
64
+ collisionDetailsB: this.getCollisionDetail(dtoB, contactEquation.bodyB.mass, contactPointB, normalB, entityB.area)
65
+ };
66
+ }
67
+ getCollisionDetail(physicsBodyDTOSelf, massSelf, contactPointSelf, normalSelf, areaSelf) {
68
+ let positionRelativeToObject;
69
+ return {
70
+ body: physicsBodyDTOSelf,
71
+ getPositionReletiveToObject: () => {
72
+ if (!positionRelativeToObject) {
73
+ positionRelativeToObject = contactPointSelf.rotate(helpers_lib_1.Radian.toVector(-physicsBodyDTOSelf.rotation));
42
74
  }
43
- }
44
- reset() {
45
- this.bodiesInContactWith.clear();
46
- this.collisionReports.clear();
47
- }
48
- getCollisionDetails(entityA, entityB, contactEquation) {
49
- let dtoA = entityA.convertToDTO();
50
- let dtoB = entityB.convertToDTO();
51
- let contactPointA = p2js_helper_1.P2JSHelper.arrayToVector(contactEquation.contactPointA);
52
- let contactPointB = p2js_helper_1.P2JSHelper.arrayToVector(contactEquation.contactPointB);
53
- let { normalA, normalB } = this.getNormals(contactEquation);
54
- return {
55
- collisionDetailsA: this.getCollisionDetail(dtoA, contactEquation.bodyA.mass, contactPointA, normalA, entityA.area),
56
- collisionDetailsB: this.getCollisionDetail(dtoB, contactEquation.bodyB.mass, contactPointB, normalB, entityB.area)
57
- };
58
- }
59
- getCollisionDetail(physicsBodyDTOSelf, massSelf, contactPointSelf, normalSelf, areaSelf) {
60
- let positionRelativeToObject;
61
- return {
62
- body: physicsBodyDTOSelf,
63
- getPositionReletiveToObject: () => {
64
- if (!positionRelativeToObject) {
65
- positionRelativeToObject = contactPointSelf.rotate(helpers_lib_1.Radian.toVector(-physicsBodyDTOSelf.rotation));
66
- }
67
- return positionRelativeToObject;
68
- },
69
- position: contactPointSelf,
70
- mass: massSelf,
71
- area: areaSelf,
72
- normal: normalSelf
73
- };
74
- }
75
- getNormals(contactEquation) {
76
- let contactEquationNormalA = p2js_helper_1.P2JSHelper.arrayToVector(contactEquation.normalA);
77
- let contactEquationNormalB = contactEquationNormalA.multiply(-1);
78
- return { normalA: contactEquationNormalA, normalB: contactEquationNormalB };
79
- }
75
+ return positionRelativeToObject;
76
+ },
77
+ position: contactPointSelf,
78
+ mass: massSelf,
79
+ area: areaSelf,
80
+ normal: normalSelf
81
+ };
82
+ }
83
+ getNormals(contactEquation) {
84
+ const contactEquationNormalA = p2js_helper_1.P2JSHelper.arrayToVector(contactEquation.normalA);
85
+ const contactEquationNormalB = contactEquationNormalA.multiply(-1);
86
+ return { normalA: contactEquationNormalA, normalB: contactEquationNormalB };
87
+ }
80
88
  }
81
89
  exports.ContactEquationOrganiser = ContactEquationOrganiser;
82
- //# sourceMappingURL=contact-equation-orginiser.js.map
90
+ //# sourceMappingURL=contact-equation-orginiser.js.map
@@ -2,11 +2,11 @@
2
2
  import { CollisionReport } from '../../interfaces';
3
3
  export type OnCollisionCallbackFunciton = (collision: CollisionReport) => void;
4
4
  export declare class PhysicsCollision {
5
- private p2World;
6
- private contactEquationOrganiser;
7
- constructor(p2World: p2.World);
8
- update(time: number, delta: number): void;
9
- isCollidingWithAnything(p2Body: p2.Body): boolean;
10
- private setResults;
11
- private handleSpeedLimit;
5
+ private p2World;
6
+ private contactEquationOrganiser;
7
+ constructor(p2World: p2.World);
8
+ update(time: number, delta: number): void;
9
+ isCollidingWithAnything(p2Body: p2.Body): boolean;
10
+ private setResults;
11
+ private handleSpeedLimit;
12
12
  }
@@ -1,51 +1,50 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ Object.defineProperty(exports, '__esModule', { value: true });
3
2
  exports.PhysicsCollision = void 0;
4
- const p2js_helper_1 = require("../../helpers/p2js.helper");
5
- const contact_equation_orginiser_1 = require("./contact-equation-orginiser");
6
- const physics_entity_1 = require("../../entitity-types/physics-entity");
3
+ const p2js_helper_1 = require('../../helpers/p2js.helper');
4
+ const contact_equation_orginiser_1 = require('./contact-equation-orginiser');
5
+ const physics_entity_1 = require('../../entitity-types/physics-entity');
7
6
  const SPEED_LIMIT = 0.8;
8
7
  const ROTATIONAL_SPEED_LIMIT = 0.01;
9
8
  class PhysicsCollision {
10
- constructor(p2World) {
11
- this.contactEquationOrganiser = new contact_equation_orginiser_1.ContactEquationOrganiser();
12
- this.p2World = p2World;
13
- this.p2World.on('beginContact', (event) => {
14
- event.contactEquations.forEach(contactEquation => {
15
- this.contactEquationOrganiser.registerContactEquation(contactEquation);
16
- });
17
- });
18
- }
19
- update(time, delta) {
20
- physics_entity_1.PhysicsEntity.getPhysicsEntities().forEach(entity => {
21
- entity['_collisions'] = [];
22
- });
23
- this.p2World.narrowphase.contactEquations.forEach(contactEquation => {
24
- this.contactEquationOrganiser.registerContactEquation(contactEquation);
25
- });
26
- this.setResults();
27
- this.contactEquationOrganiser.reset();
28
- }
29
- isCollidingWithAnything(p2Body) {
30
- p2Body.aabbNeedsUpdate = true;
31
- p2Body.updateAABB();
32
- let overlappingBodies = this.p2World.broadphase.aabbQuery(this.p2World, p2Body.aabb);
33
- return overlappingBodies.length > 0;
34
- }
35
- setResults() {
36
- this.contactEquationOrganiser.getAllBodiesWithTheirCollisionReports().forEach(bodiesAndContacts => {
37
- this.handleSpeedLimit(bodiesAndContacts.p2Body);
38
- bodiesAndContacts.entity['setCollisionReports'](bodiesAndContacts.collisionReports);
39
- });
40
- }
41
- handleSpeedLimit(body) {
42
- let velocity = p2js_helper_1.P2JSHelper.arrayToVector(body.velocity);
43
- if (velocity.length > SPEED_LIMIT) {
44
- velocity = velocity.normalize(SPEED_LIMIT);
45
- body.velocity = p2js_helper_1.P2JSHelper.vectorToArray(velocity);
46
- }
47
- body.angularVelocity = Math.min(Math.max(body.angularVelocity, -ROTATIONAL_SPEED_LIMIT), ROTATIONAL_SPEED_LIMIT);
9
+ constructor(p2World) {
10
+ this.contactEquationOrganiser = new contact_equation_orginiser_1.ContactEquationOrganiser();
11
+ this.p2World = p2World;
12
+ this.p2World.on('beginContact', event => {
13
+ event.contactEquations.forEach(contactEquation => {
14
+ this.contactEquationOrganiser.registerContactEquation(contactEquation);
15
+ });
16
+ });
17
+ }
18
+ update(time, delta) {
19
+ physics_entity_1.PhysicsEntity.getPhysicsEntities().forEach(entity => {
20
+ entity['_collisions'] = [];
21
+ });
22
+ this.p2World.narrowphase.contactEquations.forEach(contactEquation => {
23
+ this.contactEquationOrganiser.registerContactEquation(contactEquation);
24
+ });
25
+ this.setResults();
26
+ this.contactEquationOrganiser.reset();
27
+ }
28
+ isCollidingWithAnything(p2Body) {
29
+ p2Body.aabbNeedsUpdate = true;
30
+ p2Body.updateAABB();
31
+ const overlappingBodies = this.p2World.broadphase.aabbQuery(this.p2World, p2Body.aabb);
32
+ return overlappingBodies.length > 0;
33
+ }
34
+ setResults() {
35
+ this.contactEquationOrganiser.getAllBodiesWithTheirCollisionReports().forEach(bodiesAndContacts => {
36
+ this.handleSpeedLimit(bodiesAndContacts.p2Body);
37
+ bodiesAndContacts.entity['setCollisionReports'](bodiesAndContacts.collisionReports);
38
+ });
39
+ }
40
+ handleSpeedLimit(body) {
41
+ let velocity = p2js_helper_1.P2JSHelper.arrayToVector(body.velocity);
42
+ if (velocity.length > SPEED_LIMIT) {
43
+ velocity = velocity.normalize(SPEED_LIMIT);
44
+ body.velocity = p2js_helper_1.P2JSHelper.vectorToArray(velocity);
48
45
  }
46
+ body.angularVelocity = Math.min(Math.max(body.angularVelocity, -ROTATIONAL_SPEED_LIMIT), ROTATIONAL_SPEED_LIMIT);
47
+ }
49
48
  }
50
49
  exports.PhysicsCollision = PhysicsCollision;
51
- //# sourceMappingURL=physics-collision.js.map
50
+ //# sourceMappingURL=physics-collision.js.map
@@ -1,15 +1,15 @@
1
1
  export declare enum PhysicsBodyGroup {
2
- none = 0,
3
- border = 1,
4
- friend = 2,
5
- friendProjectile = 3,
6
- enemy = 4,
7
- enemyProjectile = 5,
8
- neutral = 6,
9
- explosion = 7
2
+ none = 0,
3
+ border = 1,
4
+ friend = 2,
5
+ friendProjectile = 3,
6
+ enemy = 4,
7
+ enemyProjectile = 5,
8
+ neutral = 6,
9
+ explosion = 7
10
10
  }
11
11
  export declare class PhysicsBodyGroups {
12
- static getGroupConstant(group: PhysicsBodyGroup): number;
13
- static getMaskConstant(group: PhysicsBodyGroup): number;
14
- static canCollide(group1: PhysicsBodyGroup, group2: PhysicsBodyGroup): boolean;
12
+ static getGroupConstant(group: PhysicsBodyGroup): number;
13
+ static getMaskConstant(group: PhysicsBodyGroup): number;
14
+ static canCollide(group1: PhysicsBodyGroup, group2: PhysicsBodyGroup): boolean;
15
15
  }