bard-legends-framework 0.10.9 → 0.12.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 (288) hide show
  1. package/dist/actions-performance.test.d.ts +1 -0
  2. package/dist/actions-performance.test.js +83 -0
  3. package/dist/game-entities/controller/controller.d.ts +2 -3
  4. package/dist/game-entities/controller/controller.js +9 -8
  5. package/dist/game-entities/controller/controller.test.js +2 -2
  6. package/dist/game-entities/entity/entity.d.ts +11 -9
  7. package/dist/game-entities/entity/entity.js +20 -16
  8. package/dist/game-entities/entity/entity.test.js +116 -147
  9. package/dist/game-entities/entity/helpers/entity-store.helper.d.ts +6 -9
  10. package/dist/game-entities/entity/helpers/entity-store.helper.js +22 -57
  11. package/dist/game-entities/entity/helpers/entity-store.helper.test.d.ts +1 -0
  12. package/dist/game-entities/entity/helpers/entity-store.helper.test.js +136 -0
  13. package/dist/game-entities/entity/helpers/entity-views.helper.d.ts +7 -7
  14. package/dist/game-entities/entity/helpers/entity-views.helper.js +28 -23
  15. package/dist/game-entities/entity/singleton-entity.d.ts +3 -3
  16. package/dist/game-entities/entity/singleton-entity.js +1 -1
  17. package/dist/game-entities/entity/singleton-entity.test.js +9 -31
  18. package/dist/game-entities/hard-reset.d.ts +5 -0
  19. package/dist/game-entities/hard-reset.js +14 -0
  20. package/dist/game-entities/index.d.ts +1 -3
  21. package/dist/game-entities/index.js +3 -7
  22. package/dist/game-entities/scene/scene.d.ts +15 -15
  23. package/dist/game-entities/scene/scene.js +61 -60
  24. package/dist/game-entities/scene/scene.test.js +97 -67
  25. package/dist/game-entities/service/service.d.ts +1 -4
  26. package/dist/game-entities/service/service.js +15 -14
  27. package/dist/game-entities/service/service.test.js +33 -38
  28. package/dist/game-entities/unit-test.helper.d.ts +5 -0
  29. package/dist/game-entities/unit-test.helper.js +14 -0
  30. package/dist/game-entities/update-cycle.d.ts +10 -9
  31. package/dist/game-entities/update-cycle.js +34 -23
  32. package/dist/game-entities/view/view.d.ts +10 -11
  33. package/dist/game-entities/view/view.js +17 -35
  34. package/dist/game-entities/view/view.test.js +73 -250
  35. package/dist/physics/entity-types/immovable-physics-entity.d.ts +2 -4
  36. package/dist/physics/entity-types/immovable-physics-entity.js +4 -6
  37. package/dist/physics/entity-types/movable-entity.d.ts +1 -1
  38. package/dist/physics/entity-types/movable-entity.js +6 -6
  39. package/dist/physics/entity-types/movable-physics-entity.d.ts +10 -11
  40. package/dist/physics/entity-types/movable-physics-entity.js +31 -32
  41. package/dist/physics/entity-types/physics-entity.d.ts +12 -15
  42. package/dist/physics/entity-types/physics-entity.js +30 -28
  43. package/dist/physics/interfaces.d.ts +6 -6
  44. package/dist/physics/interfaces.js +4 -4
  45. package/dist/physics/module//342/232/234/357/270/217gateways/controllers/physics-internal.controller.d.ts +16 -16
  46. package/dist/physics/module//342/232/234/357/270/217gateways/controllers/physics-internal.controller.js +22 -22
  47. package/dist/physics/module//342/232/234/357/270/217gateways/controllers/physics.controller.d.ts +20 -20
  48. package/dist/physics/module//342/232/234/357/270/217gateways/controllers/physics.controller.js +30 -30
  49. package/dist/physics/module//342/232/234/357/270/217gateways/dtos/requests.dto.d.ts +3 -3
  50. package/dist/physics/module//342/232/234/357/270/217gateways/physics-internal.gateway.d.ts +10 -10
  51. package/dist/physics/module//342/232/234/357/270/217gateways/physics-internal.gateway.js +16 -16
  52. package/dist/physics/module//342/232/234/357/270/217gateways/physics.gateway.d.ts +11 -11
  53. package/dist/physics/module//342/232/234/357/270/217gateways/physics.gateway.js +18 -18
  54. package/dist/physics/module//360/237/223/220services/collision/collisions.service.d.ts +5 -5
  55. package/dist/physics/module//360/237/223/220services/collision/collisions.service.js +17 -17
  56. package/dist/physics/module//360/237/223/220services/collision/hit-test.service.d.ts +4 -4
  57. package/dist/physics/module//360/237/223/220services/collision/hit-test.service.js +11 -11
  58. package/dist/physics/module//360/237/223/220services/collision/physics-body-group.service.d.ts +2 -2
  59. package/dist/physics/module//360/237/223/220services/collision/physics-body-group.service.js +4 -4
  60. package/dist/physics/module//360/237/223/220services/creation/border.service.d.ts +2 -2
  61. package/dist/physics/module//360/237/223/220services/creation/border.service.js +9 -9
  62. package/dist/physics/module//360/237/223/220services/creation/materials.service.d.ts +7 -7
  63. package/dist/physics/module//360/237/223/220services/creation/materials.service.js +17 -17
  64. package/dist/physics/module//360/237/223/220services/creation/physics-world.service.d.ts +11 -11
  65. package/dist/physics/module//360/237/223/220services/creation/physics-world.service.js +28 -27
  66. package/dist/physics/module//360/237/223/220services/creation/shape-creation.service.d.ts +4 -4
  67. package/dist/physics/module//360/237/223/220services/creation/shape-creation.service.js +13 -13
  68. package/dist/physics/module//360/237/223/220services/impact/eliptic-explosion.service.d.ts +9 -9
  69. package/dist/physics/module//360/237/223/220services/impact/eliptic-explosion.service.js +19 -19
  70. package/dist/physics/module//360/237/223/220services/impact/explosion.service.d.ts +9 -9
  71. package/dist/physics/module//360/237/223/220services/impact/explosion.service.js +20 -20
  72. package/dist/physics/module//360/237/223/220services/impact/ray-cast-hit-converter.d.ts +1 -1
  73. package/dist/physics/module//360/237/223/220services/impact/ray-cast-hit-converter.js +4 -4
  74. package/dist/physics/module//360/237/223/220services/path-finding/availability-grid-cache.service.d.ts +2 -2
  75. package/dist/physics/module//360/237/223/220services/path-finding/availability-grid-cache.service.js +3 -3
  76. package/dist/physics/module//360/237/223/220services/path-finding/availability-grid.service.d.ts +5 -5
  77. package/dist/physics/module//360/237/223/220services/path-finding/availability-grid.service.js +13 -13
  78. package/dist/physics/module//360/237/223/220services/path-finding/path-finder.service.d.ts +4 -4
  79. package/dist/physics/module//360/237/223/220services/path-finding/path-finder.service.js +13 -13
  80. package/dist/physics/module//360/237/223/220services/query/physics-query.service.d.ts +4 -4
  81. package/dist/physics/module//360/237/223/220services/query/physics-query.service.js +4 -4
  82. package/dist/physics/module//360/237/223/220services/ray-casting/ray-casting.service.d.ts +1 -4
  83. package/dist/physics/module//360/237/223/220services/ray-casting/ray-casting.service.js +7 -15
  84. package/dist/physics/module//360/237/223/220services/test-visuals/test-visuals.service.d.ts +9 -9
  85. package/dist/physics/module//360/237/223/220services/test-visuals/test-visuals.service.js +60 -49
  86. package/dist/physics/module//360/237/247/212entities/border.entity.d.ts +1 -1
  87. package/dist/physics/module//360/237/247/212entities/border.entity.js +3 -3
  88. package/dist/physics/module//360/237/247/212entities/physics-world.entity.js +2 -2
  89. package/dist/pixi/components/display-object-array.d.ts +5 -5
  90. package/dist/pixi/components/display-object-array.js +14 -14
  91. package/dist/pixi/components/helpers/smooth-scroller.d.ts +7 -7
  92. package/dist/pixi/components/helpers/smooth-scroller.js +23 -23
  93. package/dist/pixi/components/helpers/smooth-scroller.test.js +14 -14
  94. package/dist/pixi/components/menu/menu-entity.d.ts +14 -0
  95. package/dist/pixi/components/menu/menu-entity.js +48 -0
  96. package/dist/pixi/components/menu/menu.ui.d.ts +23 -0
  97. package/dist/pixi/components/menu/menu.ui.js +97 -0
  98. package/dist/pixi/components/mouse-wheel-listener.ui.d.ts +4 -3
  99. package/dist/pixi/components/mouse-wheel-listener.ui.js +15 -14
  100. package/dist/pixi/components/scroll-area.ui.d.ts +1 -1
  101. package/dist/pixi/components/scroll-area.ui.js +9 -9
  102. package/dist/pixi/components/scroll-mask.ui.d.ts +9 -8
  103. package/dist/pixi/components/scroll-mask.ui.js +25 -24
  104. package/dist/pixi/display-object/container-attributes.d.ts +24 -26
  105. package/dist/pixi/display-object/container-attributes.js +27 -28
  106. package/dist/pixi/display-object/container.d.ts +3 -6
  107. package/dist/pixi/display-object/container.js +2 -12
  108. package/dist/pixi/display-object/filters/base-filters/blur.filter.d.ts +9 -9
  109. package/dist/pixi/display-object/filters/base-filters/blur.filter.js +25 -25
  110. package/dist/pixi/display-object/filters/base-filters/expand-with-color.filter.d.ts +7 -7
  111. package/dist/pixi/display-object/filters/base-filters/expand-with-color.filter.js +17 -17
  112. package/dist/pixi/display-object/filters/composite-filters/glow-filter.d.ts +6 -6
  113. package/dist/pixi/display-object/filters/composite-filters/glow-filter.js +10 -11
  114. package/dist/pixi/display-object/filters/helpers/gaussian-values.helper.d.ts +2 -2
  115. package/dist/pixi/display-object/filters/helpers/gaussian-values.helper.js +5 -5
  116. package/dist/pixi/display-object/filters/templates/checking-neighbors.template.d.ts +5 -5
  117. package/dist/pixi/display-object/filters/templates/checking-neighbors.template.js +8 -8
  118. package/dist/pixi/display-object/filters/templates/plane.template.d.ts +5 -5
  119. package/dist/pixi/display-object/filters/templates/plane.template.js +7 -7
  120. package/dist/pixi/display-object/filters.d.ts +7 -7
  121. package/dist/pixi/display-object/filters.js +34 -34
  122. package/dist/pixi/display-object/index.d.ts +1 -1
  123. package/dist/pixi/display-object/objects/graphics/graphics.d.ts +9 -9
  124. package/dist/pixi/display-object/objects/graphics/graphics.js +25 -25
  125. package/dist/pixi/display-object/objects/placeholder.d.ts +1 -1
  126. package/dist/pixi/display-object/objects/placeholder.js +7 -7
  127. package/dist/pixi/display-object/objects/sprite/glow-sprite-generator.d.ts +9 -9
  128. package/dist/pixi/display-object/objects/sprite/glow-sprite-generator.js +29 -26
  129. package/dist/pixi/display-object/objects/sprite/sprite.d.ts +10 -9
  130. package/dist/pixi/display-object/objects/sprite/sprite.js +62 -53
  131. package/dist/pixi/display-object/objects/text/helpers/process-steps/1-data-in-converter/pixi-text-style-converter.d.ts +4 -3
  132. package/dist/pixi/display-object/objects/text/helpers/process-steps/1-data-in-converter/rich-text-data-in-converter.d.ts +6 -6
  133. package/dist/pixi/display-object/objects/text/helpers/process-steps/1-data-in-converter/rich-text-data-in-converter.js +16 -16
  134. package/dist/pixi/display-object/objects/text/helpers/process-steps/1-data-in-converter/rich-text-data-in-converter.test.js +28 -28
  135. package/dist/pixi/display-object/objects/text/helpers/process-steps/2-wrapping-text/consistent-space-text-wrapper.d.ts +1 -1
  136. package/dist/pixi/display-object/objects/text/helpers/process-steps/2-wrapping-text/consistent-space-text-wrapper.js +3 -3
  137. package/dist/pixi/display-object/objects/text/helpers/process-steps/2-wrapping-text/rich-text-typewriter.d.ts +17 -17
  138. package/dist/pixi/display-object/objects/text/helpers/process-steps/2-wrapping-text/rich-text-typewriter.js +62 -62
  139. package/dist/pixi/display-object/objects/text/helpers/process-steps/2-wrapping-text/rich-text-typewriter.test.js +2 -2
  140. package/dist/pixi/display-object/objects/text/helpers/process-steps/3-data-out-converter/rich-text-data-out-converter.d.ts +3 -3
  141. package/dist/pixi/display-object/objects/text/helpers/process-steps/3-data-out-converter/rich-text-data-out-converter.js +6 -6
  142. package/dist/pixi/display-object/objects/text/helpers/process-steps/3-data-out-converter/rich-text-data-out-converter.test.js +12 -12
  143. package/dist/pixi/display-object/objects/text/helpers/rich-text-to-plane-text.d.ts +2 -2
  144. package/dist/pixi/display-object/objects/text/helpers/rich-text-to-plane-text.test.js +5 -5
  145. package/dist/pixi/display-object/objects/text/rich-text.d.ts +0 -1
  146. package/dist/pixi/display-object/objects/text/rich-text.js +0 -1
  147. package/dist/pixi/display-object/objects/text/text.d.ts +9 -10
  148. package/dist/pixi/display-object/objects/text/text.js +34 -35
  149. package/dist/pixi/game.d.ts +26 -17
  150. package/dist/pixi/game.js +53 -39
  151. package/dist/pixi/helpers/game-assets.d.ts +5 -5
  152. package/dist/pixi/helpers/game-assets.js +14 -11
  153. package/dist/pixi/helpers/position-conversion.helper.d.ts +4 -4
  154. package/dist/pixi/helpers/position-conversion.helper.js +3 -3
  155. package/dist/pixi/index.d.ts +3 -37
  156. package/dist/pixi/index.js +6 -22
  157. package/dist/pixi/modules/CAMERA/camera.d.ts +5 -4
  158. package/dist/pixi/modules/CAMERA/camera.js +9 -9
  159. package/dist/pixi/modules/CAMERA//342/232/234/357/270/217gateways/camera-view.gateway.d.ts +3 -2
  160. package/dist/pixi/modules/CAMERA//342/232/234/357/270/217gateways/camera-view.gateway.js +1 -1
  161. package/dist/pixi/modules/CAMERA//342/232/234/357/270/217gateways/controllers/camera-view.controller.d.ts +3 -2
  162. package/dist/pixi/modules/CAMERA//342/232/234/357/270/217gateways/controllers/camera-view.controller.js +5 -5
  163. package/dist/pixi/modules/CAMERA//342/232/234/357/270/217gateways/controllers/camera.controller.d.ts +3 -3
  164. package/dist/pixi/modules/CAMERA//342/232/234/357/270/217gateways/controllers/camera.controller.js +7 -7
  165. package/dist/pixi/modules/CAMERA//342/232/234/357/270/217gateways/dtos/requests.dto.d.ts +8 -8
  166. package/dist/pixi/modules/CAMERA//342/232/234/357/270/217gateways/dtos/requests.dto.js +8 -8
  167. package/dist/pixi/modules/CAMERA//360/237/223/220services/camera.service.d.ts +2 -2
  168. package/dist/pixi/modules/CAMERA//360/237/223/220services/camera.service.js +12 -12
  169. package/dist/pixi/modules/CAMERA//360/237/247/212entities/camera.entity.js +4 -4
  170. package/dist/pixi/modules/CAMERA//360/237/247/251views/camera.view.d.ts +17 -16
  171. package/dist/pixi/modules/CAMERA//360/237/247/251views/camera.view.js +50 -49
  172. package/dist/pixi/pixi-definitions.d.ts +38 -0
  173. package/dist/pixi/pixi-definitions.js +37 -0
  174. package/dist/pixi/services/keyboard/keyboard.d.ts +6 -4
  175. package/dist/pixi/services/keyboard/keyboard.js +15 -13
  176. package/dist/pixi/services/mouse/mouse-target-focus.service.d.ts +12 -11
  177. package/dist/pixi/services/mouse/mouse-target-focus.service.js +31 -30
  178. package/dist/pixi/services/mouse/mouse.service.d.ts +16 -6
  179. package/dist/pixi/services/mouse/mouse.service.js +42 -22
  180. package/dist/utilities/animator/animating-content/fade-in-content.d.ts +18 -0
  181. package/dist/utilities/animator/animating-content/fade-in-content.js +37 -0
  182. package/dist/utilities/animator/animating-content/fade-in-content.test.d.ts +1 -0
  183. package/dist/utilities/animator/animating-content/fade-in-content.test.js +10 -0
  184. package/dist/utilities/animator/animating-content/slide-in-content.d.ts +37 -0
  185. package/dist/utilities/animator/animating-content/slide-in-content.js +99 -0
  186. package/dist/utilities/animator/animating-content/slide-in-content.test.d.ts +1 -0
  187. package/dist/utilities/animator/animating-content/slide-in-content.test.js +10 -0
  188. package/dist/utilities/animator/animations.d.ts +45 -0
  189. package/dist/utilities/animator/animations.js +92 -0
  190. package/dist/utilities/animator/animator/animator.d.ts +44 -0
  191. package/dist/utilities/animator/animator/animator.js +234 -0
  192. package/dist/utilities/animator/animator/animator.memory-leak.test.d.ts +1 -0
  193. package/dist/utilities/animator/animator/animator.memory-leak.test.js +73 -0
  194. package/dist/utilities/animator/animator/animator.performance.test.d.ts +1 -0
  195. package/dist/utilities/animator/animator/animator.performance.test.js +116 -0
  196. package/dist/utilities/animator/animator/animator.test.d.ts +1 -0
  197. package/dist/utilities/animator/animator/animator.test.js +1046 -0
  198. package/dist/utilities/animator/animator.d.ts +60 -0
  199. package/dist/utilities/animator/animator.js +322 -0
  200. package/dist/utilities/animator/animator.performance.test.d.ts +1 -0
  201. package/dist/utilities/animator/animator.performance.test.js +46 -0
  202. package/dist/utilities/animator/animator.test.d.ts +1 -0
  203. package/dist/utilities/animator/animator.test.js +928 -0
  204. package/dist/utilities/animator/animator2/animator.d.ts +42 -0
  205. package/dist/utilities/animator/animator2/animator.js +222 -0
  206. package/dist/utilities/animator/animator2/animator.memory-leak.test.d.ts +1 -0
  207. package/dist/utilities/animator/animator2/animator.memory-leak.test.js +73 -0
  208. package/dist/utilities/animator/animator2/animator.performance.test.d.ts +1 -0
  209. package/dist/utilities/animator/animator2/animator.performance.test.js +65 -0
  210. package/dist/utilities/animator/animator2/animator.test.d.ts +1 -0
  211. package/dist/utilities/animator/animator2/animator.test.js +1007 -0
  212. package/dist/utilities/animator/animator_old/animator.d.ts +60 -0
  213. package/dist/utilities/animator/animator_old/animator.js +337 -0
  214. package/dist/utilities/animator/animator_old/animator.performance.test.d.ts +1 -0
  215. package/dist/utilities/animator/animator_old/animator.performance.test.js +121 -0
  216. package/dist/utilities/animator/animator_old/animator.test.d.ts +1 -0
  217. package/dist/utilities/animator/animator_old/animator.test.js +996 -0
  218. package/dist/utilities/animator/content-animations/fade-in/fade-in-content.d.ts +18 -0
  219. package/dist/utilities/animator/content-animations/fade-in/fade-in-content.js +37 -0
  220. package/dist/utilities/animator/content-animations/fade-in/fade-in-content.test.d.ts +1 -0
  221. package/dist/utilities/animator/content-animations/fade-in/fade-in-content.test.js +10 -0
  222. package/dist/utilities/animator/content-animations/fade-in/fade-in-state-animation.d.ts +38 -0
  223. package/dist/utilities/animator/content-animations/fade-in/fade-in-state-animation.js +208 -0
  224. package/dist/utilities/animator/content-animations/fade-in/fade-in-state-animation.test.d.ts +1 -0
  225. package/dist/utilities/animator/content-animations/fade-in/fade-in-state-animation.test.js +439 -0
  226. package/dist/utilities/animator/content-animations/slide/slide-in-content.d.ts +41 -0
  227. package/dist/utilities/animator/content-animations/slide/slide-in-content.js +107 -0
  228. package/dist/utilities/animator/content-animations/slide/slide-in-content.test.d.ts +1 -0
  229. package/dist/utilities/animator/content-animations/slide/slide-in-content.test.js +10 -0
  230. package/dist/utilities/animator/content-animations/slide/slide-state-animation.d.ts +24 -0
  231. package/dist/utilities/animator/content-animations/slide/slide-state-animation.js +138 -0
  232. package/dist/utilities/animator/content-animations/slide/slide-state-animation.test.d.ts +1 -0
  233. package/dist/utilities/animator/content-animations/slide/slide-state-animation.test.js +307 -0
  234. package/dist/utilities/animator/content-animations/slide/state-animation.d.ts +37 -0
  235. package/dist/utilities/animator/content-animations/slide/state-animation.js +170 -0
  236. package/dist/utilities/animator/content-animations/slide/state-animation.test.d.ts +1 -0
  237. package/dist/utilities/animator/content-animations/slide/state-animation.test.js +340 -0
  238. package/dist/utilities/animator/index.d.ts +7 -0
  239. package/dist/utilities/animator/index.js +24 -0
  240. package/dist/utilities/animator/state-animation/fade-in/fade-in-content.d.ts +18 -0
  241. package/dist/utilities/animator/state-animation/fade-in/fade-in-content.js +37 -0
  242. package/dist/utilities/animator/state-animation/fade-in/fade-in-content.test.d.ts +1 -0
  243. package/dist/utilities/animator/state-animation/fade-in/fade-in-content.test.js +10 -0
  244. package/dist/utilities/animator/state-animation/fade-in/fade-in-state-animation.d.ts +32 -0
  245. package/dist/utilities/animator/state-animation/fade-in/fade-in-state-animation.js +168 -0
  246. package/dist/utilities/animator/state-animation/fade-in/fade-in-state-animation.test.d.ts +1 -0
  247. package/dist/utilities/animator/state-animation/fade-in/fade-in-state-animation.test.js +431 -0
  248. package/dist/utilities/animator/state-animation/slide/slide-in-content.d.ts +37 -0
  249. package/dist/utilities/animator/state-animation/slide/slide-in-content.js +100 -0
  250. package/dist/utilities/animator/state-animation/slide/slide-in-content.test.d.ts +1 -0
  251. package/dist/utilities/animator/state-animation/slide/slide-in-content.test.js +10 -0
  252. package/dist/utilities/animator/state-animation/slide/slide-state-animation.d.ts +24 -0
  253. package/dist/utilities/animator/state-animation/slide/slide-state-animation.js +130 -0
  254. package/dist/utilities/animator/state-animation/slide/slide-state-animation.test.d.ts +1 -0
  255. package/dist/utilities/animator/state-animation/slide/slide-state-animation.test.js +301 -0
  256. package/dist/utilities/animator/state-animation/slide-state-animation.d.ts +24 -0
  257. package/dist/utilities/animator/state-animation/slide-state-animation.js +130 -0
  258. package/dist/utilities/animator/state-animation/slide-state-animation.test.d.ts +1 -0
  259. package/dist/utilities/animator/state-animation/slide-state-animation.test.js +301 -0
  260. package/dist/utilities/animator/state-animation/state-animation.d.ts +33 -0
  261. package/dist/utilities/animator/state-animation/state-animation.js +146 -0
  262. package/dist/utilities/animator/state-animation/state-animation.test.d.ts +1 -0
  263. package/dist/utilities/animator/state-animation/state-animation.test.js +335 -0
  264. package/dist/utilities/animator/state-animation/visit-disappear-state-animation.d.ts +32 -0
  265. package/dist/utilities/animator/state-animation/visit-disappear-state-animation.js +168 -0
  266. package/dist/utilities/animator/state-animation/visit-disappear-state-animation.test.d.ts +1 -0
  267. package/dist/utilities/animator/state-animation/visit-disappear-state-animation.test.js +431 -0
  268. package/dist/utilities/data-structures/vector-set/vector-set.d.ts +7 -0
  269. package/dist/utilities/data-structures/vector-set/vector-set.js +26 -0
  270. package/dist/utilities/delta-time/delta-time.d.ts +3 -0
  271. package/dist/utilities/delta-time/delta-time.js +10 -0
  272. package/dist/utilities/grid-algorithms/closest-available-space/closest-available-space.helper.d.ts +6 -0
  273. package/dist/utilities/grid-algorithms/closest-available-space/closest-available-space.helper.js +55 -0
  274. package/dist/utilities/grid-algorithms/closest-available-space/closest-available-space.helper.test.d.ts +1 -0
  275. package/dist/utilities/grid-algorithms/closest-available-space/closest-available-space.helper.test.js +100 -0
  276. package/dist/utilities/grid-algorithms/path-finder/path-finder.d.ts +8 -0
  277. package/dist/utilities/grid-algorithms/path-finder/path-finder.js +98 -0
  278. package/dist/utilities/grid-algorithms/path-finder/path-finder.test.d.ts +1 -0
  279. package/dist/utilities/grid-algorithms/path-finder/path-finder.test.js +155 -0
  280. package/dist/utilities/grid-algorithms/position-to-grid-position-converter.d.ts +6 -0
  281. package/dist/utilities/grid-algorithms/position-to-grid-position-converter.js +17 -0
  282. package/dist/utilities/grid-algorithms/vector-field-path-finder/vector-field-path-finder.d.ts +18 -0
  283. package/dist/utilities/grid-algorithms/vector-field-path-finder/vector-field-path-finder.js +129 -0
  284. package/dist/utilities/grid-algorithms/vector-field-path-finder/vector-field-path-finder.test.d.ts +1 -0
  285. package/dist/utilities/grid-algorithms/vector-field-path-finder/vector-field-path-finder.test.js +254 -0
  286. package/dist/utilities/index.d.ts +6 -6
  287. package/dist/utilities/index.js +6 -6
  288. package/package.json +8 -6
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PathFinder = void 0;
4
+ const helpers_lib_1 = require("helpers-lib");
5
+ class PathfinderNode {
6
+ constructor(position, distanceFromStart, distanceToEnd, parent = undefined) {
7
+ this.position = position;
8
+ this.distanceFromStart = distanceFromStart;
9
+ this.distanceToEnd = distanceToEnd;
10
+ this.parent = parent;
11
+ this.closed = false;
12
+ }
13
+ get pathLength() {
14
+ return this.distanceFromStart + this.distanceToEnd;
15
+ }
16
+ isEqual(targetPosition) {
17
+ return helpers_lib_1.Vector.isEqual(this.position, targetPosition);
18
+ }
19
+ createSolutionPath(directPathAvailable) {
20
+ let path = [this.position];
21
+ let current = this.parent;
22
+ while (current !== undefined) {
23
+ path.push(current.position);
24
+ current = current.parent;
25
+ }
26
+ path.reverse();
27
+ return { directPathAvailable, path };
28
+ }
29
+ getDistance(targetPosition) {
30
+ return this.position.getDistance(targetPosition);
31
+ }
32
+ }
33
+ class PathfinderGrid {
34
+ constructor(_grid, _startingPosition) {
35
+ this._grid = _grid;
36
+ this._startingPosition = _startingPosition;
37
+ this._openMinBinaryHeap = new helpers_lib_1.BinaryHeap('min');
38
+ this._closedNodes = [];
39
+ this._nodes = new helpers_lib_1.Grid({ size: _grid.size, defaultValue: undefined });
40
+ let startingNode = new PathfinderNode(this._startingPosition, 0, Number.MAX_SAFE_INTEGER);
41
+ this._openMinBinaryHeap.add(startingNode.pathLength, startingNode);
42
+ }
43
+ get hasOpenNodes() {
44
+ return this._openMinBinaryHeap.size > 0;
45
+ }
46
+ getNeighbors(node, type) {
47
+ return this._grid
48
+ .getNeighborPositions(node.position, type)
49
+ .filter(neighborPosition => this._grid.get(neighborPosition))
50
+ .map(neighborPosition => this._nodes.get(neighborPosition) || this._createNewNode(neighborPosition));
51
+ }
52
+ popLowestPathCostNode() {
53
+ let lowestPathNode = this._openMinBinaryHeap.pop();
54
+ this._openMinBinaryHeap.delete(lowestPathNode);
55
+ lowestPathNode.closed = true;
56
+ this._closedNodes.push(lowestPathNode);
57
+ return lowestPathNode;
58
+ }
59
+ changeNodeCost(node, distanceFromStart, targetPosition, newParent) {
60
+ this._openMinBinaryHeap.delete(node);
61
+ node.distanceFromStart = distanceFromStart;
62
+ node.distanceToEnd = node.getDistance(targetPosition);
63
+ node.parent = newParent;
64
+ this._openMinBinaryHeap.add(node.pathLength, node);
65
+ }
66
+ getBestClosedNode() {
67
+ return this._closedNodes.reduce((prev, current) => (prev.distanceToEnd < current.distanceToEnd ? prev : current));
68
+ }
69
+ _createNewNode(position) {
70
+ let node = new PathfinderNode(position, Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER);
71
+ this._nodes.set(position, node);
72
+ this._openMinBinaryHeap.add(node.pathLength, node);
73
+ return node;
74
+ }
75
+ }
76
+ class PathFinder {
77
+ static findPath(grid, startingPosition, targetPosition, type) {
78
+ let pathfinderGrid = new PathfinderGrid(grid, startingPosition);
79
+ while (pathfinderGrid.hasOpenNodes) {
80
+ let currentNode = pathfinderGrid.popLowestPathCostNode();
81
+ if (currentNode.isEqual(targetPosition)) {
82
+ return currentNode.createSolutionPath(true);
83
+ }
84
+ let neighbors = pathfinderGrid.getNeighbors(currentNode, type);
85
+ for (let neighbor of neighbors) {
86
+ if (!neighbor.closed) {
87
+ let distanceFromStart = currentNode.distanceFromStart + currentNode.getDistance(neighbor.position);
88
+ if (distanceFromStart < neighbor.distanceFromStart) {
89
+ pathfinderGrid.changeNodeCost(neighbor, distanceFromStart, targetPosition, currentNode);
90
+ }
91
+ }
92
+ }
93
+ }
94
+ return pathfinderGrid.getBestClosedNode().createSolutionPath(false);
95
+ }
96
+ }
97
+ exports.PathFinder = PathFinder;
98
+ //# sourceMappingURL=path-finder.js.map
@@ -0,0 +1,155 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const helpers_lib_1 = require("helpers-lib");
4
+ const vitest_1 = require("vitest");
5
+ const path_finder_1 = require("./path-finder");
6
+ (0, vitest_1.describe)('PATH_FINDER', () => {
7
+ (0, vitest_1.test)('basic 1', () => {
8
+ let grid = new helpers_lib_1.Grid([[true]]);
9
+ let result = path_finder_1.PathFinder.findPath(grid, helpers_lib_1.Vector.zero, helpers_lib_1.Vector.zero, helpers_lib_1.GridNeighborType.All);
10
+ (0, vitest_1.expect)(result.directPathAvailable).toBe(true);
11
+ (0, vitest_1.expect)(result.path.map(value => value.toVec2())).toEqual([{ x: 0, y: 0 }]);
12
+ });
13
+ (0, vitest_1.test)('basic 2', () => {
14
+ let grid = new helpers_lib_1.Grid([[false]]);
15
+ let result = path_finder_1.PathFinder.findPath(grid, helpers_lib_1.Vector.zero, helpers_lib_1.Vector.zero, helpers_lib_1.GridNeighborType.All);
16
+ (0, vitest_1.expect)(result.directPathAvailable).toBe(true);
17
+ (0, vitest_1.expect)(result.path.map(value => value.toVec2())).toEqual([{ x: 0, y: 0 }]);
18
+ });
19
+ (0, vitest_1.test)('should give the shortest path without diagonals', () => {
20
+ let grid = new helpers_lib_1.Grid([
21
+ [true, true, true, true],
22
+ [true, false, false, true],
23
+ [true, false, false, true],
24
+ [true, false, false, true]
25
+ ]);
26
+ let result = path_finder_1.PathFinder.findPath(grid, helpers_lib_1.Vector.zero, new helpers_lib_1.Vector(3, 3), helpers_lib_1.GridNeighborType.Ortogonal);
27
+ (0, vitest_1.expect)(result.directPathAvailable).toBe(true);
28
+ (0, vitest_1.expect)(result.path.map(value => value.toVec2())).toEqual([
29
+ { x: 0, y: 0 },
30
+ { x: 1, y: 0 },
31
+ { x: 2, y: 0 },
32
+ { x: 3, y: 0 },
33
+ { x: 3, y: 1 },
34
+ { x: 3, y: 2 },
35
+ { x: 3, y: 3 }
36
+ ]);
37
+ });
38
+ (0, vitest_1.test)('should give the shortest path 1', () => {
39
+ let grid = new helpers_lib_1.Grid([
40
+ [true, true, true, true],
41
+ [true, false, false, true],
42
+ [true, false, false, true],
43
+ [true, false, false, true]
44
+ ]);
45
+ let result = path_finder_1.PathFinder.findPath(grid, helpers_lib_1.Vector.zero, new helpers_lib_1.Vector(3, 3), helpers_lib_1.GridNeighborType.All);
46
+ (0, vitest_1.expect)(result.directPathAvailable).toBe(true);
47
+ (0, vitest_1.expect)(result.path.map(value => value.toVec2())).toEqual([
48
+ { x: 0, y: 0 },
49
+ { x: 1, y: 0 },
50
+ { x: 2, y: 0 },
51
+ { x: 3, y: 1 },
52
+ { x: 3, y: 2 },
53
+ { x: 3, y: 3 }
54
+ ]);
55
+ });
56
+ (0, vitest_1.test)('should give the shortest path 2', () => {
57
+ let grid = new helpers_lib_1.Grid([
58
+ [true, true, true, false],
59
+ [true, false, false, false],
60
+ [true, true, false, true],
61
+ [true, false, true, true]
62
+ ]);
63
+ let result = path_finder_1.PathFinder.findPath(grid, helpers_lib_1.Vector.zero, new helpers_lib_1.Vector(3, 3), helpers_lib_1.GridNeighborType.All);
64
+ (0, vitest_1.expect)(result.directPathAvailable).toBe(true);
65
+ (0, vitest_1.expect)(result.path.map(value => value.toVec2())).toEqual([
66
+ { x: 0, y: 0 },
67
+ { x: 0, y: 1 },
68
+ { x: 1, y: 2 },
69
+ { x: 2, y: 3 },
70
+ { x: 3, y: 3 }
71
+ ]);
72
+ });
73
+ (0, vitest_1.test)('should give the shortest path 3', () => {
74
+ let grid = new helpers_lib_1.Grid([
75
+ [true, false, false, true, false],
76
+ [true, false, true, false, true],
77
+ [true, false, true, false, true],
78
+ [false, true, false, false, true]
79
+ ]);
80
+ let result = path_finder_1.PathFinder.findPath(grid, helpers_lib_1.Vector.zero, new helpers_lib_1.Vector(4, 3), helpers_lib_1.GridNeighborType.All);
81
+ (0, vitest_1.expect)(result.directPathAvailable).toBe(true);
82
+ (0, vitest_1.expect)(result.path.map(value => value.toVec2())).toEqual([
83
+ { x: 0, y: 0 },
84
+ { x: 0, y: 1 },
85
+ { x: 0, y: 2 },
86
+ { x: 1, y: 3 },
87
+ { x: 2, y: 2 },
88
+ { x: 2, y: 1 },
89
+ { x: 3, y: 0 },
90
+ { x: 4, y: 1 },
91
+ { x: 4, y: 2 },
92
+ { x: 4, y: 3 }
93
+ ]);
94
+ });
95
+ (0, vitest_1.test)('should give the shortest path backwards 3', () => {
96
+ let grid = new helpers_lib_1.Grid([
97
+ [true, false, false, true, false],
98
+ [true, false, true, false, true],
99
+ [true, false, true, false, true],
100
+ [false, true, false, false, true]
101
+ ]);
102
+ let result = path_finder_1.PathFinder.findPath(grid, new helpers_lib_1.Vector(4, 3), helpers_lib_1.Vector.zero, helpers_lib_1.GridNeighborType.All);
103
+ (0, vitest_1.expect)(result.directPathAvailable).toBe(true);
104
+ (0, vitest_1.expect)(result.path.map(value => value.toVec2())).toEqual([
105
+ { x: 4, y: 3 },
106
+ { x: 4, y: 2 },
107
+ { x: 4, y: 1 },
108
+ { x: 3, y: 0 },
109
+ { x: 2, y: 1 },
110
+ { x: 2, y: 2 },
111
+ { x: 1, y: 3 },
112
+ { x: 0, y: 2 },
113
+ { x: 0, y: 1 },
114
+ { x: 0, y: 0 }
115
+ ]);
116
+ });
117
+ (0, vitest_1.test)('should give the shortest path to closest position', () => {
118
+ let grid = new helpers_lib_1.Grid([
119
+ [true, true, true, false],
120
+ [true, false, false, false],
121
+ [true, false, false, false],
122
+ [true, true, false, true]
123
+ ]);
124
+ let result = path_finder_1.PathFinder.findPath(grid, helpers_lib_1.Vector.zero, new helpers_lib_1.Vector(3, 3), helpers_lib_1.GridNeighborType.All);
125
+ (0, vitest_1.expect)(result.directPathAvailable).toBe(false);
126
+ (0, vitest_1.expect)(result.path.map(value => value.toVec2())).toEqual([
127
+ { x: 0, y: 0 },
128
+ { x: 0, y: 1 },
129
+ { x: 0, y: 2 },
130
+ { x: 1, y: 3 }
131
+ ]);
132
+ });
133
+ /*
134
+ test('stress test', () => {
135
+ let size = 800;
136
+ let centerPos = new Vector(Math.floor(size / 2), Math.floor(size / 2));
137
+
138
+ let bigGrid = new Grid({ size: new Vector(size, size), defaultValue: true });
139
+ for (let x = 0; x < size; x++) {
140
+ for (let y = 0; y < size; y++) {
141
+ let vector = new Vector(x, y);
142
+ if (centerPos.getDistance(vector) < size / 4) {
143
+ bigGrid.set(vector, false);
144
+ }
145
+ }
146
+ }
147
+
148
+ let start = new Date();
149
+ PathFinder.findPath(bigGrid, Vector.zero, new Vector(-1, -1), GridNeighborType.All);
150
+ let end = new Date();
151
+
152
+ console.info(end.getTime() - start.getTime());
153
+ });*/
154
+ });
155
+ //# sourceMappingURL=path-finder.test.js.map
@@ -0,0 +1,6 @@
1
+ import { Rectangle, Vector } from 'helpers-lib';
2
+ export declare class PositionToGridPositionConverter {
3
+ static areaToGridArea(boundingBox: Rectangle, cellSize: number): Rectangle;
4
+ static positionToGridPosition(point: Vector, cellSize: number): Vector;
5
+ static gridPositionToPosition(gridPosition: Vector, cellSize: number): Vector;
6
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PositionToGridPositionConverter = void 0;
4
+ const helpers_lib_1 = require("helpers-lib");
5
+ class PositionToGridPositionConverter {
6
+ static areaToGridArea(boundingBox, cellSize) {
7
+ return new helpers_lib_1.Rectangle(this.positionToGridPosition(boundingBox.topLeft, cellSize), this.positionToGridPosition(boundingBox.bottomRight, cellSize));
8
+ }
9
+ static positionToGridPosition(point, cellSize) {
10
+ return point.divideNumber(cellSize).floor();
11
+ }
12
+ static gridPositionToPosition(gridPosition, cellSize) {
13
+ return gridPosition.add(new helpers_lib_1.Vector(0.5, 0.5)).multiplyNumber(cellSize);
14
+ }
15
+ }
16
+ exports.PositionToGridPositionConverter = PositionToGridPositionConverter;
17
+ //# sourceMappingURL=position-to-grid-position-converter.js.map
@@ -0,0 +1,18 @@
1
+ import { Grid, Radian, Rectangle, Vector } from 'helpers-lib';
2
+ export declare class VectorFieldPathFinder {
3
+ private _targetArea;
4
+ private _availabilityGrid;
5
+ private _weightGrid;
6
+ private _directionsToTargetCache;
7
+ private _highestWeight;
8
+ constructor(_targetArea: Rectangle, _availabilityGrid: Grid<boolean>);
9
+ getDirectionToTarget(startingPosition: Vector): Radian | undefined;
10
+ private _getDirectionAwayFromObstacles;
11
+ private _getBestDirectionToTarget;
12
+ private _getTheResultFromBestDirections;
13
+ private _isNextPositionAvailable;
14
+ private _getNeighborValues;
15
+ private _getAreaPositions;
16
+ private _vectorToNeighborDirection;
17
+ private _getHighestWeight;
18
+ }
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VectorFieldPathFinder = void 0;
4
+ const helpers_lib_1 = require("helpers-lib");
5
+ const vector_set_1 = require("../../data-structures/vector-set/vector-set");
6
+ class VectorFieldPathFinder {
7
+ constructor(_targetArea, _availabilityGrid) {
8
+ this._targetArea = _targetArea;
9
+ this._availabilityGrid = _availabilityGrid;
10
+ this._highestWeight = this._getHighestWeight(this._availabilityGrid.size);
11
+ this._weightGrid = new helpers_lib_1.Grid({ size: this._availabilityGrid.size, defaultValue: this._highestWeight });
12
+ this._directionsToTargetCache = new helpers_lib_1.Grid({ size: this._availabilityGrid.size, defaultValue: undefined });
13
+ let closedPositions = new vector_set_1.VectorSet();
14
+ let queue = new helpers_lib_1.Queue();
15
+ let targetPositions = this._getAreaPositions(this._availabilityGrid.cropAreaOutsideOfTheGrid(_targetArea));
16
+ targetPositions.forEach(position => {
17
+ this._weightGrid.set(position, 0);
18
+ queue.add(position);
19
+ });
20
+ while (queue.notEmpty) {
21
+ let currentPoint = queue.pop();
22
+ if (!closedPositions.has(currentPoint)) {
23
+ closedPositions.add(currentPoint);
24
+ let currentWeight = this._weightGrid.getOrFail(currentPoint);
25
+ this._getNeighborValues(currentPoint, this._availabilityGrid).forEach(neighbor => {
26
+ if (!closedPositions.has(neighbor.position)) {
27
+ let neighborsCurrentWeight = this._weightGrid.getOrFail(neighbor.position);
28
+ let newWeight = currentWeight + neighbor.distance;
29
+ if (this._availabilityGrid.getOrFail(neighbor.position) && newWeight < neighborsCurrentWeight) {
30
+ this._weightGrid.set(neighbor.position, newWeight);
31
+ queue.add(neighbor.position);
32
+ }
33
+ }
34
+ });
35
+ }
36
+ }
37
+ }
38
+ getDirectionToTarget(startingPosition) {
39
+ if (!startingPosition.isInsideRectangle(this._targetArea)) {
40
+ startingPosition = this._weightGrid.movePositionInsideGrid(startingPosition);
41
+ if (this._directionsToTargetCache.has(startingPosition)) {
42
+ return this._directionsToTargetCache.get(startingPosition);
43
+ }
44
+ else {
45
+ let neighborValues = this._getNeighborValues(startingPosition, this._availabilityGrid);
46
+ let result;
47
+ if (this._weightGrid.getOrFail(startingPosition) >= this._highestWeight) {
48
+ let atLeastOneNeighborIsAvailable = neighborValues.some(neighbor => this._availabilityGrid.get(neighbor.position));
49
+ if (atLeastOneNeighborIsAvailable) {
50
+ let atLeastOneNeighborIsUnavailable = neighborValues.some(neighbor => !this._availabilityGrid.get(neighbor.position));
51
+ if (atLeastOneNeighborIsUnavailable) {
52
+ result = this._getDirectionAwayFromObstacles(neighborValues);
53
+ }
54
+ else {
55
+ result = this._getBestDirectionToTarget(startingPosition, neighborValues);
56
+ }
57
+ }
58
+ }
59
+ else {
60
+ result = this._getBestDirectionToTarget(startingPosition, neighborValues);
61
+ }
62
+ this._directionsToTargetCache.set(startingPosition, result);
63
+ return result;
64
+ }
65
+ }
66
+ }
67
+ _getDirectionAwayFromObstacles(neighborDirections) {
68
+ let allAvailableDirections = neighborDirections
69
+ .filter(neighbor => this._availabilityGrid.get(neighbor.position))
70
+ .map(neighbor => neighbor.direction.radian);
71
+ return helpers_lib_1.Radian.getAverage(...allAvailableDirections);
72
+ }
73
+ _getBestDirectionToTarget(startingPosition, neighborDirections) {
74
+ let bestDirections = neighborDirections
75
+ .filter(neighbor => this._weightGrid.getOrFail(neighbor.position) < this._highestWeight)
76
+ .reduce((acc, neighbor) => {
77
+ let newWeight = this._weightGrid.getOrFail(neighbor.position) + neighbor.distance;
78
+ if (newWeight < acc.bestWeight) {
79
+ acc.bestDirections = [neighbor.direction];
80
+ acc.bestWeight = newWeight;
81
+ }
82
+ else if (newWeight === acc.bestWeight) {
83
+ acc.bestDirections.push(neighbor.direction);
84
+ }
85
+ return acc;
86
+ }, { bestDirections: [], bestWeight: this._highestWeight }).bestDirections;
87
+ return this._getTheResultFromBestDirections(bestDirections, startingPosition);
88
+ }
89
+ _getTheResultFromBestDirections(bestDirections, startingPosition) {
90
+ if (bestDirections.length > 0) {
91
+ let sumVector = bestDirections.reduce((acc, direction) => acc.add(direction), helpers_lib_1.Vector.zero);
92
+ if (sumVector.isZero() || !this._isNextPositionAvailable(startingPosition, sumVector)) {
93
+ return helpers_lib_1.Random.pickRandomElement(bestDirections).radian;
94
+ }
95
+ else if (bestDirections.length >= 1) {
96
+ return sumVector.radian;
97
+ }
98
+ }
99
+ }
100
+ _isNextPositionAvailable(position, direction) {
101
+ let nextPosition = position.add(this._vectorToNeighborDirection(direction));
102
+ return this._availabilityGrid.isPointWithinBounds(nextPosition) && this._availabilityGrid.getOrFail(nextPosition);
103
+ }
104
+ _getNeighborValues(position, grid) {
105
+ return this._weightGrid.getNeighborDirections(position, helpers_lib_1.GridNeighborType.All).map(neighborDirection => ({
106
+ position: position.add(neighborDirection),
107
+ direction: neighborDirection,
108
+ distance: neighborDirection.x !== 0 && neighborDirection.y !== 0 ? 14 : 10
109
+ }));
110
+ }
111
+ _getAreaPositions(area) {
112
+ let positions = [];
113
+ for (let y = area.topLeft.y; y <= area.bottomRight.y; y++) {
114
+ for (let x = area.topLeft.x; x <= area.bottomRight.x; x++) {
115
+ positions.push(new helpers_lib_1.Vector(x, y));
116
+ }
117
+ }
118
+ return positions;
119
+ }
120
+ _vectorToNeighborDirection(vector) {
121
+ let roundedVector = vector.normalize().round();
122
+ return new helpers_lib_1.Vector(roundedVector.x, roundedVector.y);
123
+ }
124
+ _getHighestWeight(size) {
125
+ return (size.x + size.y) * 20;
126
+ }
127
+ }
128
+ exports.VectorFieldPathFinder = VectorFieldPathFinder;
129
+ //# sourceMappingURL=vector-field-path-finder.js.map