bard-legends-framework 0.9.6 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (241) hide show
  1. package/dist/_interfaces/index.d.ts +2 -2
  2. package/dist/_interfaces/index.js +2 -3
  3. package/dist/game-entities/attachable/attachable.d.ts +6 -6
  4. package/dist/game-entities/attachable/attachable.js +28 -30
  5. package/dist/game-entities/attachable/attachable.spec.js +129 -128
  6. package/dist/game-entities/attachable/attachable.store.d.ts +5 -5
  7. package/dist/game-entities/attachable/attachable.store.js +34 -32
  8. package/dist/game-entities/attachable/attachable.test.js +132 -131
  9. package/dist/game-entities/attachable/destroyable.d.ts +13 -13
  10. package/dist/game-entities/attachable/destroyable.js +64 -69
  11. package/dist/game-entities/attachable/helpers/decorate-actions-lib.d.ts +15 -15
  12. package/dist/game-entities/attachable/helpers/decorate-actions-lib.js +125 -116
  13. package/dist/game-entities/attachable/helpers/referance-variable.d.ts +15 -15
  14. package/dist/game-entities/attachable/helpers/referance-variable.js +47 -48
  15. package/dist/game-entities/attachable/interfaces.d.ts +6 -6
  16. package/dist/game-entities/attachable/interfaces.js +2 -3
  17. package/dist/game-entities/base/helpers/decorate-actions-lib.js +0 -1
  18. package/dist/game-entities/controller/controller.js +0 -1
  19. package/dist/game-entities/controller/controller.spec.js +128 -125
  20. package/dist/game-entities/entity/entity.d.ts +4 -1
  21. package/dist/game-entities/entity/entity.js +5 -5
  22. package/dist/game-entities/entity/entity.spec.js +263 -293
  23. package/dist/game-entities/entity/helpers/view-creation.helper.d.ts +7 -7
  24. package/dist/game-entities/entity/helpers/view-creation.helper.js +48 -48
  25. package/dist/game-entities/scene/scene.spec.js +219 -223
  26. package/dist/game-entities/service/service.js +0 -4
  27. package/dist/game-entities/service/service.spec.js +265 -237
  28. package/dist/game-entities/service/service.test.js +4 -2
  29. package/dist/game-entities/update-loop.d.ts +18 -18
  30. package/dist/game-entities/update-loop.js +46 -28
  31. package/dist/game-entities/view/view.spec.js +490 -506
  32. package/dist/game-entities/view/view.test.js +1 -1
  33. package/dist/lib/animator/animations.d.ts +13 -13
  34. package/dist/lib/animator/animations.js +43 -40
  35. package/dist/lib/animator/animator.d.ts +41 -41
  36. package/dist/lib/animator/animator.js +194 -197
  37. package/dist/lib/animator/animator.spec.js +699 -612
  38. package/dist/lib/animator/index.js +24 -19
  39. package/dist/lib/libraries/animator/animations.d.ts +13 -13
  40. package/dist/lib/libraries/animator/animations.js +43 -40
  41. package/dist/lib/libraries/animator/animator.d.ts +41 -41
  42. package/dist/lib/libraries/animator/animator.js +194 -197
  43. package/dist/lib/libraries/animator/animator.spec.js +699 -612
  44. package/dist/lib/libraries/animator/index.js +24 -19
  45. package/dist/lib/libraries/path-finder/path-finder.d.ts +2 -2
  46. package/dist/lib/libraries/path-finder/path-finder.js +19 -20
  47. package/dist/lib/path-finder/path-finder.d.ts +2 -2
  48. package/dist/lib/path-finder/path-finder.js +19 -20
  49. package/dist/lib/services/keyboard/keyboard.d.ts +4 -4
  50. package/dist/lib/services/keyboard/keyboard.js +39 -31
  51. package/dist/lib/services/mouse/mouse.service.d.ts +8 -8
  52. package/dist/lib/services/mouse/mouse.service.js +65 -53
  53. package/dist/lib/services/mouse/mouser-target-focus.service.d.ts +11 -11
  54. package/dist/lib/services/mouse/mouser-target-focus.service.js +83 -81
  55. package/dist/lib/update-loop.d.ts +10 -10
  56. package/dist/lib/update-loop.js +35 -27
  57. package/dist/physics/entitity-types/immovable-physics-entity.d.ts +6 -6
  58. package/dist/physics/entitity-types/immovable-physics-entity.js +23 -24
  59. package/dist/physics/entitity-types/movable-entity.d.ts +6 -6
  60. package/dist/physics/entitity-types/movable-entity.js +21 -22
  61. package/dist/physics/entitity-types/movable-physics-entity.d.ts +14 -14
  62. package/dist/physics/entitity-types/movable-physics-entity.js +83 -88
  63. package/dist/physics/entitity-types/physics-entity.d.ts +23 -23
  64. package/dist/physics/entitity-types/physics-entity.js +97 -88
  65. package/dist/physics/helpers/closest-available-space.helper.d.ts +16 -16
  66. package/dist/physics/helpers/closest-available-space.helper.js +98 -96
  67. package/dist/physics/helpers/closest-available-space.helper.spec.js +115 -68
  68. package/dist/physics/helpers/p2js.helper.d.ts +3 -3
  69. package/dist/physics/helpers/p2js.helper.js +21 -22
  70. package/dist/physics/helpers/shape-factory.d.ts +9 -4
  71. package/dist/physics/helpers/shape-factory.js +99 -75
  72. package/dist/physics/libs/p2js.helper.js +1 -1
  73. package/dist/physics/libs/position-to-grid-position-converter.d.ts +3 -3
  74. package/dist/physics/libs/position-to-grid-position-converter.js +15 -13
  75. package/dist/physics/module//360/237/223/220services/availability-grid.service.d.ts +10 -5
  76. package/dist/physics/module//360/237/223/220services/availability-grid.service.js +77 -57
  77. package/dist/physics/module//360/237/223/220services/border.service.d.ts +2 -2
  78. package/dist/physics/module//360/237/223/220services/border.service.js +57 -37
  79. package/dist/physics/module//360/237/223/220services/collision/physics-body-group.service.js +1 -1
  80. package/dist/physics/module//360/237/223/220services/collisions.service.d.ts +7 -7
  81. package/dist/physics/module//360/237/223/220services/collisions.service.js +110 -98
  82. package/dist/physics/module//360/237/223/220services/debug-visuals.service.d.ts +28 -6
  83. package/dist/physics/module//360/237/223/220services/debug-visuals.service.js +121 -89
  84. package/dist/physics/module//360/237/223/220services/eliptic-explosion.service.d.ts +15 -7
  85. package/dist/physics/module//360/237/223/220services/eliptic-explosion.service.js +117 -93
  86. package/dist/physics/module//360/237/223/220services/explosion.service.d.ts +14 -7
  87. package/dist/physics/module//360/237/223/220services/explosion.service.js +102 -77
  88. package/dist/physics/module//360/237/223/220services/explosions/eliptic-explosion.service.d.ts +15 -7
  89. package/dist/physics/module//360/237/223/220services/explosions/eliptic-explosion.service.js +117 -93
  90. package/dist/physics/module//360/237/223/220services/explosions/explosion.service.d.ts +14 -7
  91. package/dist/physics/module//360/237/223/220services/explosions/explosion.service.js +102 -77
  92. package/dist/physics/module//360/237/223/220services/explosions/helpers/ray-cast-hit-converter.d.ts +3 -3
  93. package/dist/physics/module//360/237/223/220services/explosions/helpers/ray-cast-hit-converter.js +71 -67
  94. package/dist/physics/module//360/237/223/220services/helpers/ray-cast-hit-converter.d.ts +3 -3
  95. package/dist/physics/module//360/237/223/220services/helpers/ray-cast-hit-converter.js +71 -67
  96. package/dist/physics/module//360/237/223/220services/impact/eliptic-explosion.service.js +1 -1
  97. package/dist/physics/module//360/237/223/220services/materials.service.d.ts +16 -11
  98. package/dist/physics/module//360/237/223/220services/materials.service.js +118 -108
  99. package/dist/physics/module//360/237/223/220services/path-finder.service.d.ts +19 -8
  100. package/dist/physics/module//360/237/223/220services/path-finder.service.js +121 -82
  101. package/dist/physics/module//360/237/223/220services/physics-world.service.d.ts +30 -15
  102. package/dist/physics/module//360/237/223/220services/physics-world.service.js +122 -100
  103. package/dist/physics/module//360/237/223/220services/ray-casting.service.d.ts +3 -3
  104. package/dist/physics/module//360/237/223/220services/ray-casting.service.js +87 -86
  105. package/dist/physics/module//360/237/223/220services/shape-creation.service.d.ts +9 -4
  106. package/dist/physics/module//360/237/223/220services/shape-creation.service.js +113 -84
  107. package/dist/physics/module//360/237/223/220services/test-visuals/test-visuals.service.js +2 -1
  108. package/dist/physics/module//360/237/247/212entities/data-structures/availability-grid-cache.d.ts +8 -8
  109. package/dist/physics/module//360/237/247/212entities/data-structures/availability-grid-cache.js +32 -33
  110. package/dist/physics/physics-world.d.ts +50 -34
  111. package/dist/physics/physics-world.js +142 -133
  112. package/dist/physics/sub-elements/available-spaces/helpers/availability-grid.helper.d.ts +3 -3
  113. package/dist/physics/sub-elements/available-spaces/helpers/availability-grid.helper.js +15 -13
  114. package/dist/physics/sub-elements/available-spaces/physics-availability-grid.d.ts +9 -9
  115. package/dist/physics/sub-elements/available-spaces/physics-availability-grid.js +82 -77
  116. package/dist/physics/sub-elements/available-spaces/physics-available-spaces.d.ts +18 -14
  117. package/dist/physics/sub-elements/available-spaces/physics-available-spaces.js +91 -79
  118. package/dist/physics/sub-elements/collisions/contact-equation-orginiser.d.ts +11 -11
  119. package/dist/physics/sub-elements/collisions/contact-equation-orginiser.js +84 -76
  120. package/dist/physics/sub-elements/collisions/physics-collision.d.ts +7 -7
  121. package/dist/physics/sub-elements/collisions/physics-collision.js +43 -44
  122. package/dist/physics/sub-elements/elements/physics-body-groups.d.ts +11 -11
  123. package/dist/physics/sub-elements/elements/physics-body-groups.js +54 -54
  124. package/dist/physics/sub-elements/elements/physics-materials.d.ts +15 -10
  125. package/dist/physics/sub-elements/elements/physics-materials.js +101 -100
  126. package/dist/physics/sub-elements/elements/physics-world-borders.d.ts +3 -3
  127. package/dist/physics/sub-elements/elements/physics-world-borders.js +69 -45
  128. package/dist/physics/sub-elements/physics-body-groups.d.ts +8 -8
  129. package/dist/physics/sub-elements/physics-body-groups.js +41 -42
  130. package/dist/physics/sub-elements/physics-collision.d.ts +16 -16
  131. package/dist/physics/sub-elements/physics-collision.js +141 -121
  132. package/dist/physics/sub-elements/physics-materials.d.ts +15 -10
  133. package/dist/physics/sub-elements/physics-materials.js +101 -100
  134. package/dist/physics/sub-elements/physics-world-borders.d.ts +2 -2
  135. package/dist/physics/sub-elements/physics-world-borders.js +25 -26
  136. package/dist/physics/sub-elements/raycasting/physics-body-explosion-hit.d.ts +15 -11
  137. package/dist/physics/sub-elements/raycasting/physics-body-explosion-hit.js +59 -59
  138. package/dist/physics/sub-elements/raycasting/physics-explosion.d.ts +13 -6
  139. package/dist/physics/sub-elements/raycasting/physics-explosion.js +108 -73
  140. package/dist/physics/sub-elements/raycasting/ray-cast.d.ts +19 -19
  141. package/dist/physics/sub-elements/raycasting/ray-cast.js +93 -98
  142. package/dist/pixi/display-object/components/filters.d.ts +18 -18
  143. package/dist/pixi/display-object/components/filters.js +106 -81
  144. package/dist/pixi/display-object/components/glow-effect.d.ts +8 -8
  145. package/dist/pixi/display-object/components/glow-effect.js +33 -36
  146. package/dist/pixi/display-object/components/glow-filter.d.ts +8 -8
  147. package/dist/pixi/display-object/components/glow-filter.js +33 -36
  148. package/dist/pixi/display-object/container-attributes.js +1 -1
  149. package/dist/pixi/display-object/display-object-attributes.d.ts +41 -41
  150. package/dist/pixi/display-object/display-object-attributes.js +148 -150
  151. package/dist/pixi/display-object/display-object.d.ts +17 -17
  152. package/dist/pixi/display-object/display-object.js +79 -75
  153. package/dist/pixi/display-object/filters/base-filters/alpha-primer-color.filter.d.ts +9 -4
  154. package/dist/pixi/display-object/filters/base-filters/alpha-primer-color.filter.js +89 -77
  155. package/dist/pixi/display-object/filters/base-filters/blur.filter.js +30 -30
  156. package/dist/pixi/display-object/filters/base-filters/contrast-filter.d.ts +9 -4
  157. package/dist/pixi/display-object/filters/base-filters/contrast-filter.js +62 -53
  158. package/dist/pixi/display-object/filters/base-filters/expand-with-alpha-color.d.ts +10 -5
  159. package/dist/pixi/display-object/filters/base-filters/expand-with-alpha-color.js +93 -81
  160. package/dist/pixi/display-object/filters/base-filters/expand-with-color-gradient.d.ts +12 -7
  161. package/dist/pixi/display-object/filters/base-filters/expand-with-color-gradient.js +120 -109
  162. package/dist/pixi/display-object/filters/base-filters/expand-with-color.d.ts +10 -5
  163. package/dist/pixi/display-object/filters/base-filters/expand-with-color.filter.js +32 -32
  164. package/dist/pixi/display-object/filters/base-filters/expand-with-color.js +92 -85
  165. package/dist/pixi/display-object/filters/templates/checking-neighbors.template.js +28 -28
  166. package/dist/pixi/display-object/filters/templates/plane.template.js +20 -20
  167. package/dist/pixi/display-object/filters.js +20 -4
  168. package/dist/pixi/display-object/objects/components/filters.d.ts +18 -18
  169. package/dist/pixi/display-object/objects/components/filters.js +106 -81
  170. package/dist/pixi/display-object/objects/container.d.ts +2 -2
  171. package/dist/pixi/display-object/objects/container.js +39 -30
  172. package/dist/pixi/display-object/objects/graphics.d.ts +28 -28
  173. package/dist/pixi/display-object/objects/graphics.js +218 -202
  174. package/dist/pixi/display-object/objects/helpers/filters.d.ts +25 -25
  175. package/dist/pixi/display-object/objects/helpers/filters.js +150 -124
  176. package/dist/pixi/display-object/objects/helpers/glow-sprite-generator.d.ts +7 -7
  177. package/dist/pixi/display-object/objects/helpers/glow-sprite-generator.js +114 -95
  178. package/dist/pixi/display-object/objects/premade-objects/sprite-with-glowing-shapes.d.ts +5 -5
  179. package/dist/pixi/display-object/objects/premade-objects/sprite-with-glowing-shapes.js +81 -57
  180. package/dist/pixi/display-object/objects/sprite.d.ts +43 -43
  181. package/dist/pixi/display-object/objects/sprite.js +248 -233
  182. package/dist/pixi/display-object/objects/text/helpers/process-steps/1-data-in-converter/rich-text-data-in-converter.js +1 -1
  183. package/dist/pixi/display-object/objects/text/helpers/process-steps/1-data-in-converter/rich-text-data-in-converter.test.js +9 -9
  184. package/dist/pixi/display-object/objects/text/helpers/rich-text-to-plane-text.d.ts +1 -1
  185. package/dist/pixi/display-object/objects/text.d.ts +25 -25
  186. package/dist/pixi/display-object/objects/text.js +111 -102
  187. package/dist/pixi/display-object/premade-objects/sprite-with-glowing-shapes.d.ts +13 -9
  188. package/dist/pixi/display-object/premade-objects/sprite-with-glowing-shapes.js +96 -67
  189. package/dist/pixi/game.d.ts +1 -1
  190. package/dist/pixi/game.js +2 -2
  191. package/dist/pixi/helpers/glow-sprite-generator.d.ts +6 -6
  192. package/dist/pixi/helpers/glow-sprite-generator.js +99 -84
  193. package/dist/pixi/helpers/pixi-container.helper.d.ts +1 -1
  194. package/dist/pixi/helpers/pixi-container.helper.js +10 -8
  195. package/dist/pixi/helpers/screen-position-to-stage.helper.d.ts +1 -1
  196. package/dist/pixi/helpers/screen-position-to-stage.helper.js +12 -12
  197. package/dist/pixi/helpers/screen-position-to-stage.helper.test.js +174 -79
  198. package/dist/pixi/modules/CAMERA/index.d.ts +1 -1
  199. package/dist/pixi/modules/CAMERA/index.js +3 -3
  200. package/dist/pixi/modules/CAMERA//360/237/247/212entities/camera.entity.js +1 -1
  201. package/dist/services/keyboard/keyboard.d.ts +4 -4
  202. package/dist/services/keyboard/keyboard.js +39 -31
  203. package/dist/services/mouse/mouse.service.d.ts +8 -8
  204. package/dist/services/mouse/mouse.service.js +65 -53
  205. package/dist/services/mouse/mouser-target-focus.service.d.ts +11 -11
  206. package/dist/services/mouse/mouser-target-focus.service.js +83 -81
  207. package/dist/utilities/libraries/animator/animating-content/state-animation.d.ts +29 -26
  208. package/dist/utilities/libraries/animator/animating-content/state-animation.js +159 -165
  209. package/dist/utilities/libraries/animator/animating-content/state-animation.test.js +386 -375
  210. package/dist/utilities/libraries/animator/animator.spec.js +765 -656
  211. package/dist/utilities/libraries/binary-heap/binary-heap.d.ts +11 -11
  212. package/dist/utilities/libraries/binary-heap/binary-heap.js +79 -81
  213. package/dist/utilities/libraries/data-structures/binary-heap/binary-heap.d.ts +11 -11
  214. package/dist/utilities/libraries/data-structures/binary-heap/binary-heap.js +79 -81
  215. package/dist/utilities/libraries/data-structures/grid/grid.d.ts +35 -31
  216. package/dist/utilities/libraries/data-structures/grid/grid.js +128 -117
  217. package/dist/utilities/libraries/data-structures/grid/grid.spec.js +176 -138
  218. package/dist/utilities/libraries/data-structures/grid/grid.test.js +218 -141
  219. package/dist/utilities/libraries/data-structures/grid/position-to-grid-position-converter.d.ts +3 -3
  220. package/dist/utilities/libraries/data-structures/grid/position-to-grid-position-converter.js +15 -13
  221. package/dist/utilities/libraries/data-structures/queue/queue.d.ts +21 -21
  222. package/dist/utilities/libraries/data-structures/queue/queue.js +63 -66
  223. package/dist/utilities/libraries/data-structures/queue/queue.test.js +54 -55
  224. package/dist/utilities/libraries/grid-algorithms/closest-available-space/closest-available-space.helper.spec.js +122 -68
  225. package/dist/utilities/libraries/grid-algorithms/path-finder/path-finder.spec.js +140 -135
  226. package/dist/utilities/libraries/grid-algorithms/vector-field-path-finder/vector-field-path-finder.spec.js +293 -229
  227. package/dist/utilities/libraries/path-finder/path-finder.d.ts +7 -7
  228. package/dist/utilities/libraries/path-finder/path-finder.js +113 -109
  229. package/dist/utilities/libraries/path-finder/path-finder.spec.js +131 -106
  230. package/dist/utilities/services/keyboard/keyboard.d.ts +4 -4
  231. package/dist/utilities/services/keyboard/keyboard.js +42 -34
  232. package/dist/utilities/services/mouse/helpers/mouse-position.helper.d.ts +1 -1
  233. package/dist/utilities/services/mouse/helpers/mouse-position.helper.js +12 -12
  234. package/dist/utilities/services/mouse/helpers/mouse-position.helper.test.js +168 -73
  235. package/dist/utilities/services/mouse/mouse-target-focus.service.d.ts +15 -15
  236. package/dist/utilities/services/mouse/mouse-target-focus.service.js +79 -76
  237. package/dist/utilities/services/mouse/mouse.service.d.ts +9 -9
  238. package/dist/utilities/services/mouse/mouse.service.js +86 -72
  239. package/dist/utilities/services/mouse/mouser-target-focus.service.d.ts +11 -11
  240. package/dist/utilities/services/mouse/mouser-target-focus.service.js +83 -81
  241. package/package.json +8 -13
@@ -1,65 +1,65 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ Object.defineProperty(exports, '__esModule', { value: true });
3
2
  exports.PhysicsBodyExplosionHit = 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 PhysicsBodyExplosionHit {
8
- static convertRaysToBodyExplosionHits(rays, centerOfExplosion, totalCountOfRays) {
9
- let rayResultGroupOfBodies = this.groupRayResultsByBody(rays);
10
- return [...rayResultGroupOfBodies.values()].map(rayResultGroupOfABody => new PhysicsBodyExplosionHit(rayResultGroupOfABody, centerOfExplosion, totalCountOfRays));
11
- }
12
- static groupRayResultsByBody(rayCasts) {
13
- let bodyToHitResults = new Map();
14
- rayCasts.forEach(ray => {
15
- ray.results.forEach(rayCastResult => {
16
- let previousRecord = bodyToHitResults.get(rayCastResult.body);
17
- if (previousRecord) {
18
- let closestRaycastResult = rayCastResult.fraction < previousRecord.closestRaycastResult.fraction
19
- ? rayCastResult
20
- : previousRecord.closestRaycastResult;
21
- previousRecord.raycastResults.push(rayCastResult);
22
- bodyToHitResults.set(rayCastResult.body, {
23
- hitCount: previousRecord.hitCount + 1,
24
- closestRaycastResult,
25
- raycastResults: previousRecord.raycastResults,
26
- isExternal: previousRecord.isExternal
27
- });
28
- }
29
- else {
30
- let isExternal = rayCastResult.isExternal();
31
- bodyToHitResults.set(rayCastResult.body, {
32
- hitCount: 1,
33
- closestRaycastResult: rayCastResult,
34
- raycastResults: [rayCastResult],
35
- isExternal
36
- });
37
- }
38
- });
39
- });
40
- return bodyToHitResults;
41
- }
42
- constructor(rayResultGroupOfABody, centerOfExplosion, totalCountOfRays) {
43
- this.ratioOfHits = rayResultGroupOfABody.hitCount / totalCountOfRays;
44
- this.raycastResults = rayResultGroupOfABody.raycastResults;
45
- if (rayResultGroupOfABody.isExternal) {
46
- this.body = physics_entity_1.PhysicsEntity.getFromP2BodyIdOrFail(rayResultGroupOfABody.closestRaycastResult.body.id);
47
- this.getHitPosition = rayResultGroupOfABody.closestRaycastResult.hitPosition;
48
- this.getHitDistance = rayResultGroupOfABody.closestRaycastResult.hitDistance;
49
- this.isExternal = true;
50
- this.normal = rayResultGroupOfABody.closestRaycastResult.normal;
51
- this.fraction = rayResultGroupOfABody.closestRaycastResult.fraction;
52
- }
53
- else {
54
- let bodyPosition = p2js_helper_1.P2JSHelper.arrayToVector(rayResultGroupOfABody.closestRaycastResult.body.position);
55
- this.body = physics_entity_1.PhysicsEntity.getFromP2BodyIdOrFail(rayResultGroupOfABody.closestRaycastResult.body.id);
56
- this.getHitPosition = () => centerOfExplosion;
57
- this.getHitDistance = () => 0;
58
- this.isExternal = false;
59
- this.normal = helpers_lib_1.Vector.fromTo(bodyPosition, centerOfExplosion).normalize();
60
- this.fraction = 0;
7
+ static convertRaysToBodyExplosionHits(rays, centerOfExplosion, totalCountOfRays) {
8
+ const rayResultGroupOfBodies = PhysicsBodyExplosionHit.groupRayResultsByBody(rays);
9
+ return [...rayResultGroupOfBodies.values()].map(
10
+ rayResultGroupOfABody => new PhysicsBodyExplosionHit(rayResultGroupOfABody, centerOfExplosion, totalCountOfRays)
11
+ );
12
+ }
13
+ static groupRayResultsByBody(rayCasts) {
14
+ const bodyToHitResults = new Map();
15
+ rayCasts.forEach(ray => {
16
+ ray.results.forEach(rayCastResult => {
17
+ const previousRecord = bodyToHitResults.get(rayCastResult.body);
18
+ if (previousRecord) {
19
+ const closestRaycastResult =
20
+ rayCastResult.fraction < previousRecord.closestRaycastResult.fraction
21
+ ? rayCastResult
22
+ : previousRecord.closestRaycastResult;
23
+ previousRecord.raycastResults.push(rayCastResult);
24
+ bodyToHitResults.set(rayCastResult.body, {
25
+ hitCount: previousRecord.hitCount + 1,
26
+ closestRaycastResult,
27
+ raycastResults: previousRecord.raycastResults,
28
+ isExternal: previousRecord.isExternal
29
+ });
30
+ } else {
31
+ const isExternal = rayCastResult.isExternal();
32
+ bodyToHitResults.set(rayCastResult.body, {
33
+ hitCount: 1,
34
+ closestRaycastResult: rayCastResult,
35
+ raycastResults: [rayCastResult],
36
+ isExternal
37
+ });
61
38
  }
39
+ });
40
+ });
41
+ return bodyToHitResults;
42
+ }
43
+ constructor(rayResultGroupOfABody, centerOfExplosion, totalCountOfRays) {
44
+ this.ratioOfHits = rayResultGroupOfABody.hitCount / totalCountOfRays;
45
+ this.raycastResults = rayResultGroupOfABody.raycastResults;
46
+ if (rayResultGroupOfABody.isExternal) {
47
+ this.body = physics_entity_1.PhysicsEntity.getFromP2BodyIdOrFail(rayResultGroupOfABody.closestRaycastResult.body.id);
48
+ this.getHitPosition = rayResultGroupOfABody.closestRaycastResult.hitPosition;
49
+ this.getHitDistance = rayResultGroupOfABody.closestRaycastResult.hitDistance;
50
+ this.isExternal = true;
51
+ this.normal = rayResultGroupOfABody.closestRaycastResult.normal;
52
+ this.fraction = rayResultGroupOfABody.closestRaycastResult.fraction;
53
+ } else {
54
+ const bodyPosition = p2js_helper_1.P2JSHelper.arrayToVector(rayResultGroupOfABody.closestRaycastResult.body.position);
55
+ this.body = physics_entity_1.PhysicsEntity.getFromP2BodyIdOrFail(rayResultGroupOfABody.closestRaycastResult.body.id);
56
+ this.getHitPosition = () => centerOfExplosion;
57
+ this.getHitDistance = () => 0;
58
+ this.isExternal = false;
59
+ this.normal = helpers_lib_1.Vector.fromTo(bodyPosition, centerOfExplosion).normalize();
60
+ this.fraction = 0;
62
61
  }
62
+ }
63
63
  }
64
64
  exports.PhysicsBodyExplosionHit = PhysicsBodyExplosionHit;
65
- //# sourceMappingURL=physics-body-explosion-hit.js.map
65
+ //# sourceMappingURL=physics-body-explosion-hit.js.map
@@ -4,10 +4,17 @@ import { PhysicsExplosionOptions } from '../../interfaces';
4
4
  import { PhysicsBodyExplosionHit } from './physics-body-explosion-hit';
5
5
  import { PhysicsBodyGroup } from '../elements/physics-body-groups';
6
6
  export declare class PhysicsExplosion {
7
- static createExplosion(centerOfExplosion: Vector, radius: number, physicsBodyGroup: PhysicsBodyGroup, severity: number, physicsWorld: PhysicsWorld, options?: PhysicsExplosionOptions): PhysicsBodyExplosionHit[];
8
- private static createRays;
9
- private static applyForcesToBodies;
10
- private static pushBody;
11
- private static createExplosionDebugVisual;
12
- private static getTotalCountOfRays;
7
+ static createExplosion(
8
+ centerOfExplosion: Vector,
9
+ radius: number,
10
+ physicsBodyGroup: PhysicsBodyGroup,
11
+ severity: number,
12
+ physicsWorld: PhysicsWorld,
13
+ options?: PhysicsExplosionOptions
14
+ ): PhysicsBodyExplosionHit[];
15
+ private static createRays;
16
+ private static applyForcesToBodies;
17
+ private static pushBody;
18
+ private static createExplosionDebugVisual;
19
+ private static getTotalCountOfRays;
13
20
  }
@@ -1,80 +1,115 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ Object.defineProperty(exports, '__esModule', { value: true });
3
2
  exports.PhysicsExplosion = void 0;
4
- const helpers_lib_1 = require("helpers-lib");
5
- const pixi_1 = require("../../../pixi");
6
- const utilities_1 = require("../../../utilities");
7
- const p2js_helper_1 = require("../../helpers/p2js.helper");
8
- const ray_cast_1 = require("./ray-cast");
9
- const physics_body_explosion_hit_1 = require("./physics-body-explosion-hit");
3
+ const helpers_lib_1 = require('helpers-lib');
4
+ const pixi_1 = require('../../../pixi');
5
+ const utilities_1 = require('../../../utilities');
6
+ const p2js_helper_1 = require('../../helpers/p2js.helper');
7
+ const ray_cast_1 = require('./ray-cast');
8
+ const physics_body_explosion_hit_1 = require('./physics-body-explosion-hit');
10
9
  class PhysicsExplosion {
11
- static createExplosion(centerOfExplosion, radius, physicsBodyGroup, severity, physicsWorld, options) {
12
- let totalCountOfRays = this.getTotalCountOfRays(radius);
13
- let rayCasts = this.createRays(centerOfExplosion, radius, physicsBodyGroup, totalCountOfRays, options?.hitOnlyClosest === true, physicsWorld);
14
- let bodyExplosionHits = physics_body_explosion_hit_1.PhysicsBodyExplosionHit.convertRaysToBodyExplosionHits(rayCasts, centerOfExplosion, totalCountOfRays);
15
- this.applyForcesToBodies(centerOfExplosion, radius, severity, totalCountOfRays, bodyExplosionHits);
16
- if (options?.printRaysOn) {
17
- this.createExplosionDebugVisual(rayCasts, centerOfExplosion, radius, options.printRaysOn, physicsWorld, options.debugRayDuration);
18
- }
19
- return bodyExplosionHits;
10
+ static createExplosion(centerOfExplosion, radius, physicsBodyGroup, severity, physicsWorld, options) {
11
+ const totalCountOfRays = PhysicsExplosion.getTotalCountOfRays(radius);
12
+ const rayCasts = PhysicsExplosion.createRays(
13
+ centerOfExplosion,
14
+ radius,
15
+ physicsBodyGroup,
16
+ totalCountOfRays,
17
+ options?.hitOnlyClosest === true,
18
+ physicsWorld
19
+ );
20
+ const bodyExplosionHits = physics_body_explosion_hit_1.PhysicsBodyExplosionHit.convertRaysToBodyExplosionHits(
21
+ rayCasts,
22
+ centerOfExplosion,
23
+ totalCountOfRays
24
+ );
25
+ PhysicsExplosion.applyForcesToBodies(centerOfExplosion, radius, severity, totalCountOfRays, bodyExplosionHits);
26
+ if (options?.printRaysOn) {
27
+ PhysicsExplosion.createExplosionDebugVisual(
28
+ rayCasts,
29
+ centerOfExplosion,
30
+ radius,
31
+ options.printRaysOn,
32
+ physicsWorld,
33
+ options.debugRayDuration
34
+ );
20
35
  }
21
- static createRays(centerOfExplosion, radius, physicsBodyGroup, totalCountOfRays, hitOnlyClosest, physicsWorld) {
22
- let radianPerLine = helpers_lib_1.Radian.get360 / totalCountOfRays;
23
- let directionVector = new helpers_lib_1.Vector(0, -radius);
24
- let rotationVector = helpers_lib_1.Radian.toVector(radianPerLine);
25
- return helpers_lib_1.ArrayHelper.createEmptyArray(totalCountOfRays).map(() => {
26
- let to = centerOfExplosion.add(directionVector);
27
- directionVector = directionVector.rotate(rotationVector);
28
- let ray = new ray_cast_1.RayCast(centerOfExplosion, to, physicsWorld);
29
- hitOnlyClosest ? ray.castClosest(physicsBodyGroup) : ray.castAllFirstContacts(physicsBodyGroup);
30
- return ray;
36
+ return bodyExplosionHits;
37
+ }
38
+ static createRays(centerOfExplosion, radius, physicsBodyGroup, totalCountOfRays, hitOnlyClosest, physicsWorld) {
39
+ const radianPerLine = helpers_lib_1.Radian.get360 / totalCountOfRays;
40
+ let directionVector = new helpers_lib_1.Vector(0, -radius);
41
+ const rotationVector = helpers_lib_1.Radian.toVector(radianPerLine);
42
+ return helpers_lib_1.ArrayHelper.createEmptyArray(totalCountOfRays).map(() => {
43
+ const to = centerOfExplosion.add(directionVector);
44
+ directionVector = directionVector.rotate(rotationVector);
45
+ const ray = new ray_cast_1.RayCast(centerOfExplosion, to, physicsWorld);
46
+ hitOnlyClosest ? ray.castClosest(physicsBodyGroup) : ray.castAllFirstContacts(physicsBodyGroup);
47
+ return ray;
48
+ });
49
+ }
50
+ static applyForcesToBodies(centerOfExplosion, radius, severity, totalCountOfRays, PhysicsBodyExplosionHits) {
51
+ PhysicsBodyExplosionHits.forEach(physicsBodyExplosionHit => {
52
+ if (physicsBodyExplosionHit.isExternal) {
53
+ physicsBodyExplosionHit.raycastResults.forEach(rayCastResult => {
54
+ const force = severity * (1 - rayCastResult.fraction);
55
+ PhysicsExplosion.pushBody(
56
+ rayCastResult.body,
57
+ rayCastResult.hitPosition(),
58
+ rayCastResult.fraction,
59
+ rayCastResult.rayCast.fromTo,
60
+ force
61
+ );
31
62
  });
63
+ } else {
64
+ const p2Body = physicsBodyExplosionHit.body['p2Body'];
65
+ const vectorToCenter = helpers_lib_1.Vector.fromTo(
66
+ centerOfExplosion,
67
+ p2js_helper_1.P2JSHelper.arrayToVector(p2Body.position)
68
+ );
69
+ const fractionToCenter = vectorToCenter.length / radius;
70
+ const force = (severity * totalCountOfRays * fractionToCenter) / 2;
71
+ PhysicsExplosion.pushBody(
72
+ p2Body,
73
+ physicsBodyExplosionHit.getHitPosition(),
74
+ physicsBodyExplosionHit.fraction,
75
+ vectorToCenter,
76
+ force
77
+ );
78
+ }
79
+ });
80
+ }
81
+ static pushBody(body, hitPosition, fraction, fromTo, severity) {
82
+ const force = fromTo.normalize(severity * (1 - fraction));
83
+ const relativePoint = [hitPosition.x - body.position[0], hitPosition.y - body.position[1]];
84
+ body.applyImpulse(p2js_helper_1.P2JSHelper.vectorToArray(force), relativePoint);
85
+ }
86
+ static createExplosionDebugVisual(rayCasts, position, radius, testLayerId, physicsWorld, duration = 300) {
87
+ const lineContainer = pixi_1.Container.create().parent(testLayerId).setAlpha(0.5).attach(physicsWorld);
88
+ pixi_1.Graphics.createCircle(radius, helpers_lib_1.ColorHelper.blue)
89
+ .parent(lineContainer)
90
+ .setPosition(position)
91
+ .setAlpha(0.5)
92
+ .attach(physicsWorld);
93
+ rayCasts.forEach(ray => {
94
+ const color = ray.results.length > 0 ? helpers_lib_1.ColorHelper.red : helpers_lib_1.ColorHelper.white;
95
+ pixi_1.Graphics.createVector(position, ray.to, color).parent(lineContainer).attach(physicsWorld);
96
+ });
97
+ new utilities_1.Animator(lineContainer, 'alpha', {
98
+ duration,
99
+ animation: new utilities_1.AnimationEaseIn()
100
+ })
101
+ .animate({ alpha: 0 })
102
+ .then(() => {
103
+ lineContainer.destroy();
104
+ });
105
+ }
106
+ static getTotalCountOfRays(radius) {
107
+ if (radius > 100) {
108
+ return Math.floor(radius * 0.3);
109
+ } else {
110
+ return Math.floor(radius * 0.26 + 4);
32
111
  }
33
- static applyForcesToBodies(centerOfExplosion, radius, severity, totalCountOfRays, PhysicsBodyExplosionHits) {
34
- PhysicsBodyExplosionHits.forEach(physicsBodyExplosionHit => {
35
- if (physicsBodyExplosionHit.isExternal) {
36
- physicsBodyExplosionHit.raycastResults.forEach(rayCastResult => {
37
- let force = severity * (1 - rayCastResult.fraction);
38
- this.pushBody(rayCastResult.body, rayCastResult.hitPosition(), rayCastResult.fraction, rayCastResult.rayCast.fromTo, force);
39
- });
40
- }
41
- else {
42
- let p2Body = physicsBodyExplosionHit.body['p2Body'];
43
- let vectorToCenter = helpers_lib_1.Vector.fromTo(centerOfExplosion, p2js_helper_1.P2JSHelper.arrayToVector(p2Body.position));
44
- let fractionToCenter = vectorToCenter.length / radius;
45
- let force = (severity * totalCountOfRays * fractionToCenter) / 2;
46
- this.pushBody(p2Body, physicsBodyExplosionHit.getHitPosition(), physicsBodyExplosionHit.fraction, vectorToCenter, force);
47
- }
48
- });
49
- }
50
- static pushBody(body, hitPosition, fraction, fromTo, severity) {
51
- let force = fromTo.normalize(severity * (1 - fraction));
52
- let relativePoint = [hitPosition.x - body.position[0], hitPosition.y - body.position[1]];
53
- body.applyImpulse(p2js_helper_1.P2JSHelper.vectorToArray(force), relativePoint);
54
- }
55
- static createExplosionDebugVisual(rayCasts, position, radius, testLayerId, physicsWorld, duration = 300) {
56
- let lineContainer = pixi_1.Container.create().parent(testLayerId).setAlpha(0.5).attach(physicsWorld);
57
- pixi_1.Graphics.createCircle(radius, helpers_lib_1.ColorHelper.blue)
58
- .parent(lineContainer)
59
- .setPosition(position)
60
- .setAlpha(0.5)
61
- .attach(physicsWorld);
62
- rayCasts.forEach(ray => {
63
- let color = ray.results.length > 0 ? helpers_lib_1.ColorHelper.red : helpers_lib_1.ColorHelper.white;
64
- pixi_1.Graphics.createVector(position, ray.to, color).parent(lineContainer).attach(physicsWorld);
65
- });
66
- new utilities_1.Animator(lineContainer, 'alpha', { duration, animation: new utilities_1.AnimationEaseIn() }).animate({ alpha: 0 }).then(() => {
67
- lineContainer.destroy();
68
- });
69
- }
70
- static getTotalCountOfRays(radius) {
71
- if (radius > 100) {
72
- return Math.floor(radius * 0.3);
73
- }
74
- else {
75
- return Math.floor(radius * 0.26 + 4);
76
- }
77
- }
112
+ }
78
113
  }
79
114
  exports.PhysicsExplosion = PhysicsExplosion;
80
- //# sourceMappingURL=physics-explosion.js.map
115
+ //# sourceMappingURL=physics-explosion.js.map
@@ -3,25 +3,25 @@ import p2 from 'p2';
3
3
  import { PhysicsWorld } from '../../physics-world';
4
4
  import { PhysicsBodyGroup } from '../elements/physics-body-groups';
5
5
  export interface RayCastResult {
6
- readonly body: p2.Body;
7
- readonly hitPosition: () => Vector;
8
- readonly hitDistance: () => number;
9
- readonly isExternal: () => boolean;
10
- readonly normal: Vector;
11
- readonly fraction: number;
12
- readonly rayCast: RayCast;
6
+ readonly body: p2.Body;
7
+ readonly hitPosition: () => Vector;
8
+ readonly hitDistance: () => number;
9
+ readonly isExternal: () => boolean;
10
+ readonly normal: Vector;
11
+ readonly fraction: number;
12
+ readonly rayCast: RayCast;
13
13
  }
14
14
  export declare class RayCast {
15
- readonly from: Vector;
16
- readonly to: Vector;
17
- private physicsWorld;
18
- private _fromTo;
19
- get fromTo(): Vector;
20
- get length(): number;
21
- private _results;
22
- get results(): RayCastResult[];
23
- constructor(from: Vector, to: Vector, physicsWorld: PhysicsWorld);
24
- castClosest(physicsBodyGroup: PhysicsBodyGroup): RayCastResult | undefined;
25
- castAllFirstContacts(physicsBodyGroup: PhysicsBodyGroup): RayCastResult[];
26
- private convertP2RaycastResultToRaycastResult;
15
+ readonly from: Vector;
16
+ readonly to: Vector;
17
+ private physicsWorld;
18
+ private _fromTo;
19
+ get fromTo(): Vector;
20
+ get length(): number;
21
+ private _results;
22
+ get results(): RayCastResult[];
23
+ constructor(from: Vector, to: Vector, physicsWorld: PhysicsWorld);
24
+ castClosest(physicsBodyGroup: PhysicsBodyGroup): RayCastResult | undefined;
25
+ castAllFirstContacts(physicsBodyGroup: PhysicsBodyGroup): RayCastResult[];
26
+ private convertP2RaycastResultToRaycastResult;
27
27
  }
@@ -1,106 +1,101 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ var __importDefault = (this && this.__importDefault) || (mod => (mod && mod.__esModule ? mod : { default: mod }));
2
+ Object.defineProperty(exports, '__esModule', { value: true });
6
3
  exports.RayCast = void 0;
7
- const helpers_lib_1 = require("helpers-lib");
8
- const p2_1 = __importDefault(require("p2"));
9
- const p2js_helper_1 = require("../../helpers/p2js.helper");
10
- const physics_body_groups_1 = require("../elements/physics-body-groups");
4
+ const helpers_lib_1 = require('helpers-lib');
5
+ const p2_1 = __importDefault(require('p2'));
6
+ const p2js_helper_1 = require('../../helpers/p2js.helper');
7
+ const physics_body_groups_1 = require('../elements/physics-body-groups');
11
8
  class RayCast {
12
- get fromTo() {
13
- if (this._fromTo === undefined) {
14
- this._fromTo = helpers_lib_1.Vector.fromTo(this.from, this.to);
15
- }
16
- return this._fromTo;
17
- }
18
- get length() {
19
- return this.fromTo.length;
9
+ get fromTo() {
10
+ if (this._fromTo === undefined) {
11
+ this._fromTo = helpers_lib_1.Vector.fromTo(this.from, this.to);
20
12
  }
21
- get results() {
22
- return this._results;
13
+ return this._fromTo;
14
+ }
15
+ get length() {
16
+ return this.fromTo.length;
17
+ }
18
+ get results() {
19
+ return this._results;
20
+ }
21
+ constructor(from, to, physicsWorld) {
22
+ this._results = [];
23
+ this.from = from;
24
+ this.to = to;
25
+ this.physicsWorld = physicsWorld;
26
+ }
27
+ castClosest(physicsBodyGroup) {
28
+ const p2RaycastResult = new p2_1.default.RaycastResult();
29
+ const p2Ray = new p2_1.default.Ray({
30
+ mode: p2_1.default.Ray.CLOSEST,
31
+ from: p2js_helper_1.P2JSHelper.vectorToArray(this.from),
32
+ to: p2js_helper_1.P2JSHelper.vectorToArray(this.to),
33
+ collisionGroup: physics_body_groups_1.PhysicsBodyGroups.getGroupConstant(physicsBodyGroup),
34
+ collisionMask: physics_body_groups_1.PhysicsBodyGroups.getMaskConstant(physicsBodyGroup)
35
+ });
36
+ this.physicsWorld['p2World'].raycast(p2RaycastResult, p2Ray);
37
+ if (p2RaycastResult.hasHit()) {
38
+ const rayCastResult = this.convertP2RaycastResultToRaycastResult(p2RaycastResult);
39
+ this._results = [rayCastResult];
40
+ return rayCastResult;
41
+ } else {
42
+ this._results = [];
23
43
  }
24
- constructor(from, to, physicsWorld) {
25
- this._results = [];
26
- this.from = from;
27
- this.to = to;
28
- this.physicsWorld = physicsWorld;
29
- }
30
- castClosest(physicsBodyGroup) {
31
- let p2RaycastResult = new p2_1.default.RaycastResult();
32
- let p2Ray = new p2_1.default.Ray({
33
- mode: p2_1.default.Ray.CLOSEST,
34
- from: p2js_helper_1.P2JSHelper.vectorToArray(this.from),
35
- to: p2js_helper_1.P2JSHelper.vectorToArray(this.to),
36
- collisionGroup: physics_body_groups_1.PhysicsBodyGroups.getGroupConstant(physicsBodyGroup),
37
- collisionMask: physics_body_groups_1.PhysicsBodyGroups.getMaskConstant(physicsBodyGroup)
38
- });
39
- this.physicsWorld['p2World'].raycast(p2RaycastResult, p2Ray);
40
- if (p2RaycastResult.hasHit()) {
41
- let rayCastResult = this.convertP2RaycastResultToRaycastResult(p2RaycastResult);
42
- this._results = [rayCastResult];
43
- return rayCastResult;
44
+ }
45
+ castAllFirstContacts(physicsBodyGroup) {
46
+ const p2BodyToClosestRaycastResult = new Map();
47
+ const p2Ray = new p2_1.default.Ray({
48
+ mode: p2_1.default.Ray.ALL,
49
+ from: p2js_helper_1.P2JSHelper.vectorToArray(this.from),
50
+ to: p2js_helper_1.P2JSHelper.vectorToArray(this.to),
51
+ collisionGroup: physics_body_groups_1.PhysicsBodyGroups.getGroupConstant(physicsBodyGroup),
52
+ collisionMask: physics_body_groups_1.PhysicsBodyGroups.getMaskConstant(physicsBodyGroup),
53
+ callback: callbackResult => {
54
+ const previousItem = p2BodyToClosestRaycastResult.get(callbackResult.body);
55
+ if (!p2BodyToClosestRaycastResult.has(callbackResult.body) || callbackResult.fraction < previousItem.fraction) {
56
+ p2BodyToClosestRaycastResult.set(callbackResult.body, this.convertP2RaycastResultToRaycastResult(callbackResult));
57
+ } else if (callbackResult.fraction === previousItem.fraction && previousItem.isExternal()) {
58
+ // If the raycast starts from inside an object with multiple shapes, there is a chance that first hit is wrongfuly seen as external hit.
59
+ p2BodyToClosestRaycastResult.set(callbackResult.body, this.convertP2RaycastResultToRaycastResult(callbackResult));
44
60
  }
45
- else {
46
- this._results = [];
61
+ }
62
+ });
63
+ this.physicsWorld['p2World'].raycast(new p2_1.default.RaycastResult(), p2Ray);
64
+ const rayCastResults = Array.from(p2BodyToClosestRaycastResult.values());
65
+ this._results = rayCastResults;
66
+ return rayCastResults;
67
+ }
68
+ convertP2RaycastResultToRaycastResult(p2RaycastResult) {
69
+ const fraction = p2RaycastResult.fraction;
70
+ const normal = p2js_helper_1.P2JSHelper.arrayToVector(p2RaycastResult.normal);
71
+ let hitPosition;
72
+ let hitDistance;
73
+ let isExternal;
74
+ return {
75
+ body: p2RaycastResult.body,
76
+ hitPosition: () => {
77
+ if (hitPosition === undefined) {
78
+ hitPosition = this.from.lerp(this.to, fraction);
47
79
  }
48
- }
49
- castAllFirstContacts(physicsBodyGroup) {
50
- let p2BodyToClosestRaycastResult = new Map();
51
- let p2Ray = new p2_1.default.Ray({
52
- mode: p2_1.default.Ray.ALL,
53
- from: p2js_helper_1.P2JSHelper.vectorToArray(this.from),
54
- to: p2js_helper_1.P2JSHelper.vectorToArray(this.to),
55
- collisionGroup: physics_body_groups_1.PhysicsBodyGroups.getGroupConstant(physicsBodyGroup),
56
- collisionMask: physics_body_groups_1.PhysicsBodyGroups.getMaskConstant(physicsBodyGroup),
57
- callback: callbackResult => {
58
- let previousItem = p2BodyToClosestRaycastResult.get(callbackResult.body);
59
- if (!p2BodyToClosestRaycastResult.has(callbackResult.body) || callbackResult.fraction < previousItem.fraction) {
60
- p2BodyToClosestRaycastResult.set(callbackResult.body, this.convertP2RaycastResultToRaycastResult(callbackResult));
61
- }
62
- else if (callbackResult.fraction === previousItem.fraction && previousItem.isExternal()) {
63
- // If the raycast starts from inside an object with multiple shapes, there is a chance that first hit is wrongfuly seen as external hit.
64
- p2BodyToClosestRaycastResult.set(callbackResult.body, this.convertP2RaycastResultToRaycastResult(callbackResult));
65
- }
66
- }
67
- });
68
- this.physicsWorld['p2World'].raycast(new p2_1.default.RaycastResult(), p2Ray);
69
- let rayCastResults = Array.from(p2BodyToClosestRaycastResult.values());
70
- this._results = rayCastResults;
71
- return rayCastResults;
72
- }
73
- convertP2RaycastResultToRaycastResult(p2RaycastResult) {
74
- let fraction = p2RaycastResult.fraction;
75
- let normal = p2js_helper_1.P2JSHelper.arrayToVector(p2RaycastResult.normal);
76
- let hitPosition;
77
- let hitDistance;
78
- let isExternal;
79
- return {
80
- body: p2RaycastResult.body,
81
- hitPosition: () => {
82
- if (hitPosition === undefined) {
83
- hitPosition = this.from.lerp(this.to, fraction);
84
- }
85
- return hitPosition;
86
- },
87
- hitDistance: () => {
88
- if (hitDistance === undefined) {
89
- hitDistance = this.length * fraction;
90
- }
91
- return hitDistance;
92
- },
93
- isExternal: () => {
94
- if (isExternal === undefined) {
95
- isExternal = this.fromTo.dotProduct(normal) < 0;
96
- }
97
- return isExternal;
98
- },
99
- normal,
100
- fraction,
101
- rayCast: this
102
- };
103
- }
80
+ return hitPosition;
81
+ },
82
+ hitDistance: () => {
83
+ if (hitDistance === undefined) {
84
+ hitDistance = this.length * fraction;
85
+ }
86
+ return hitDistance;
87
+ },
88
+ isExternal: () => {
89
+ if (isExternal === undefined) {
90
+ isExternal = this.fromTo.dotProduct(normal) < 0;
91
+ }
92
+ return isExternal;
93
+ },
94
+ normal,
95
+ fraction,
96
+ rayCast: this
97
+ };
98
+ }
104
99
  }
105
100
  exports.RayCast = RayCast;
106
- //# sourceMappingURL=ray-cast.js.map
101
+ //# sourceMappingURL=ray-cast.js.map
@@ -1,21 +1,21 @@
1
1
  import * as PIXI from 'pixi.js';
2
2
  export declare class Filters {
3
- private container;
4
- private colorMatrix;
5
- private _red;
6
- private _green;
7
- private _blue;
8
- private _brightness;
9
- get brightness(): number;
10
- set brightness(value: number);
11
- get red(): number;
12
- set red(value: number);
13
- get green(): number;
14
- set green(value: number);
15
- get blue(): number;
16
- set blue(value: number);
17
- constructor(container: PIXI.Container);
18
- removeColorFilter(): void;
19
- private refreshColorMatrix;
20
- private onFilterChange;
3
+ private container;
4
+ private colorMatrix;
5
+ private _red;
6
+ private _green;
7
+ private _blue;
8
+ private _brightness;
9
+ get brightness(): number;
10
+ set brightness(value: number);
11
+ get red(): number;
12
+ set red(value: number);
13
+ get green(): number;
14
+ set green(value: number);
15
+ get blue(): number;
16
+ set blue(value: number);
17
+ constructor(container: PIXI.Container);
18
+ removeColorFilter(): void;
19
+ private refreshColorMatrix;
20
+ private onFilterChange;
21
21
  }