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,76 @@
1
+ import { Vector2 } from './vector2';
2
+ export class VectorOps {
3
+ static fixCalcError(value) {
4
+ return Math.abs(value) < Number.EPSILON ? 0 : value;
5
+ }
6
+ /*
7
+ * Calculate vector by angle in radians
8
+ */
9
+ static getVectorByAngle(angle) {
10
+ const x = this.fixCalcError(Math.cos(angle));
11
+ const y = this.fixCalcError(Math.sin(angle));
12
+ return new Vector2(x, y);
13
+ }
14
+ /*
15
+ * Calculate normal by line segment
16
+ */
17
+ static getNormal(x1, x2, y1, y2) {
18
+ const normal = new Vector2(y1 - y2, x2 - x1);
19
+ normal.multiplyNumber(1 / normal.magnitude);
20
+ return normal;
21
+ }
22
+ /*
23
+ * Calculate dot product of two vectors
24
+ */
25
+ static dotProduct(point, vector) {
26
+ return (point.x * vector.x) + (point.y * vector.y);
27
+ }
28
+ /**
29
+ * Projects a point onto a given edge, returning the closest point
30
+ *
31
+ * @param {Point} point - The point to project. Should have properties `x` and `y`.
32
+ * @param {Edge} edge - The edge to project onto, defined by two endpoints `point1` and `point2`.
33
+ * Each endpoint should have properties `x` and `y`.
34
+ * @returns {Point} The projected point on the edge, with `x` and `y` coordinates.
35
+ */
36
+ static projectPointToEdge(point, edge) {
37
+ const abVector = new Vector2(edge.point2.x - edge.point1.x, edge.point2.y - edge.point1.y);
38
+ const apVector = new Vector2(point.x - edge.point1.x, point.y - edge.point1.y);
39
+ const dotProduct = VectorOps.dotProduct(apVector, abVector);
40
+ const lengthSquared = abVector.x * abVector.x + abVector.y * abVector.y;
41
+ const t = dotProduct / lengthSquared;
42
+ return {
43
+ x: edge.point1.x + t * abVector.x,
44
+ y: edge.point1.y + t * abVector.y,
45
+ };
46
+ }
47
+ /**
48
+ * Determines if a point is inside a polygon.
49
+ *
50
+ * @param {Point} point - The point to test. Should have properties `x` and `y`.
51
+ * @param {Edge[]} polygon - An array of edges representing the polygon.
52
+ * Each edge is defined by two endpoints `point1` and `point2`,
53
+ * where each endpoint has properties `x` and `y`.
54
+ * @returns {boolean} Returns `true` if the point is inside the polygon, otherwise `false`.
55
+ *
56
+ * @note The algorithm may be inaccurate in edge cases,
57
+ * such as when the point lies exactly on a polygon corner.
58
+ */
59
+ static isPointInPolygon = (point, polygon) => {
60
+ const { x, y } = point;
61
+ let isInside = false;
62
+ for (const edge of polygon) {
63
+ const x1 = edge.point1.x;
64
+ const y1 = edge.point1.y;
65
+ const x2 = edge.point2.x;
66
+ const y2 = edge.point2.y;
67
+ // https://en.wikipedia.org/wiki/Linear_equation#Determinant_form
68
+ const isIntersection = (y1 > y !== y2 > y)
69
+ && (x < ((x2 - x1) * (y - y1)) / (y2 - y1) + x1);
70
+ if (isIntersection) {
71
+ isInside = !isInside;
72
+ }
73
+ }
74
+ return isInside;
75
+ };
76
+ }
@@ -0,0 +1,10 @@
1
+ export declare class Vector2 {
2
+ x: number;
3
+ y: number;
4
+ constructor(x: number, y: number);
5
+ get magnitude(): number;
6
+ add(vector: Vector2): void;
7
+ multiplyNumber(number: number): void;
8
+ equals(vector: Vector2): boolean;
9
+ clone(): Vector2;
10
+ }
@@ -0,0 +1,25 @@
1
+ export class Vector2 {
2
+ x;
3
+ y;
4
+ constructor(x, y) {
5
+ this.x = x;
6
+ this.y = y;
7
+ }
8
+ get magnitude() {
9
+ return Math.sqrt(Math.pow(this.x, 2) + Math.pow(this.y, 2));
10
+ }
11
+ add(vector) {
12
+ this.x += vector.x;
13
+ this.y += vector.y;
14
+ }
15
+ multiplyNumber(number) {
16
+ this.x *= number;
17
+ this.y *= number;
18
+ }
19
+ equals(vector) {
20
+ return this.x === vector.x && this.y === vector.y;
21
+ }
22
+ clone() {
23
+ return new Vector2(this.x, this.y);
24
+ }
25
+ }
@@ -0,0 +1 @@
1
+ export { ResourceLoader } from './resource-loader';
@@ -0,0 +1 @@
1
+ export { ResourceLoader } from './resource-loader';
@@ -0,0 +1,7 @@
1
+ import type { Loader } from './loader';
2
+ export declare class ImageLoader implements Loader {
3
+ private supportedExtensions;
4
+ constructor();
5
+ getSupportedExtensions(): Array<string>;
6
+ load(resourceUrl: string): Promise<unknown>;
7
+ }
@@ -0,0 +1,21 @@
1
+ export class ImageLoader {
2
+ supportedExtensions;
3
+ constructor() {
4
+ this.supportedExtensions = ['.png'];
5
+ }
6
+ getSupportedExtensions() {
7
+ return this.supportedExtensions;
8
+ }
9
+ load(resourceUrl) {
10
+ return new Promise((resolve, reject) => {
11
+ const image = new Image();
12
+ image.src = resourceUrl;
13
+ image.onload = () => {
14
+ resolve(image);
15
+ };
16
+ image.onerror = () => {
17
+ reject(new Error('Failed to load image'));
18
+ };
19
+ });
20
+ }
21
+ }
@@ -0,0 +1,4 @@
1
+ import type { Loader } from './loader';
2
+ export declare const loaders: Record<string, {
3
+ new (): Loader;
4
+ }>;
@@ -0,0 +1,6 @@
1
+ import { ImageLoader } from './image-loader';
2
+ import { JsonLoader } from './json-loader';
3
+ export const loaders = {
4
+ imageLoader: ImageLoader,
5
+ jsonLoader: JsonLoader,
6
+ };
@@ -0,0 +1,7 @@
1
+ import { Loader } from './loader';
2
+ export declare class JsonLoader implements Loader {
3
+ private supportedExtensions;
4
+ constructor();
5
+ getSupportedExtensions(): Array<string>;
6
+ load(resourceUrl: string): Promise<unknown>;
7
+ }
@@ -0,0 +1,14 @@
1
+ export class JsonLoader {
2
+ supportedExtensions;
3
+ constructor() {
4
+ this.supportedExtensions = ['.json'];
5
+ }
6
+ getSupportedExtensions() {
7
+ return this.supportedExtensions;
8
+ }
9
+ load(resourceUrl) {
10
+ return fetch(resourceUrl)
11
+ .then((response) => response.json())
12
+ .catch((error) => new Error(`Failed to load json: ${error.message}`));
13
+ }
14
+ }
@@ -0,0 +1,4 @@
1
+ export interface Loader {
2
+ getSupportedExtensions(): Array<string>;
3
+ load(resourceUrl: string): Promise<unknown>;
4
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,7 @@
1
+ import type { Loader } from './loaders/loader';
2
+ export declare class ResourceLoaderQualifier {
3
+ private loaders;
4
+ constructor();
5
+ private getResourceExt;
6
+ getLoader(resourceUrl: string): Loader | undefined;
7
+ }
@@ -0,0 +1,18 @@
1
+ import { loaders } from './loaders';
2
+ const EXT_SEPARATOR = '.';
3
+ export class ResourceLoaderQualifier {
4
+ loaders;
5
+ constructor() {
6
+ this.loaders = Object.keys(loaders).map((loaderName) => {
7
+ const Loader = loaders[loaderName];
8
+ return new Loader();
9
+ });
10
+ }
11
+ getResourceExt(resourceUrl) {
12
+ return `${EXT_SEPARATOR}${resourceUrl.split(EXT_SEPARATOR).pop()}`;
13
+ }
14
+ getLoader(resourceUrl) {
15
+ const resourceExt = this.getResourceExt(resourceUrl);
16
+ return this.loaders.find((loader) => loader.getSupportedExtensions().includes(resourceExt));
17
+ }
18
+ }
@@ -0,0 +1,5 @@
1
+ export declare class ResourceLoader {
2
+ private resourceLoaderQualifier;
3
+ constructor();
4
+ load(resourceUrl: string): Promise<unknown>;
5
+ }
@@ -0,0 +1,17 @@
1
+ import { ResourceLoaderQualifier } from './resource-loader-qualifier';
2
+ export class ResourceLoader {
3
+ resourceLoaderQualifier;
4
+ constructor() {
5
+ this.resourceLoaderQualifier = new ResourceLoaderQualifier();
6
+ }
7
+ load(resourceUrl) {
8
+ if (!resourceUrl) {
9
+ return Promise.reject();
10
+ }
11
+ const loader = this.resourceLoaderQualifier.getLoader(resourceUrl);
12
+ if (!loader) {
13
+ return Promise.reject();
14
+ }
15
+ return loader.load(resourceUrl);
16
+ }
17
+ }
@@ -0,0 +1,3 @@
1
+ export { Scene } from './scene';
2
+ export { SceneProvider } from './scene-provider';
3
+ export type { SceneLoadOptions, LevelLoadOptions } from './scene-provider';
@@ -0,0 +1,2 @@
1
+ export { Scene } from './scene';
2
+ export { SceneProvider } from './scene-provider';
@@ -0,0 +1,50 @@
1
+ import type { SceneConfig, LevelConfig, GlobalOption } from '../types';
2
+ import type { ActorCreator } from '../actor';
3
+ import type { SystemConstructor } from '../system';
4
+ import type { TemplateCollection } from '../template';
5
+ import { Scene } from './scene';
6
+ interface SceneProviderOptions {
7
+ scenes: Array<SceneConfig>;
8
+ loaders: Array<SceneConfig>;
9
+ levels: Array<LevelConfig>;
10
+ systems: Array<SystemConstructor>;
11
+ resources: Record<string, unknown>;
12
+ globalOptions: Array<GlobalOption>;
13
+ actorCreator: ActorCreator;
14
+ templateCollection: TemplateCollection;
15
+ }
16
+ export interface SceneLoadOptions {
17
+ sceneId: string;
18
+ loaderId: string | null;
19
+ levelId: string | null;
20
+ clean?: boolean;
21
+ unloadCurrent?: boolean;
22
+ }
23
+ export interface LevelLoadOptions {
24
+ levelId: string;
25
+ loaderId: string | null;
26
+ }
27
+ export declare class SceneProvider {
28
+ private availableScenes;
29
+ private availableLoaders;
30
+ private availableLevels;
31
+ private systems;
32
+ private resources;
33
+ private globalOptions;
34
+ private sceneContainer;
35
+ private currentSceneId?;
36
+ private loadedScene?;
37
+ private actorCreator;
38
+ private templateCollection;
39
+ constructor({ scenes, levels, systems, loaders, resources, globalOptions, actorCreator, templateCollection, }: SceneProviderOptions);
40
+ prepareLoaders(): Promise<Array<Array<void>>>;
41
+ getCurrentScene(): Scene | undefined;
42
+ loadScene({ sceneId, loaderId, levelId, clean, unloadCurrent, }: SceneLoadOptions): Promise<void> | undefined;
43
+ loadLevel({ levelId, loaderId }: LevelLoadOptions): Promise<void> | undefined;
44
+ isLoaded(): boolean;
45
+ moveToLoaded(): void;
46
+ leaveCurrentScene(): void;
47
+ private setCurrentScene;
48
+ private removeScene;
49
+ }
50
+ export {};
@@ -0,0 +1,151 @@
1
+ import { Scene } from './scene';
2
+ export class SceneProvider {
3
+ availableScenes;
4
+ availableLoaders;
5
+ availableLevels;
6
+ systems;
7
+ resources;
8
+ globalOptions;
9
+ sceneContainer;
10
+ currentSceneId;
11
+ loadedScene;
12
+ actorCreator;
13
+ templateCollection;
14
+ constructor({ scenes, levels, systems, loaders, resources, globalOptions, actorCreator, templateCollection, }) {
15
+ this.sceneContainer = {};
16
+ this.currentSceneId = void '';
17
+ this.availableScenes = scenes.reduce((acc, scene) => {
18
+ acc[scene.id] = scene;
19
+ return acc;
20
+ }, {});
21
+ this.availableLoaders = loaders.reduce((acc, scene) => {
22
+ acc[scene.id] = scene;
23
+ return acc;
24
+ }, {});
25
+ this.availableLevels = levels.reduce((acc, level) => {
26
+ acc[level.id] = level;
27
+ return acc;
28
+ }, {});
29
+ this.systems = systems;
30
+ this.resources = resources;
31
+ this.globalOptions = globalOptions.reduce((acc, option) => {
32
+ acc[option.name] = option.value;
33
+ return acc;
34
+ }, {});
35
+ this.loadedScene = void 0;
36
+ this.actorCreator = actorCreator;
37
+ this.templateCollection = templateCollection;
38
+ }
39
+ prepareLoaders() {
40
+ this.sceneContainer = Object.keys(this.availableLoaders)
41
+ .reduce((acc, id) => {
42
+ const loaderConfig = this.availableLoaders[id];
43
+ acc[id] = new Scene({
44
+ ...loaderConfig,
45
+ actors: loaderConfig.levelId
46
+ ? this.availableLevels[loaderConfig.levelId].actors
47
+ : [],
48
+ availableSystems: this.systems,
49
+ resources: this.resources,
50
+ globalOptions: this.globalOptions,
51
+ actorCreator: this.actorCreator,
52
+ templateCollection: this.templateCollection,
53
+ });
54
+ return acc;
55
+ }, this.sceneContainer);
56
+ return Promise.all(Object.keys(this.availableLoaders)
57
+ .reduce((acc, id) => {
58
+ const asyncLoading = this.sceneContainer[id].load();
59
+ if (asyncLoading) {
60
+ acc.push(asyncLoading);
61
+ }
62
+ return acc;
63
+ }, []));
64
+ }
65
+ getCurrentScene() {
66
+ if (!this.currentSceneId) {
67
+ return void 0;
68
+ }
69
+ return this.sceneContainer[this.currentSceneId];
70
+ }
71
+ loadScene({ sceneId, loaderId, levelId, clean = false, unloadCurrent = false, }) {
72
+ if (!this.availableScenes[sceneId]) {
73
+ throw new Error(`Error while loading the scene. Not found scene with same id: ${sceneId}`);
74
+ }
75
+ const { currentSceneId } = this;
76
+ this.leaveCurrentScene();
77
+ if (unloadCurrent && currentSceneId) {
78
+ this.removeScene(currentSceneId);
79
+ }
80
+ let scene;
81
+ if (clean || !this.sceneContainer[sceneId]) {
82
+ const selectedLevelId = levelId || this.availableScenes[sceneId].levelId;
83
+ scene = new Scene({
84
+ ...this.availableScenes[sceneId],
85
+ actors: selectedLevelId ? this.availableLevels[selectedLevelId].actors : [],
86
+ availableSystems: this.systems,
87
+ resources: this.resources,
88
+ globalOptions: this.globalOptions,
89
+ actorCreator: this.actorCreator,
90
+ templateCollection: this.templateCollection,
91
+ });
92
+ const asyncLoading = scene.load();
93
+ if (asyncLoading && loaderId) {
94
+ this.setCurrentScene(loaderId);
95
+ }
96
+ if (asyncLoading) {
97
+ return asyncLoading.then(() => {
98
+ this.loadedScene = scene;
99
+ });
100
+ }
101
+ this.sceneContainer[scene.id] = scene;
102
+ }
103
+ else {
104
+ scene = this.sceneContainer[sceneId];
105
+ }
106
+ this.setCurrentScene(scene.id);
107
+ return void 0;
108
+ }
109
+ loadLevel({ levelId, loaderId }) {
110
+ if (!this.currentSceneId) {
111
+ throw new Error('Can\'t load the level. Current scene is null');
112
+ }
113
+ return this.loadScene({
114
+ sceneId: this.currentSceneId,
115
+ levelId,
116
+ loaderId,
117
+ clean: true,
118
+ unloadCurrent: true,
119
+ });
120
+ }
121
+ isLoaded() {
122
+ return Boolean(this.loadedScene);
123
+ }
124
+ moveToLoaded() {
125
+ if (!this.loadedScene) {
126
+ return;
127
+ }
128
+ this.leaveCurrentScene();
129
+ const { id } = this.loadedScene;
130
+ this.sceneContainer[id] = this.loadedScene;
131
+ this.loadedScene = void 0;
132
+ this.setCurrentScene(id);
133
+ }
134
+ leaveCurrentScene() {
135
+ if (!this.currentSceneId || !this.sceneContainer[this.currentSceneId]) {
136
+ return;
137
+ }
138
+ this.sceneContainer[this.currentSceneId].unmount();
139
+ this.currentSceneId = void '';
140
+ }
141
+ setCurrentScene(id) {
142
+ if (!this.sceneContainer[id]) {
143
+ throw new Error(`Error while setting new scene. Not found scene with same id: ${id}`);
144
+ }
145
+ this.currentSceneId = id;
146
+ this.sceneContainer[this.currentSceneId].mount();
147
+ }
148
+ removeScene(id) {
149
+ delete this.sceneContainer[id];
150
+ }
151
+ }
@@ -0,0 +1,46 @@
1
+ import type { SceneConfig, ActorConfig } from '../types';
2
+ import type { TemplateCollection } from '../template';
3
+ import type { SystemConstructor } from '../system';
4
+ import { System } from '../system';
5
+ import { Actor, ActorSpawner, ActorCreator } from '../actor';
6
+ import { Entity } from '../entity';
7
+ import type { EntityOptions } from '../entity';
8
+ import type { EventType, Event, EventPayload } from '../event-target';
9
+ import type { SceneEventMap, ActorEventMap } from '../../types/events';
10
+ import type { Constructor } from '../../types/utils';
11
+ type SceneObjectListenerFn<T extends EventType> = (event: T extends keyof SceneEventMap ? SceneEventMap[T] : T extends keyof ActorEventMap ? ActorEventMap[T] : Event) => void;
12
+ interface SceneOptions extends EntityOptions, SceneConfig {
13
+ actors: Array<ActorConfig>;
14
+ availableSystems: Array<SystemConstructor>;
15
+ resources: Record<string, unknown>;
16
+ globalOptions: Record<string, unknown>;
17
+ actorCreator: ActorCreator;
18
+ templateCollection: TemplateCollection;
19
+ }
20
+ export declare class Scene extends Entity {
21
+ private actorCreator;
22
+ private availableSystemsMap;
23
+ private services;
24
+ readonly children: Array<Actor>;
25
+ systems: Array<System>;
26
+ templateCollection: TemplateCollection;
27
+ actorSpawner: ActorSpawner;
28
+ data: Record<string, unknown>;
29
+ parent: null;
30
+ constructor(options: SceneOptions);
31
+ addEventListener<T extends EventType>(type: T, callback: SceneObjectListenerFn<T>): void;
32
+ removeEventListener<T extends EventType>(type: T, callback: SceneObjectListenerFn<T>): void;
33
+ dispatchEvent<T extends EventType>(type: T, ...payload: EventPayload<SceneEventMap, T>): void;
34
+ dispatchEventImmediately<T extends EventType>(type: T, ...payload: EventPayload<SceneEventMap, T>): void;
35
+ appendChild(child: Actor): void;
36
+ removeChild(child: Actor): void;
37
+ getEntityById(id: string): Actor | undefined;
38
+ getEntityByName(name: string): Actor | undefined;
39
+ load(): Promise<Array<void>> | undefined;
40
+ mount(): void;
41
+ unmount(): void;
42
+ addService(service: object): void;
43
+ removeService<T>(serviceClass: Constructor<T>): void;
44
+ getService<T>(serviceClass: Constructor<T>): T;
45
+ }
46
+ export {};
@@ -0,0 +1,98 @@
1
+ import { ActorSpawner, } from '../actor';
2
+ import { Entity } from '../entity';
3
+ export class Scene extends Entity {
4
+ actorCreator;
5
+ availableSystemsMap;
6
+ services;
7
+ systems;
8
+ templateCollection;
9
+ actorSpawner;
10
+ data;
11
+ constructor(options) {
12
+ super(options);
13
+ const { actors, systems, resources, globalOptions, actorCreator, availableSystems, templateCollection, } = options;
14
+ this.actorCreator = actorCreator;
15
+ this.actorSpawner = new ActorSpawner(this.actorCreator);
16
+ this.templateCollection = templateCollection;
17
+ this.data = {};
18
+ this.services = {};
19
+ actors.forEach((actorOptions) => {
20
+ this.appendChild(this.actorCreator.create(actorOptions));
21
+ });
22
+ this.availableSystemsMap = availableSystems.reduce((acc, AvailableSystem) => {
23
+ acc[AvailableSystem.systemName] = AvailableSystem;
24
+ return acc;
25
+ }, {});
26
+ this.systems = systems
27
+ .filter((config) => this.availableSystemsMap[config.name])
28
+ .map((config) => new this.availableSystemsMap[config.name]({
29
+ ...config.options,
30
+ templateCollection: this.templateCollection,
31
+ actorSpawner: this.actorSpawner,
32
+ scene: this,
33
+ resources: resources[config.name],
34
+ globalOptions,
35
+ }));
36
+ }
37
+ addEventListener(type, callback) {
38
+ super.addEventListener(type, callback);
39
+ }
40
+ removeEventListener(type, callback) {
41
+ super.removeEventListener(type, callback);
42
+ }
43
+ dispatchEvent(type, ...payload) {
44
+ super.dispatchEvent(type, ...payload);
45
+ }
46
+ dispatchEventImmediately(type, ...payload) {
47
+ super.dispatchEventImmediately(type, ...payload);
48
+ }
49
+ appendChild(child) {
50
+ super.appendChild(child);
51
+ }
52
+ removeChild(child) {
53
+ super.removeChild(child);
54
+ }
55
+ getEntityById(id) {
56
+ return super.getEntityById(id);
57
+ }
58
+ getEntityByName(name) {
59
+ return super.getEntityByName(name);
60
+ }
61
+ load() {
62
+ if (this.systems.every((system) => !system.load)) {
63
+ return void 0;
64
+ }
65
+ return Promise.all(this.systems.map((system) => {
66
+ if (system.load) {
67
+ return system.load();
68
+ }
69
+ return Promise.resolve();
70
+ }));
71
+ }
72
+ mount() {
73
+ this.systems.forEach((system) => {
74
+ if (system.mount) {
75
+ system.mount();
76
+ }
77
+ });
78
+ }
79
+ unmount() {
80
+ this.systems.forEach((system) => {
81
+ if (system.unmount) {
82
+ system.unmount();
83
+ }
84
+ });
85
+ }
86
+ addService(service) {
87
+ this.services[service.constructor.name] = service;
88
+ }
89
+ removeService(serviceClass) {
90
+ delete this.services[serviceClass.name];
91
+ }
92
+ getService(serviceClass) {
93
+ if (this.services[serviceClass.name] === undefined) {
94
+ throw new Error(`Can't find service with the following name: ${serviceClass.name}`);
95
+ }
96
+ return this.services[serviceClass.name];
97
+ }
98
+ }
@@ -0,0 +1,2 @@
1
+ export { System } from './system';
2
+ export type { SystemConstructor, SystemOptions, UpdateOptions, } from './system';
@@ -0,0 +1 @@
1
+ export { System } from './system';
@@ -0,0 +1,25 @@
1
+ import type { ActorSpawner } from '../actor';
2
+ import type { TemplateCollection } from '../template';
3
+ import type { Scene } from '../scene';
4
+ import type { Constructor } from '../../types/utils';
5
+ export interface SystemOptions extends Record<string, unknown> {
6
+ actorSpawner: ActorSpawner;
7
+ resources?: unknown;
8
+ globalOptions: Record<string, unknown>;
9
+ scene: Scene;
10
+ templateCollection: TemplateCollection;
11
+ }
12
+ export interface UpdateOptions {
13
+ deltaTime: number;
14
+ }
15
+ export declare abstract class System {
16
+ static systemName: string;
17
+ load?(): Promise<void>;
18
+ mount?(): void;
19
+ unmount?(): void;
20
+ update?(options: UpdateOptions): void;
21
+ fixedUpdate?(options: UpdateOptions): void;
22
+ }
23
+ export type SystemConstructor = Constructor<System> & {
24
+ systemName: string;
25
+ };
@@ -0,0 +1,3 @@
1
+ export class System {
2
+ static systemName;
3
+ }
@@ -0,0 +1,2 @@
1
+ export { Template } from './template';
2
+ export { TemplateCollection } from './template-collection';
@@ -0,0 +1,2 @@
1
+ export { Template } from './template';
2
+ export { TemplateCollection } from './template-collection';
@@ -0,0 +1,13 @@
1
+ import type { ComponentConstructor } from '../component';
2
+ import type { TemplateConfig } from '../types';
3
+ import { Template } from './template';
4
+ export declare class TemplateCollection {
5
+ private components;
6
+ private storage;
7
+ constructor(components: Array<ComponentConstructor>);
8
+ private buildTemplate;
9
+ register(options: TemplateConfig): void;
10
+ get(id: string): Template;
11
+ getAll(): Array<Template>;
12
+ delete(id: string): void;
13
+ }