dacha 0.13.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 (361) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +8 -0
  3. package/build/contrib/components/animatable/comparator-condition-component-value.d.ts +5 -0
  4. package/build/contrib/components/animatable/comparator-condition-component-value.js +12 -0
  5. package/build/contrib/components/animatable/comparator-condition-number-value.d.ts +5 -0
  6. package/build/contrib/components/animatable/comparator-condition-number-value.js +9 -0
  7. package/build/contrib/components/animatable/comparator-condition-props.d.ts +9 -0
  8. package/build/contrib/components/animatable/comparator-condition-props.js +12 -0
  9. package/build/contrib/components/animatable/comparator-condition-values.d.ts +8 -0
  10. package/build/contrib/components/animatable/comparator-condition-values.js +8 -0
  11. package/build/contrib/components/animatable/condition-props.d.ts +6 -0
  12. package/build/contrib/components/animatable/condition-props.js +6 -0
  13. package/build/contrib/components/animatable/condition.d.ts +9 -0
  14. package/build/contrib/components/animatable/condition.js +12 -0
  15. package/build/contrib/components/animatable/event-condition-props.d.ts +4 -0
  16. package/build/contrib/components/animatable/event-condition-props.js +6 -0
  17. package/build/contrib/components/animatable/group-state.d.ts +11 -0
  18. package/build/contrib/components/animatable/group-state.js +16 -0
  19. package/build/contrib/components/animatable/index.d.ts +14 -0
  20. package/build/contrib/components/animatable/index.js +41 -0
  21. package/build/contrib/components/animatable/individual-state.d.ts +7 -0
  22. package/build/contrib/components/animatable/individual-state.js +10 -0
  23. package/build/contrib/components/animatable/one-dimensional-props.d.ts +4 -0
  24. package/build/contrib/components/animatable/one-dimensional-props.js +10 -0
  25. package/build/contrib/components/animatable/pick-props.d.ts +6 -0
  26. package/build/contrib/components/animatable/pick-props.js +6 -0
  27. package/build/contrib/components/animatable/state.d.ts +10 -0
  28. package/build/contrib/components/animatable/state.js +16 -0
  29. package/build/contrib/components/animatable/substate.d.ts +9 -0
  30. package/build/contrib/components/animatable/substate.js +13 -0
  31. package/build/contrib/components/animatable/timeline.d.ts +11 -0
  32. package/build/contrib/components/animatable/timeline.js +28 -0
  33. package/build/contrib/components/animatable/transition.d.ts +9 -0
  34. package/build/contrib/components/animatable/transition.js +14 -0
  35. package/build/contrib/components/animatable/two-dimensional-props.d.ts +5 -0
  36. package/build/contrib/components/animatable/two-dimensional-props.js +12 -0
  37. package/build/contrib/components/animatable/types.d.ts +78 -0
  38. package/build/contrib/components/animatable/types.js +1 -0
  39. package/build/contrib/components/camera/index.d.ts +13 -0
  40. package/build/contrib/components/camera/index.js +21 -0
  41. package/build/contrib/components/collider-container/box-collider.d.ts +7 -0
  42. package/build/contrib/components/collider-container/box-collider.js +12 -0
  43. package/build/contrib/components/collider-container/circle-collider.d.ts +6 -0
  44. package/build/contrib/components/collider-container/circle-collider.js +10 -0
  45. package/build/contrib/components/collider-container/index.d.ts +13 -0
  46. package/build/contrib/components/collider-container/index.js +28 -0
  47. package/build/contrib/components/index.d.ts +20 -0
  48. package/build/contrib/components/index.js +10 -0
  49. package/build/contrib/components/keyboard-control/index.d.ts +28 -0
  50. package/build/contrib/components/keyboard-control/index.js +46 -0
  51. package/build/contrib/components/light/index.d.ts +20 -0
  52. package/build/contrib/components/light/index.js +18 -0
  53. package/build/contrib/components/mouse-control/index.d.ts +25 -0
  54. package/build/contrib/components/mouse-control/index.js +46 -0
  55. package/build/contrib/components/renderable/index.d.ts +44 -0
  56. package/build/contrib/components/renderable/index.js +65 -0
  57. package/build/contrib/components/renderable/material.d.ts +16 -0
  58. package/build/contrib/components/renderable/material.js +8 -0
  59. package/build/contrib/components/rigid-body/index.d.ts +20 -0
  60. package/build/contrib/components/rigid-body/index.js +29 -0
  61. package/build/contrib/components/script-bundle/index.d.ts +14 -0
  62. package/build/contrib/components/script-bundle/index.js +15 -0
  63. package/build/contrib/components/sprite/index.d.ts +35 -0
  64. package/build/contrib/components/sprite/index.js +50 -0
  65. package/build/contrib/components/sprite/material.d.ts +16 -0
  66. package/build/contrib/components/sprite/material.js +8 -0
  67. package/build/contrib/components/transform/index.d.ts +32 -0
  68. package/build/contrib/components/transform/index.js +69 -0
  69. package/build/contrib/events/index.d.ts +63 -0
  70. package/build/contrib/events/index.js +11 -0
  71. package/build/contrib/systems/animator/condition-controllers/comparator-condition-controller.d.ts +10 -0
  72. package/build/contrib/systems/animator/condition-controllers/comparator-condition-controller.js +32 -0
  73. package/build/contrib/systems/animator/condition-controllers/condition-controller.d.ts +3 -0
  74. package/build/contrib/systems/animator/condition-controllers/condition-controller.js +1 -0
  75. package/build/contrib/systems/animator/condition-controllers/event-condition-controller.d.ts +8 -0
  76. package/build/contrib/systems/animator/condition-controllers/event-condition-controller.js +18 -0
  77. package/build/contrib/systems/animator/condition-controllers/index.d.ts +3 -0
  78. package/build/contrib/systems/animator/condition-controllers/index.js +6 -0
  79. package/build/contrib/systems/animator/index.d.ts +15 -0
  80. package/build/contrib/systems/animator/index.js +93 -0
  81. package/build/contrib/systems/animator/substate-pickers/index.d.ts +4 -0
  82. package/build/contrib/systems/animator/substate-pickers/index.js +6 -0
  83. package/build/contrib/systems/animator/substate-pickers/one-dimensional-picker.d.ts +8 -0
  84. package/build/contrib/systems/animator/substate-pickers/one-dimensional-picker.js +25 -0
  85. package/build/contrib/systems/animator/substate-pickers/picker.d.ts +7 -0
  86. package/build/contrib/systems/animator/substate-pickers/picker.js +1 -0
  87. package/build/contrib/systems/animator/substate-pickers/two-dimensional-picker.d.ts +8 -0
  88. package/build/contrib/systems/animator/substate-pickers/two-dimensional-picker.js +27 -0
  89. package/build/contrib/systems/animator/utils.d.ts +3 -0
  90. package/build/contrib/systems/animator/utils.js +32 -0
  91. package/build/contrib/systems/camera-system/index.d.ts +2 -0
  92. package/build/contrib/systems/camera-system/index.js +2 -0
  93. package/build/contrib/systems/camera-system/service.d.ts +13 -0
  94. package/build/contrib/systems/camera-system/service.js +25 -0
  95. package/build/contrib/systems/camera-system/system.d.ts +16 -0
  96. package/build/contrib/systems/camera-system/system.js +65 -0
  97. package/build/contrib/systems/game-stats-meter/index.d.ts +11 -0
  98. package/build/contrib/systems/game-stats-meter/index.js +34 -0
  99. package/build/contrib/systems/index.d.ts +13 -0
  100. package/build/contrib/systems/index.js +11 -0
  101. package/build/contrib/systems/keyboard-control-system/index.d.ts +14 -0
  102. package/build/contrib/systems/keyboard-control-system/index.js +73 -0
  103. package/build/contrib/systems/keyboard-input-system/index.d.ts +10 -0
  104. package/build/contrib/systems/keyboard-input-system/index.js +28 -0
  105. package/build/contrib/systems/keyboard-input-system/input-listener.d.ts +12 -0
  106. package/build/contrib/systems/keyboard-input-system/input-listener.js +36 -0
  107. package/build/contrib/systems/mouse-control-system/index.d.ts +10 -0
  108. package/build/contrib/systems/mouse-control-system/index.js +43 -0
  109. package/build/contrib/systems/mouse-input-system/index.d.ts +10 -0
  110. package/build/contrib/systems/mouse-input-system/index.js +23 -0
  111. package/build/contrib/systems/mouse-input-system/subsystems/coordinates-projector/index.d.ts +9 -0
  112. package/build/contrib/systems/mouse-input-system/subsystems/coordinates-projector/index.js +23 -0
  113. package/build/contrib/systems/mouse-input-system/subsystems/index.d.ts +2 -0
  114. package/build/contrib/systems/mouse-input-system/subsystems/index.js +2 -0
  115. package/build/contrib/systems/mouse-input-system/subsystems/input-subsystem/index.d.ts +9 -0
  116. package/build/contrib/systems/mouse-input-system/subsystems/input-subsystem/index.js +25 -0
  117. package/build/contrib/systems/mouse-input-system/subsystems/input-subsystem/mouse-input-listener.d.ts +11 -0
  118. package/build/contrib/systems/mouse-input-system/subsystems/input-subsystem/mouse-input-listener.js +46 -0
  119. package/build/contrib/systems/physics-system/consts.d.ts +4 -0
  120. package/build/contrib/systems/physics-system/consts.js +4 -0
  121. package/build/contrib/systems/physics-system/index.d.ts +13 -0
  122. package/build/contrib/systems/physics-system/index.js +38 -0
  123. package/build/contrib/systems/physics-system/subsystems/collision-broadcast/collision.d.ts +15 -0
  124. package/build/contrib/systems/physics-system/subsystems/collision-broadcast/collision.js +31 -0
  125. package/build/contrib/systems/physics-system/subsystems/collision-broadcast/index.d.ts +12 -0
  126. package/build/contrib/systems/physics-system/subsystems/collision-broadcast/index.js +55 -0
  127. package/build/contrib/systems/physics-system/subsystems/collision-detection/aabb-builders/build-box-aabb.d.ts +2 -0
  128. package/build/contrib/systems/physics-system/subsystems/collision-detection/aabb-builders/build-box-aabb.js +13 -0
  129. package/build/contrib/systems/physics-system/subsystems/collision-detection/aabb-builders/build-circle-aabb.d.ts +2 -0
  130. package/build/contrib/systems/physics-system/subsystems/collision-detection/aabb-builders/build-circle-aabb.js +8 -0
  131. package/build/contrib/systems/physics-system/subsystems/collision-detection/aabb-builders/index.d.ts +3 -0
  132. package/build/contrib/systems/physics-system/subsystems/collision-detection/aabb-builders/index.js +6 -0
  133. package/build/contrib/systems/physics-system/subsystems/collision-detection/dispersion-calculator/index.d.ts +11 -0
  134. package/build/contrib/systems/physics-system/subsystems/collision-detection/dispersion-calculator/index.js +27 -0
  135. package/build/contrib/systems/physics-system/subsystems/collision-detection/geometry-builders/build-box-geometry.d.ts +3 -0
  136. package/build/contrib/systems/physics-system/subsystems/collision-detection/geometry-builders/build-box-geometry.js +46 -0
  137. package/build/contrib/systems/physics-system/subsystems/collision-detection/geometry-builders/build-circle-geometry.d.ts +3 -0
  138. package/build/contrib/systems/physics-system/subsystems/collision-detection/geometry-builders/build-circle-geometry.js +13 -0
  139. package/build/contrib/systems/physics-system/subsystems/collision-detection/geometry-builders/index.d.ts +4 -0
  140. package/build/contrib/systems/physics-system/subsystems/collision-detection/geometry-builders/index.js +6 -0
  141. package/build/contrib/systems/physics-system/subsystems/collision-detection/index.d.ts +29 -0
  142. package/build/contrib/systems/physics-system/subsystems/collision-detection/index.js +235 -0
  143. package/build/contrib/systems/physics-system/subsystems/collision-detection/intersection-checkers/check-box-and-circle-intersection.d.ts +16 -0
  144. package/build/contrib/systems/physics-system/subsystems/collision-detection/intersection-checkers/check-box-and-circle-intersection.js +80 -0
  145. package/build/contrib/systems/physics-system/subsystems/collision-detection/intersection-checkers/check-boxes-intersection.d.ts +6 -0
  146. package/build/contrib/systems/physics-system/subsystems/collision-detection/intersection-checkers/check-boxes-intersection.js +72 -0
  147. package/build/contrib/systems/physics-system/subsystems/collision-detection/intersection-checkers/check-circles-intersection.d.ts +11 -0
  148. package/build/contrib/systems/physics-system/subsystems/collision-detection/intersection-checkers/check-circles-intersection.js +39 -0
  149. package/build/contrib/systems/physics-system/subsystems/collision-detection/intersection-checkers/index.d.ts +3 -0
  150. package/build/contrib/systems/physics-system/subsystems/collision-detection/intersection-checkers/index.js +13 -0
  151. package/build/contrib/systems/physics-system/subsystems/collision-detection/reorientation-checkers/check-collider.d.ts +3 -0
  152. package/build/contrib/systems/physics-system/subsystems/collision-detection/reorientation-checkers/check-collider.js +16 -0
  153. package/build/contrib/systems/physics-system/subsystems/collision-detection/reorientation-checkers/check-transform.d.ts +3 -0
  154. package/build/contrib/systems/physics-system/subsystems/collision-detection/reorientation-checkers/check-transform.js +5 -0
  155. package/build/contrib/systems/physics-system/subsystems/collision-detection/reorientation-checkers/index.d.ts +2 -0
  156. package/build/contrib/systems/physics-system/subsystems/collision-detection/reorientation-checkers/index.js +2 -0
  157. package/build/contrib/systems/physics-system/subsystems/collision-detection/types.d.ts +70 -0
  158. package/build/contrib/systems/physics-system/subsystems/collision-detection/types.js +1 -0
  159. package/build/contrib/systems/physics-system/subsystems/collision-solver/index.d.ts +11 -0
  160. package/build/contrib/systems/physics-system/subsystems/collision-solver/index.js +52 -0
  161. package/build/contrib/systems/physics-system/subsystems/constraint-solver/index.d.ts +15 -0
  162. package/build/contrib/systems/physics-system/subsystems/constraint-solver/index.js +123 -0
  163. package/build/contrib/systems/physics-system/subsystems/index.d.ts +5 -0
  164. package/build/contrib/systems/physics-system/subsystems/index.js +5 -0
  165. package/build/contrib/systems/physics-system/subsystems/physics/index.d.ts +18 -0
  166. package/build/contrib/systems/physics-system/subsystems/physics/index.js +131 -0
  167. package/build/contrib/systems/physics-system/types.d.ts +4 -0
  168. package/build/contrib/systems/physics-system/types.js +1 -0
  169. package/build/contrib/systems/script-system/index.d.ts +18 -0
  170. package/build/contrib/systems/script-system/index.js +68 -0
  171. package/build/contrib/systems/script-system/types.d.ts +20 -0
  172. package/build/contrib/systems/script-system/types.js +3 -0
  173. package/build/contrib/systems/sprite-renderer/index.d.ts +2 -0
  174. package/build/contrib/systems/sprite-renderer/index.js +2 -0
  175. package/build/contrib/systems/sprite-renderer/light-subsystem/index.d.ts +13 -0
  176. package/build/contrib/systems/sprite-renderer/light-subsystem/index.js +51 -0
  177. package/build/contrib/systems/sprite-renderer/light-subsystem/light-factory.d.ts +4 -0
  178. package/build/contrib/systems/sprite-renderer/light-subsystem/light-factory.js +27 -0
  179. package/build/contrib/systems/sprite-renderer/material-factory/index.d.ts +4 -0
  180. package/build/contrib/systems/sprite-renderer/material-factory/index.js +32 -0
  181. package/build/contrib/systems/sprite-renderer/renderer.d.ts +32 -0
  182. package/build/contrib/systems/sprite-renderer/renderer.js +214 -0
  183. package/build/contrib/systems/sprite-renderer/service/index.d.ts +24 -0
  184. package/build/contrib/systems/sprite-renderer/service/index.js +52 -0
  185. package/build/contrib/systems/sprite-renderer/sort/index.d.ts +8 -0
  186. package/build/contrib/systems/sprite-renderer/sort/index.js +15 -0
  187. package/build/contrib/systems/sprite-renderer/sort/sort-by-fit.d.ts +2 -0
  188. package/build/contrib/systems/sprite-renderer/sort/sort-by-fit.js +12 -0
  189. package/build/contrib/systems/sprite-renderer/sort/sort-by-layer.d.ts +2 -0
  190. package/build/contrib/systems/sprite-renderer/sort/sort-by-layer.js +14 -0
  191. package/build/contrib/systems/sprite-renderer/sort/sort-by-x-axis.d.ts +2 -0
  192. package/build/contrib/systems/sprite-renderer/sort/sort-by-x-axis.js +15 -0
  193. package/build/contrib/systems/sprite-renderer/sort/sort-by-y-axis.d.ts +2 -0
  194. package/build/contrib/systems/sprite-renderer/sort/sort-by-y-axis.js +15 -0
  195. package/build/contrib/systems/sprite-renderer/sort/sort-by-z-axis.d.ts +2 -0
  196. package/build/contrib/systems/sprite-renderer/sort/sort-by-z-axis.js +6 -0
  197. package/build/contrib/systems/sprite-renderer/sort/types.d.ts +2 -0
  198. package/build/contrib/systems/sprite-renderer/sort/types.js +1 -0
  199. package/build/contrib/systems/sprite-renderer/sort/utils.d.ts +1 -0
  200. package/build/contrib/systems/sprite-renderer/sort/utils.js +6 -0
  201. package/build/contrib/systems/sprite-renderer/sprite-cropper.d.ts +8 -0
  202. package/build/contrib/systems/sprite-renderer/sprite-cropper.js +30 -0
  203. package/build/contrib/systems/sprite-renderer/utils.d.ts +8 -0
  204. package/build/contrib/systems/sprite-renderer/utils.js +41 -0
  205. package/build/contrib/systems/ui-bridge/index.d.ts +40 -0
  206. package/build/contrib/systems/ui-bridge/index.js +62 -0
  207. package/build/contrib/systems/ui-bridge/observer/index.d.ts +1 -0
  208. package/build/contrib/systems/ui-bridge/observer/index.js +1 -0
  209. package/build/contrib/systems/ui-bridge/observer/observer.d.ts +8 -0
  210. package/build/contrib/systems/ui-bridge/observer/observer.js +21 -0
  211. package/build/contrib/systems/webgl-render-system/color/color-reader/color-reader.d.ts +3 -0
  212. package/build/contrib/systems/webgl-render-system/color/color-reader/color-reader.js +1 -0
  213. package/build/contrib/systems/webgl-render-system/color/color-reader/consts.d.ts +3 -0
  214. package/build/contrib/systems/webgl-render-system/color/color-reader/consts.js +10 -0
  215. package/build/contrib/systems/webgl-render-system/color/color-reader/hex-color-reader.d.ts +4 -0
  216. package/build/contrib/systems/webgl-render-system/color/color-reader/hex-color-reader.js +14 -0
  217. package/build/contrib/systems/webgl-render-system/color/color-reader/index.d.ts +6 -0
  218. package/build/contrib/systems/webgl-render-system/color/color-reader/index.js +6 -0
  219. package/build/contrib/systems/webgl-render-system/color/color-reader/short-hex-color-reader.d.ts +4 -0
  220. package/build/contrib/systems/webgl-render-system/color/color-reader/short-hex-color-reader.js +11 -0
  221. package/build/contrib/systems/webgl-render-system/color/index.d.ts +7 -0
  222. package/build/contrib/systems/webgl-render-system/color/index.js +41 -0
  223. package/build/contrib/systems/webgl-render-system/consts.d.ts +9 -0
  224. package/build/contrib/systems/webgl-render-system/consts.js +9 -0
  225. package/build/contrib/systems/webgl-render-system/geometry/rectangle.d.ts +6 -0
  226. package/build/contrib/systems/webgl-render-system/geometry/rectangle.js +22 -0
  227. package/build/contrib/systems/webgl-render-system/index.d.ts +66 -0
  228. package/build/contrib/systems/webgl-render-system/index.js +405 -0
  229. package/build/contrib/systems/webgl-render-system/matrix-transformer/index.d.ts +20 -0
  230. package/build/contrib/systems/webgl-render-system/matrix-transformer/index.js +55 -0
  231. package/build/contrib/systems/webgl-render-system/shader-builder/fragment-shader.d.ts +1 -0
  232. package/build/contrib/systems/webgl-render-system/shader-builder/fragment-shader.js +29 -0
  233. package/build/contrib/systems/webgl-render-system/shader-builder/index.d.ts +11 -0
  234. package/build/contrib/systems/webgl-render-system/shader-builder/index.js +39 -0
  235. package/build/contrib/systems/webgl-render-system/shader-builder/shader-provider.d.ts +10 -0
  236. package/build/contrib/systems/webgl-render-system/shader-builder/shader-provider.js +34 -0
  237. package/build/contrib/systems/webgl-render-system/shader-builder/vertex-shader.d.ts +1 -0
  238. package/build/contrib/systems/webgl-render-system/shader-builder/vertex-shader.js +16 -0
  239. package/build/contrib/systems/webgl-render-system/texture-handlers/index.d.ts +7 -0
  240. package/build/contrib/systems/webgl-render-system/texture-handlers/index.js +6 -0
  241. package/build/contrib/systems/webgl-render-system/texture-handlers/sprite-texture-handler.d.ts +10 -0
  242. package/build/contrib/systems/webgl-render-system/texture-handlers/sprite-texture-handler.js +16 -0
  243. package/build/contrib/systems/webgl-render-system/texture-handlers/static-texture-handler.d.ts +9 -0
  244. package/build/contrib/systems/webgl-render-system/texture-handlers/static-texture-handler.js +10 -0
  245. package/build/contrib/systems/webgl-render-system/texture-handlers/texture-handler.d.ts +10 -0
  246. package/build/contrib/systems/webgl-render-system/texture-handlers/texture-handler.js +1 -0
  247. package/build/contrib/systems/webgl-render-system/utils/index.d.ts +1 -0
  248. package/build/contrib/systems/webgl-render-system/utils/index.js +1 -0
  249. package/build/contrib/systems/webgl-render-system/utils/split-to-batch.d.ts +3 -0
  250. package/build/contrib/systems/webgl-render-system/utils/split-to-batch.js +19 -0
  251. package/build/contrib/types/index.d.ts +1 -0
  252. package/build/contrib/types/index.js +1 -0
  253. package/build/contrib/types/input-events.d.ts +21 -0
  254. package/build/contrib/types/input-events.js +1 -0
  255. package/build/contrib/utils/coordinates-projection.d.ts +3 -0
  256. package/build/contrib/utils/coordinates-projection.js +11 -0
  257. package/build/contrib/utils/get-window-node.d.ts +1 -0
  258. package/build/contrib/utils/get-window-node.js +7 -0
  259. package/build/engine/actor/actor-collection.d.ts +31 -0
  260. package/build/engine/actor/actor-collection.js +98 -0
  261. package/build/engine/actor/actor-creator.d.ts +21 -0
  262. package/build/engine/actor/actor-creator.js +82 -0
  263. package/build/engine/actor/actor-spawner.d.ts +7 -0
  264. package/build/engine/actor/actor-spawner.js +12 -0
  265. package/build/engine/actor/actor.d.ts +31 -0
  266. package/build/engine/actor/actor.js +60 -0
  267. package/build/engine/actor/index.d.ts +5 -0
  268. package/build/engine/actor/index.js +4 -0
  269. package/build/engine/component/component.d.ts +13 -0
  270. package/build/engine/component/component.js +21 -0
  271. package/build/engine/component/index.d.ts +2 -0
  272. package/build/engine/component/index.js +1 -0
  273. package/build/engine/controllers/controller.d.ts +7 -0
  274. package/build/engine/controllers/controller.js +1 -0
  275. package/build/engine/controllers/index.d.ts +2 -0
  276. package/build/engine/controllers/index.js +1 -0
  277. package/build/engine/controllers/scene-controller.d.ts +11 -0
  278. package/build/engine/controllers/scene-controller.js +50 -0
  279. package/build/engine/data-lib/index.d.ts +2 -0
  280. package/build/engine/data-lib/index.js +2 -0
  281. package/build/engine/data-lib/queue.d.ts +8 -0
  282. package/build/engine/data-lib/queue.js +34 -0
  283. package/build/engine/data-lib/sort/index.d.ts +1 -0
  284. package/build/engine/data-lib/sort/index.js +1 -0
  285. package/build/engine/data-lib/sort/insertion-sort.d.ts +1 -0
  286. package/build/engine/data-lib/sort/insertion-sort.js +14 -0
  287. package/build/engine/engine.d.ts +22 -0
  288. package/build/engine/engine.js +89 -0
  289. package/build/engine/entity/entity.d.ts +17 -0
  290. package/build/engine/entity/entity.js +40 -0
  291. package/build/engine/entity/index.d.ts +3 -0
  292. package/build/engine/entity/index.js +2 -0
  293. package/build/engine/entity/utils.d.ts +3 -0
  294. package/build/engine/entity/utils.js +26 -0
  295. package/build/engine/event-target/event-queue.d.ts +9 -0
  296. package/build/engine/event-target/event-queue.js +16 -0
  297. package/build/engine/event-target/event-target.d.ts +13 -0
  298. package/build/engine/event-target/event-target.js +59 -0
  299. package/build/engine/event-target/index.d.ts +4 -0
  300. package/build/engine/event-target/index.js +2 -0
  301. package/build/engine/event-target/types.d.ts +12 -0
  302. package/build/engine/event-target/types.js +1 -0
  303. package/build/engine/events/index.d.ts +51 -0
  304. package/build/engine/events/index.js +8 -0
  305. package/build/engine/game-loop.d.ts +14 -0
  306. package/build/engine/game-loop.js +51 -0
  307. package/build/engine/index.d.ts +1 -0
  308. package/build/engine/index.js +1 -0
  309. package/build/engine/math-lib/index.d.ts +3 -0
  310. package/build/engine/math-lib/index.js +3 -0
  311. package/build/engine/math-lib/math/ops.d.ts +14 -0
  312. package/build/engine/math-lib/math/ops.js +52 -0
  313. package/build/engine/math-lib/vector/ops.d.ts +38 -0
  314. package/build/engine/math-lib/vector/ops.js +76 -0
  315. package/build/engine/math-lib/vector/vector2.d.ts +10 -0
  316. package/build/engine/math-lib/vector/vector2.js +25 -0
  317. package/build/engine/resource-loader/index.d.ts +1 -0
  318. package/build/engine/resource-loader/index.js +1 -0
  319. package/build/engine/resource-loader/loaders/image-loader.d.ts +7 -0
  320. package/build/engine/resource-loader/loaders/image-loader.js +21 -0
  321. package/build/engine/resource-loader/loaders/index.d.ts +4 -0
  322. package/build/engine/resource-loader/loaders/index.js +6 -0
  323. package/build/engine/resource-loader/loaders/json-loader.d.ts +7 -0
  324. package/build/engine/resource-loader/loaders/json-loader.js +14 -0
  325. package/build/engine/resource-loader/loaders/loader.d.ts +4 -0
  326. package/build/engine/resource-loader/loaders/loader.js +1 -0
  327. package/build/engine/resource-loader/resource-loader-qualifier.d.ts +7 -0
  328. package/build/engine/resource-loader/resource-loader-qualifier.js +18 -0
  329. package/build/engine/resource-loader/resource-loader.d.ts +5 -0
  330. package/build/engine/resource-loader/resource-loader.js +17 -0
  331. package/build/engine/scene/index.d.ts +3 -0
  332. package/build/engine/scene/index.js +2 -0
  333. package/build/engine/scene/scene-provider.d.ts +50 -0
  334. package/build/engine/scene/scene-provider.js +151 -0
  335. package/build/engine/scene/scene.d.ts +46 -0
  336. package/build/engine/scene/scene.js +98 -0
  337. package/build/engine/system/index.d.ts +2 -0
  338. package/build/engine/system/index.js +1 -0
  339. package/build/engine/system/system.d.ts +25 -0
  340. package/build/engine/system/system.js +3 -0
  341. package/build/engine/template/index.d.ts +2 -0
  342. package/build/engine/template/index.js +2 -0
  343. package/build/engine/template/template-collection.d.ts +13 -0
  344. package/build/engine/template/template-collection.js +44 -0
  345. package/build/engine/template/template.d.ts +17 -0
  346. package/build/engine/template/template.js +43 -0
  347. package/build/engine/types/config.d.ts +47 -0
  348. package/build/engine/types/config.js +1 -0
  349. package/build/engine/types/index.d.ts +1 -0
  350. package/build/engine/types/index.js +1 -0
  351. package/build/events/index.d.ts +4 -0
  352. package/build/events/index.js +2 -0
  353. package/build/index.d.ts +15 -0
  354. package/build/index.js +11 -0
  355. package/build/types/events.d.ts +9 -0
  356. package/build/types/events.js +1 -0
  357. package/build/types/global.d.ts +2 -0
  358. package/build/types/global.js +2 -0
  359. package/build/types/utils.d.ts +1 -0
  360. package/build/types/utils.js +1 -0
  361. package/package.json +63 -0
@@ -0,0 +1,34 @@
1
+ export class Queue {
2
+ head;
3
+ tail;
4
+ constructor() {
5
+ this.head = null;
6
+ this.tail = null;
7
+ }
8
+ add(value) {
9
+ const node = { next: null, value };
10
+ if (this.tail === null) {
11
+ this.head = node;
12
+ this.tail = node;
13
+ return;
14
+ }
15
+ this.tail.next = node;
16
+ this.tail = node;
17
+ }
18
+ poll() {
19
+ if (this.head === null) {
20
+ return null;
21
+ }
22
+ const node = this.head;
23
+ if (this.head === this.tail) {
24
+ this.head = null;
25
+ this.tail = null;
26
+ return node.value;
27
+ }
28
+ this.head = this.head.next;
29
+ return node.value;
30
+ }
31
+ peek() {
32
+ return this.head ? this.head.value : null;
33
+ }
34
+ }
@@ -0,0 +1 @@
1
+ export { insertionSort } from './insertion-sort';
@@ -0,0 +1 @@
1
+ export { insertionSort } from './insertion-sort';
@@ -0,0 +1 @@
1
+ export declare const insertionSort: <T>(array: T[], compareFn: (arg1: T, arg2: T) => number) => T[];
@@ -0,0 +1,14 @@
1
+ export const insertionSort = (array, compareFn) => {
2
+ let i = 1;
3
+ while (i < array.length) {
4
+ let j = i;
5
+ const x = array[j];
6
+ while (j > 0 && compareFn(x, array[j - 1]) < 0) {
7
+ array[j] = array[j - 1];
8
+ j -= 1;
9
+ }
10
+ array[j] = x;
11
+ i += 1;
12
+ }
13
+ return array;
14
+ };
@@ -0,0 +1,22 @@
1
+ import type { SystemConstructor } from './system';
2
+ import type { ComponentConstructor } from './component';
3
+ import type { Config } from './types';
4
+ export interface EngineOptions {
5
+ config: Config;
6
+ systems: Array<SystemConstructor>;
7
+ components: Array<ComponentConstructor>;
8
+ resources?: Record<string, unknown>;
9
+ }
10
+ export declare class Engine {
11
+ private options;
12
+ private gameLoop?;
13
+ private sceneProvider?;
14
+ constructor(options: EngineOptions);
15
+ private handleWindowBlur;
16
+ private handleWindowFocus;
17
+ private addWindowListeners;
18
+ private removeWindowListeners;
19
+ play(): Promise<void>;
20
+ pause(): void;
21
+ stop(): void;
22
+ }
@@ -0,0 +1,89 @@
1
+ import { SceneProvider } from './scene/scene-provider';
2
+ import { ActorCreator } from './actor';
3
+ import { TemplateCollection } from './template';
4
+ import { GameLoop } from './game-loop';
5
+ import { SceneController } from './controllers';
6
+ export class Engine {
7
+ options;
8
+ gameLoop;
9
+ sceneProvider;
10
+ constructor(options) {
11
+ this.options = options;
12
+ }
13
+ handleWindowBlur = () => {
14
+ this.gameLoop?.stop();
15
+ };
16
+ handleWindowFocus = () => {
17
+ this.gameLoop?.run();
18
+ };
19
+ addWindowListeners() {
20
+ window.addEventListener('blur', this.handleWindowBlur);
21
+ window.addEventListener('focus', this.handleWindowFocus);
22
+ }
23
+ removeWindowListeners() {
24
+ window.removeEventListener('blur', this.handleWindowBlur);
25
+ window.removeEventListener('focus', this.handleWindowFocus);
26
+ }
27
+ async play() {
28
+ if (this.sceneProvider !== undefined && this.gameLoop !== undefined) {
29
+ this.gameLoop.run();
30
+ this.addWindowListeners();
31
+ return;
32
+ }
33
+ const { config: { templates, scenes, levels, loaders, startSceneId, startLoaderId, globalOptions, }, systems, components, resources = {}, } = this.options;
34
+ if (!startSceneId) {
35
+ throw new Error('Can\'t start the engine without starting scene. Please specify start scene id.');
36
+ }
37
+ for (let i = 0; i < components.length; i += 1) {
38
+ if (components[i].componentName === undefined) {
39
+ throw new Error(`Missing componentName field for ${components[i].name} component.`);
40
+ }
41
+ }
42
+ for (let i = 0; i < systems.length; i += 1) {
43
+ if (systems[i].systemName === undefined) {
44
+ throw new Error(`Missing systemName field for ${systems[i].name} system.`);
45
+ }
46
+ }
47
+ const templateCollection = new TemplateCollection(components);
48
+ for (let i = 0; i < templates.length; i += 1) {
49
+ templateCollection.register(templates[i]);
50
+ }
51
+ const actorCreator = new ActorCreator(components, templateCollection);
52
+ this.sceneProvider = new SceneProvider({
53
+ scenes,
54
+ levels,
55
+ loaders,
56
+ systems,
57
+ resources,
58
+ globalOptions,
59
+ actorCreator,
60
+ templateCollection,
61
+ });
62
+ await this.sceneProvider.prepareLoaders();
63
+ const asyncLoading = this.sceneProvider.loadScene({
64
+ sceneId: startSceneId,
65
+ loaderId: startLoaderId,
66
+ levelId: null,
67
+ });
68
+ if (asyncLoading && !startLoaderId) {
69
+ await asyncLoading;
70
+ this.sceneProvider.moveToLoaded();
71
+ }
72
+ this.gameLoop = new GameLoop(this.sceneProvider, [
73
+ new SceneController({ sceneProvider: this.sceneProvider }),
74
+ ]);
75
+ this.gameLoop.run();
76
+ this.addWindowListeners();
77
+ }
78
+ pause() {
79
+ this.gameLoop?.stop();
80
+ this.removeWindowListeners();
81
+ }
82
+ stop() {
83
+ this.gameLoop?.stop();
84
+ this.sceneProvider?.leaveCurrentScene();
85
+ this.removeWindowListeners();
86
+ this.gameLoop = undefined;
87
+ this.sceneProvider = undefined;
88
+ }
89
+ }
@@ -0,0 +1,17 @@
1
+ import { EventTarget } from '../event-target';
2
+ export interface EntityOptions {
3
+ id: string;
4
+ name: string;
5
+ }
6
+ export declare class Entity extends EventTarget {
7
+ readonly id: string;
8
+ readonly name: string;
9
+ children: Array<Entity>;
10
+ parent: Entity | null;
11
+ constructor({ id, name }: EntityOptions);
12
+ appendChild(child: Entity): void;
13
+ removeChild(child: Entity): void;
14
+ remove(): void;
15
+ getEntityById(id: string): Entity | undefined;
16
+ getEntityByName(name: string): Entity | undefined;
17
+ }
@@ -0,0 +1,40 @@
1
+ import { EventTarget } from '../event-target';
2
+ import { AddChildEntity, RemoveChildEntity } from '../events';
3
+ import { findEntity } from './utils';
4
+ export class Entity extends EventTarget {
5
+ id;
6
+ name;
7
+ children;
8
+ constructor({ id, name }) {
9
+ super();
10
+ this.id = id;
11
+ this.name = name;
12
+ this.children = [];
13
+ }
14
+ appendChild(child) {
15
+ child.parent = this;
16
+ this.children.push(child);
17
+ this.dispatchEventImmediately(AddChildEntity, { child });
18
+ }
19
+ removeChild(child) {
20
+ const index = this.children.findIndex((currentChild) => currentChild === child);
21
+ if (index === -1) {
22
+ return;
23
+ }
24
+ child.parent = null;
25
+ this.children.splice(index, 1);
26
+ this.dispatchEventImmediately(RemoveChildEntity, { child });
27
+ }
28
+ remove() {
29
+ if (this.parent === null) {
30
+ return;
31
+ }
32
+ this.parent.removeChild(this);
33
+ }
34
+ getEntityById(id) {
35
+ return findEntity(this, (entity) => entity.id === id);
36
+ }
37
+ getEntityByName(name) {
38
+ return findEntity(this, (entity) => entity.name === name);
39
+ }
40
+ }
@@ -0,0 +1,3 @@
1
+ export { Entity } from './entity';
2
+ export type { EntityOptions } from './entity';
3
+ export { traverseEntity, findEntity } from './utils';
@@ -0,0 +1,2 @@
1
+ export { Entity } from './entity';
2
+ export { traverseEntity, findEntity } from './utils';
@@ -0,0 +1,3 @@
1
+ import type { Entity } from './entity';
2
+ export declare const traverseEntity: <T extends Entity>(entity: T, callback: (entity: T) => void) => void;
3
+ export declare const findEntity: <T extends Entity>(entity: T, predicate: (entity: T) => boolean) => T | undefined;
@@ -0,0 +1,26 @@
1
+ import { Queue } from '../data-lib';
2
+ export const traverseEntity = (entity, callback) => {
3
+ const queue = new Queue();
4
+ queue.add(entity);
5
+ while (queue.peek() !== null) {
6
+ const currentEntity = queue.poll();
7
+ callback(currentEntity);
8
+ currentEntity.children.forEach((child) => {
9
+ queue.add(child);
10
+ });
11
+ }
12
+ };
13
+ export const findEntity = (entity, predicate) => {
14
+ const queue = new Queue();
15
+ queue.add(entity);
16
+ while (queue.peek() !== null) {
17
+ const currentEntity = queue.poll();
18
+ if (predicate(currentEntity)) {
19
+ return currentEntity;
20
+ }
21
+ currentEntity.children.forEach((child) => {
22
+ queue.add(child);
23
+ });
24
+ }
25
+ return undefined;
26
+ };
@@ -0,0 +1,9 @@
1
+ type EventExecutor = () => void;
2
+ export declare class EventQueue {
3
+ private executorQueue;
4
+ constructor();
5
+ add(executor: EventExecutor): void;
6
+ update(): void;
7
+ }
8
+ export declare const eventQueue: EventQueue;
9
+ export {};
@@ -0,0 +1,16 @@
1
+ import { Queue } from '../data-lib';
2
+ export class EventQueue {
3
+ executorQueue;
4
+ constructor() {
5
+ this.executorQueue = new Queue();
6
+ }
7
+ add(executor) {
8
+ this.executorQueue.add(executor);
9
+ }
10
+ update() {
11
+ while (this.executorQueue.peek() !== null) {
12
+ this.executorQueue.poll()?.();
13
+ }
14
+ }
15
+ }
16
+ export const eventQueue = new EventQueue();
@@ -0,0 +1,13 @@
1
+ import type { EventType, ListenerFn } from './types';
2
+ export declare class EventTarget {
3
+ parent: EventTarget | null;
4
+ private listenersMap;
5
+ constructor();
6
+ addEventListener(type: EventType, callback: ListenerFn): void;
7
+ getEventListeners(type: EventType): Array<ListenerFn> | undefined;
8
+ removeEventListener(type: EventType, callback: ListenerFn): void;
9
+ removeAllListeners(): void;
10
+ private handleEvent;
11
+ dispatchEvent(type: EventType, payload?: Record<string, unknown>): void;
12
+ dispatchEventImmediately(type: EventType, payload?: Record<string, unknown>): void;
13
+ }
@@ -0,0 +1,59 @@
1
+ import { eventQueue } from './event-queue';
2
+ export class EventTarget {
3
+ parent;
4
+ listenersMap;
5
+ constructor() {
6
+ this.listenersMap = new Map();
7
+ this.parent = null;
8
+ }
9
+ addEventListener(type, callback) {
10
+ if (!this.listenersMap.has(type)) {
11
+ this.listenersMap.set(type, []);
12
+ }
13
+ this.listenersMap.get(type)?.push(callback);
14
+ }
15
+ getEventListeners(type) {
16
+ return this.listenersMap.get(type);
17
+ }
18
+ removeEventListener(type, callback) {
19
+ if (!this.listenersMap.has(type)) {
20
+ return;
21
+ }
22
+ const nextListeners = this.listenersMap.get(type).filter((listener) => listener !== callback);
23
+ if (nextListeners.length === 0) {
24
+ this.listenersMap.delete(type);
25
+ }
26
+ else {
27
+ this.listenersMap.set(type, nextListeners);
28
+ }
29
+ }
30
+ removeAllListeners() {
31
+ this.listenersMap.clear();
32
+ }
33
+ handleEvent(type, payload) {
34
+ let isPropagationStopped = false;
35
+ const stopPropagation = () => {
36
+ isPropagationStopped = true;
37
+ };
38
+ const event = {
39
+ ...payload,
40
+ type,
41
+ target: this,
42
+ currentTarget: this,
43
+ stopPropagation,
44
+ };
45
+ let target = this;
46
+ while (target !== null && !isPropagationStopped) {
47
+ event.currentTarget = target;
48
+ const listeners = target.getEventListeners(type);
49
+ listeners?.forEach((listener) => listener(event));
50
+ target = target.parent;
51
+ }
52
+ }
53
+ dispatchEvent(type, payload) {
54
+ eventQueue.add(this.handleEvent.bind(this, type, payload));
55
+ }
56
+ dispatchEventImmediately(type, payload) {
57
+ this.handleEvent(type, payload);
58
+ }
59
+ }
@@ -0,0 +1,4 @@
1
+ export { EventTarget } from './event-target';
2
+ export { eventQueue } from './event-queue';
3
+ export type { EventQueue } from './event-queue';
4
+ export type { Event, EventType, EventPayload, ListenerFn, } from './types';
@@ -0,0 +1,2 @@
1
+ export { EventTarget } from './event-target';
2
+ export { eventQueue } from './event-queue';
@@ -0,0 +1,12 @@
1
+ import type { EventTarget } from './event-target';
2
+ export type EventType = string | symbol;
3
+ export interface Event<T = EventTarget> {
4
+ type: EventType;
5
+ target: T;
6
+ currentTarget: EventTarget;
7
+ stopPropagation: () => void;
8
+ }
9
+ type EventField = 'type' | 'target' | 'currentTarget' | 'stopPropagation';
10
+ export type ListenerFn = (event: Event) => void;
11
+ export type EventPayload<T, K> = K extends keyof T ? Record<string, never> extends Omit<T[K], EventField> ? [Omit<T[K], EventField>?] : [Omit<T[K], EventField>] : [Record<string, unknown>?];
12
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,51 @@
1
+ import type { SceneLoadOptions, LevelLoadOptions } from '../scene';
2
+ import type { Actor } from '../actor';
3
+ import type { ActorEvent, SceneEvent } from '../../types/events';
4
+ import type { Event } from '../event-target';
5
+ import type { Entity } from '../entity';
6
+ export declare const AddChildEntity = "AddChildEntity";
7
+ export declare const RemoveChildEntity = "RemoveChildEntity";
8
+ export declare const AddActor = "AddActor";
9
+ export declare const RemoveActor = "RemoveActor";
10
+ export declare const LoadScene = "LoadScene";
11
+ export declare const LoadLevel = "LoadLevel";
12
+ export declare const AddComponent = "AddComponent";
13
+ export declare const RemoveComponent = "RemoveComponent";
14
+ export type AddChildEntityEvent = Event<Entity> & {
15
+ child: Entity;
16
+ };
17
+ export type RemoveChildEntityEvent = Event<Entity> & {
18
+ child: Entity;
19
+ };
20
+ export type AddComponentEvent = ActorEvent<{
21
+ componentName: string;
22
+ }>;
23
+ export type RemoveComponentEvent = ActorEvent<{
24
+ componentName: string;
25
+ }>;
26
+ export type AddActorEvent = SceneEvent<{
27
+ actor: Actor;
28
+ }>;
29
+ export type RemoveActorEvent = SceneEvent<{
30
+ actor: Actor;
31
+ }>;
32
+ export type LoadSceneEvent = SceneEvent<SceneLoadOptions>;
33
+ export type LoadLevelEvent = SceneEvent<LevelLoadOptions>;
34
+ export interface ActorCollectionEventMap {
35
+ [AddActor]: AddActorEvent;
36
+ [RemoveActor]: RemoveActorEvent;
37
+ }
38
+ export interface EntityEventMap {
39
+ [AddChildEntity]: AddChildEntityEvent;
40
+ [RemoveChildEntity]: RemoveChildEntityEvent;
41
+ }
42
+ declare module '../../types/events' {
43
+ interface SceneEventMap extends EntityEventMap {
44
+ [LoadScene]: LoadSceneEvent;
45
+ [LoadLevel]: LoadLevelEvent;
46
+ }
47
+ interface ActorEventMap extends EntityEventMap {
48
+ [AddComponent]: AddComponentEvent;
49
+ [RemoveComponent]: RemoveComponentEvent;
50
+ }
51
+ }
@@ -0,0 +1,8 @@
1
+ export const AddChildEntity = 'AddChildEntity';
2
+ export const RemoveChildEntity = 'RemoveChildEntity';
3
+ export const AddActor = 'AddActor';
4
+ export const RemoveActor = 'RemoveActor';
5
+ export const LoadScene = 'LoadScene';
6
+ export const LoadLevel = 'LoadLevel';
7
+ export const AddComponent = 'AddComponent';
8
+ export const RemoveComponent = 'RemoveComponent';
@@ -0,0 +1,14 @@
1
+ import type { SceneProvider } from './scene';
2
+ import type { Controller } from './controllers';
3
+ export declare class GameLoop {
4
+ private sceneProvider;
5
+ private controllers;
6
+ private gameLoopId;
7
+ private previous;
8
+ private lag;
9
+ private bindedTick;
10
+ constructor(sceneProvider: SceneProvider, controllers: Array<Controller>);
11
+ private tick;
12
+ run(): void;
13
+ stop(): void;
14
+ }
@@ -0,0 +1,51 @@
1
+ import { eventQueue } from './event-target';
2
+ const MS_PER_UPDATE = 1000 / 50;
3
+ export class GameLoop {
4
+ sceneProvider;
5
+ controllers;
6
+ gameLoopId;
7
+ previous;
8
+ lag;
9
+ bindedTick;
10
+ constructor(sceneProvider, controllers) {
11
+ this.sceneProvider = sceneProvider;
12
+ this.controllers = controllers;
13
+ this.gameLoopId = 0;
14
+ this.previous = 0;
15
+ this.lag = 0;
16
+ this.bindedTick = this.tick.bind(this);
17
+ }
18
+ tick() {
19
+ eventQueue.update();
20
+ const current = performance.now();
21
+ const elapsed = current - this.previous;
22
+ this.lag += elapsed;
23
+ const currentScene = this.sceneProvider.getCurrentScene();
24
+ const fixedUpdateOptions = { deltaTime: MS_PER_UPDATE };
25
+ while (this.lag >= MS_PER_UPDATE) {
26
+ currentScene?.systems.forEach((system) => {
27
+ system.fixedUpdate?.(fixedUpdateOptions);
28
+ });
29
+ this.lag -= MS_PER_UPDATE;
30
+ }
31
+ const options = { deltaTime: elapsed };
32
+ currentScene?.systems.forEach((system) => {
33
+ system.update?.(options);
34
+ });
35
+ this.controllers.forEach((controller) => {
36
+ controller.update();
37
+ });
38
+ this.previous = current;
39
+ this.gameLoopId = requestAnimationFrame(this.bindedTick);
40
+ }
41
+ run() {
42
+ this.previous = performance.now();
43
+ this.lag = 0;
44
+ this.gameLoopId = requestAnimationFrame(this.bindedTick);
45
+ }
46
+ stop() {
47
+ if (this.gameLoopId) {
48
+ cancelAnimationFrame(this.gameLoopId);
49
+ }
50
+ }
51
+ }
@@ -0,0 +1 @@
1
+ export { Engine } from './engine';
@@ -0,0 +1 @@
1
+ export { Engine } from './engine';
@@ -0,0 +1,3 @@
1
+ export * from './vector/vector2';
2
+ export * from './vector/ops';
3
+ export * from './math/ops';
@@ -0,0 +1,3 @@
1
+ export * from './vector/vector2';
2
+ export * from './vector/ops';
3
+ export * from './math/ops';
@@ -0,0 +1,14 @@
1
+ interface Point {
2
+ x: number;
3
+ y: number;
4
+ }
5
+ export declare class MathOps {
6
+ static random(min: number, max: number): number;
7
+ static radToDeg(rad: number): number;
8
+ static degToRad(deg: number): number;
9
+ static getAngleBetweenTwoPoints(x1: number, x2: number, y1: number, y2: number): number;
10
+ static getDistanceBetweenTwoPoints(x1: number, x2: number, y1: number, y2: number): number;
11
+ static getLinePoint(angle: number, x: number, y: number, length: number): Point;
12
+ static clamp(value: number, min: number, max: number): number;
13
+ }
14
+ export {};
@@ -0,0 +1,52 @@
1
+ export class MathOps {
2
+ /*
3
+ * Generate random number in [min, max] range
4
+ */
5
+ static random(min, max) {
6
+ return Math.floor(min + (Math.random() * (max + 1 - min)));
7
+ }
8
+ /*
9
+ * Convert radians to degrees
10
+ */
11
+ static radToDeg(rad) {
12
+ const angleInDegrees = (rad * 180) / Math.PI;
13
+ return angleInDegrees < 0 ? angleInDegrees + 360 : angleInDegrees;
14
+ }
15
+ /*
16
+ * Convert degrees to radians
17
+ */
18
+ static degToRad(deg) {
19
+ return (deg * Math.PI) / 180;
20
+ }
21
+ /*
22
+ * Calculate angle between two point in radians
23
+ */
24
+ static getAngleBetweenTwoPoints(x1, x2, y1, y2) {
25
+ return Math.atan2(y1 - y2, x1 - x2);
26
+ }
27
+ /*
28
+ * Calculate distance between two point
29
+ */
30
+ static getDistanceBetweenTwoPoints(x1, x2, y1, y2) {
31
+ return Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);
32
+ }
33
+ /*
34
+ * Calculate point on line
35
+ */
36
+ static getLinePoint(angle, x, y, length) {
37
+ const angleInRad = this.degToRad(angle);
38
+ return {
39
+ x: x - (length * Math.cos(angleInRad)),
40
+ y: y - (length * Math.sin(angleInRad)),
41
+ };
42
+ }
43
+ static clamp(value, min, max) {
44
+ if (value < min) {
45
+ return min;
46
+ }
47
+ if (value > max) {
48
+ return max;
49
+ }
50
+ return value;
51
+ }
52
+ }
@@ -0,0 +1,38 @@
1
+ import { Vector2 } from './vector2';
2
+ type Point = {
3
+ x: number;
4
+ y: number;
5
+ };
6
+ type Edge = {
7
+ point1: Point;
8
+ point2: Point;
9
+ };
10
+ export declare class VectorOps {
11
+ static fixCalcError(value: number): number;
12
+ static getVectorByAngle(angle: number): Vector2;
13
+ static getNormal(x1: number, x2: number, y1: number, y2: number): Vector2;
14
+ static dotProduct(point: Point, vector: Vector2): number;
15
+ /**
16
+ * Projects a point onto a given edge, returning the closest point
17
+ *
18
+ * @param {Point} point - The point to project. Should have properties `x` and `y`.
19
+ * @param {Edge} edge - The edge to project onto, defined by two endpoints `point1` and `point2`.
20
+ * Each endpoint should have properties `x` and `y`.
21
+ * @returns {Point} The projected point on the edge, with `x` and `y` coordinates.
22
+ */
23
+ static projectPointToEdge(point: Point, edge: Edge): Point;
24
+ /**
25
+ * Determines if a point is inside a polygon.
26
+ *
27
+ * @param {Point} point - The point to test. Should have properties `x` and `y`.
28
+ * @param {Edge[]} polygon - An array of edges representing the polygon.
29
+ * Each edge is defined by two endpoints `point1` and `point2`,
30
+ * where each endpoint has properties `x` and `y`.
31
+ * @returns {boolean} Returns `true` if the point is inside the polygon, otherwise `false`.
32
+ *
33
+ * @note The algorithm may be inaccurate in edge cases,
34
+ * such as when the point lies exactly on a polygon corner.
35
+ */
36
+ static isPointInPolygon: (point: Point, polygon: Edge[]) => boolean;
37
+ }
38
+ export {};