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,51 @@
1
+ import { Light } from '../../../components/light';
2
+ import { Transform } from '../../../components/transform';
3
+ import { RemoveActor } from '../../../../engine/events';
4
+ import { createLight, updateLight } from './light-factory';
5
+ export class LightSubsystem {
6
+ renderScene;
7
+ lightsCollection;
8
+ lightsMap;
9
+ constructor(renderScene, lightsCollection) {
10
+ this.renderScene = renderScene;
11
+ this.lightsCollection = lightsCollection;
12
+ this.lightsMap = {};
13
+ }
14
+ mount() {
15
+ this.lightsCollection.addEventListener(RemoveActor, this.handleLightRemove);
16
+ }
17
+ unmount() {
18
+ this.lightsCollection.removeEventListener(RemoveActor, this.handleLightRemove);
19
+ }
20
+ handleLightRemove = (event) => {
21
+ const { actor } = event;
22
+ const object = this.renderScene.getObjectById(this.lightsMap[actor.id]);
23
+ if (object) {
24
+ this.renderScene.remove(object);
25
+ }
26
+ delete this.lightsMap[actor.id];
27
+ };
28
+ setUpActor(actor) {
29
+ const { type } = actor.getComponent(Light);
30
+ const light = createLight(type);
31
+ light.userData.actor = actor;
32
+ this.lightsMap[actor.id] = light.id;
33
+ this.renderScene.add(light);
34
+ }
35
+ update() {
36
+ this.lightsCollection.forEach((actor) => {
37
+ const transform = actor.getComponent(Transform);
38
+ const { type, options } = actor.getComponent(Light);
39
+ if (!this.lightsMap[actor.id]) {
40
+ this.setUpActor(actor);
41
+ }
42
+ const light = this.renderScene.getObjectById(this.lightsMap[actor.id]);
43
+ if (!light) {
44
+ return;
45
+ }
46
+ light.position.setX(transform.offsetX);
47
+ light.position.setY(transform.offsetY);
48
+ updateLight(type, light, options);
49
+ });
50
+ }
51
+ }
@@ -0,0 +1,4 @@
1
+ import type { Light as ThreeJSLight } from 'three/src/Three';
2
+ import type { LightType, LightOptions } from '../../../components/light';
3
+ export declare const createLight: (type: LightType) => ThreeJSLight;
4
+ export declare const updateLight: (type: LightType, light: ThreeJSLight, options: LightOptions) => void;
@@ -0,0 +1,27 @@
1
+ import { AmbientLight, PointLight, Color, } from 'three/src/Three';
2
+ const updateAmbientLight = (light, options) => {
3
+ const { color, intensity } = options;
4
+ light.position.setZ(1);
5
+ light.color = new Color(color);
6
+ light.intensity = intensity;
7
+ };
8
+ const DISTANCE_FACTOR = 0.875;
9
+ const updatePointLight = (light, options) => {
10
+ const { color, intensity, distance } = options;
11
+ light.position.setZ(distance / 2);
12
+ light.color = new Color(color);
13
+ light.intensity = intensity;
14
+ light.distance = distance / DISTANCE_FACTOR;
15
+ };
16
+ const lightUpdateStrategyMap = {
17
+ ambient: updateAmbientLight,
18
+ point: updatePointLight,
19
+ };
20
+ const lightMap = {
21
+ ambient: AmbientLight,
22
+ point: PointLight,
23
+ };
24
+ export const createLight = (type) => new lightMap[type]();
25
+ export const updateLight = (type, light, options) => {
26
+ lightUpdateStrategyMap[type](light, options);
27
+ };
@@ -0,0 +1,4 @@
1
+ import type { Material, Texture } from 'three/src/Three';
2
+ import type { MaterialType, BasicMaterialOptions } from '../../../components/sprite';
3
+ export declare const createMaterial: (type: MaterialType) => Material;
4
+ export declare const updateMaterial: (type: MaterialType, material: Material, options: BasicMaterialOptions, texture?: Texture) => void;
@@ -0,0 +1,32 @@
1
+ import { MeshBasicMaterial, MeshStandardMaterial, Color, NormalBlending, AdditiveBlending, SubtractiveBlending, MultiplyBlending, DataTexture, } from 'three/src/Three';
2
+ const DEFAULT_COLOR = '#ffffff';
3
+ const DEFAULT_BLENDING = 'normal';
4
+ const DEFAULT_OPACITY = 1;
5
+ const DEFAULT_TEXTURE = new DataTexture(new Uint8Array([255, 255, 255, 255]), 1, 1);
6
+ DEFAULT_TEXTURE.needsUpdate = true;
7
+ const blendingMap = {
8
+ normal: NormalBlending,
9
+ addition: AdditiveBlending,
10
+ substract: SubtractiveBlending,
11
+ multiply: MultiplyBlending,
12
+ };
13
+ const updateBasicMaterial = (material, componentOptions, texture = DEFAULT_TEXTURE) => {
14
+ const { color = DEFAULT_COLOR, blending = DEFAULT_BLENDING, opacity = DEFAULT_OPACITY, } = componentOptions;
15
+ const basicMaterial = material;
16
+ basicMaterial.transparent = true;
17
+ basicMaterial.map = texture;
18
+ basicMaterial.blending = blendingMap[blending];
19
+ basicMaterial.opacity = opacity;
20
+ const currentColor = `#${basicMaterial.color.getHexString()}`;
21
+ if (color !== currentColor) {
22
+ basicMaterial.color = new Color(color);
23
+ }
24
+ };
25
+ const materialMap = {
26
+ lightsensitive: MeshStandardMaterial,
27
+ basic: MeshBasicMaterial,
28
+ };
29
+ export const createMaterial = (type) => new materialMap[type]();
30
+ export const updateMaterial = (type, material, options, texture) => {
31
+ updateBasicMaterial(material, options, texture);
32
+ };
@@ -0,0 +1,32 @@
1
+ import { System } from '../../../engine/system';
2
+ import type { SystemOptions } from '../../../engine/system';
3
+ export declare class SpriteRenderer extends System {
4
+ private actorCollection;
5
+ private window;
6
+ private renderScene;
7
+ private currentCamera;
8
+ private renderer;
9
+ private imageCache;
10
+ private spriteCache;
11
+ private textureMap;
12
+ private actorsMap;
13
+ private sortFn;
14
+ private lightSubsystem;
15
+ private viewWidth;
16
+ private viewHeight;
17
+ private templateCollection;
18
+ private cameraService;
19
+ constructor(options: SystemOptions);
20
+ load(): Promise<void>;
21
+ private loadImage;
22
+ private getTextureArray;
23
+ mount(): void;
24
+ unmount(): void;
25
+ private getImagesToLoad;
26
+ private handleActorRemove;
27
+ private handleWindowResize;
28
+ private setUpActor;
29
+ private updateCamera;
30
+ private updateActors;
31
+ update(): void;
32
+ }
@@ -0,0 +1,214 @@
1
+ import { Scene, OrthographicCamera, WebGLRenderer, PlaneGeometry, Mesh, Color, } from 'three/src/Three';
2
+ import { RemoveActor } from '../../../engine/events';
3
+ import { System } from '../../../engine/system';
4
+ import { ActorCollection } from '../../../engine/actor';
5
+ import { Transform } from '../../components/transform';
6
+ import { Sprite } from '../../components/sprite';
7
+ import { Light } from '../../components/light';
8
+ import { Camera } from '../../components/camera';
9
+ import { CameraService } from '../camera-system';
10
+ import { MathOps } from '../../../engine/math-lib';
11
+ import { getWindowNode } from '../../utils/get-window-node';
12
+ import { SpriteRendererService } from './service';
13
+ import { composeSort, createSortByLayer, sortByYAxis, sortByXAxis, sortByZAxis, sortByFit, } from './sort';
14
+ import { parseSortingLayers } from './sort/utils';
15
+ import { LightSubsystem } from './light-subsystem';
16
+ import { createMaterial, updateMaterial } from './material-factory';
17
+ import { loadImage, prepareSprite, getImagesFromTemplate, getTextureMapKey, cloneTexture, } from './utils';
18
+ export class SpriteRenderer extends System {
19
+ actorCollection;
20
+ window;
21
+ renderScene;
22
+ currentCamera;
23
+ renderer;
24
+ imageCache;
25
+ spriteCache;
26
+ textureMap;
27
+ actorsMap;
28
+ sortFn;
29
+ lightSubsystem;
30
+ viewWidth;
31
+ viewHeight;
32
+ templateCollection;
33
+ cameraService;
34
+ constructor(options) {
35
+ super();
36
+ const { globalOptions, windowNodeId, backgroundColor, backgroundAlpha, templateCollection, scene, } = options;
37
+ this.actorCollection = new ActorCollection(scene, {
38
+ components: [
39
+ Sprite,
40
+ Transform,
41
+ ],
42
+ });
43
+ this.templateCollection = templateCollection;
44
+ this.window = getWindowNode(windowNodeId);
45
+ this.sortFn = composeSort([
46
+ createSortByLayer(parseSortingLayers(globalOptions.sortingLayers)),
47
+ sortByYAxis,
48
+ sortByXAxis,
49
+ sortByZAxis,
50
+ sortByFit,
51
+ ]);
52
+ this.actorsMap = {};
53
+ this.viewWidth = 0;
54
+ this.viewHeight = 0;
55
+ this.renderScene = new Scene();
56
+ this.currentCamera = new OrthographicCamera();
57
+ this.renderer = new WebGLRenderer();
58
+ this.renderer.setClearColor(new Color(backgroundColor), backgroundAlpha);
59
+ this.renderer.setPixelRatio(window.devicePixelRatio);
60
+ this.lightSubsystem = new LightSubsystem(this.renderScene, new ActorCollection(scene, {
61
+ components: [
62
+ Light,
63
+ Transform,
64
+ ],
65
+ }));
66
+ // TODO: Figure out how to set up camera correctly to avoid scale usage
67
+ this.renderScene.scale.set(1, -1, 1);
68
+ this.imageCache = {};
69
+ this.spriteCache = {};
70
+ this.textureMap = {};
71
+ this.cameraService = scene.getService(CameraService);
72
+ scene.addService(new SpriteRendererService({
73
+ threeScene: this.renderScene,
74
+ threeCamera: this.currentCamera,
75
+ window: this.window,
76
+ sortFn: this.sortFn,
77
+ cameraService: this.cameraService,
78
+ }));
79
+ }
80
+ async load() {
81
+ const imagesToLoad = this.getImagesToLoad();
82
+ await Promise.all(Object.keys(imagesToLoad).map((key) => this.loadImage(imagesToLoad[key])));
83
+ }
84
+ async loadImage(sprite) {
85
+ const { src, slice } = sprite;
86
+ this.imageCache[src] = null;
87
+ return loadImage(sprite)
88
+ .then((image) => {
89
+ this.imageCache[src] = image;
90
+ const spriteTextures = prepareSprite(image, sprite);
91
+ this.spriteCache[src] ??= {};
92
+ this.spriteCache[src][slice] = spriteTextures;
93
+ this.textureMap[getTextureMapKey(sprite)] = spriteTextures.map((frame) => cloneTexture(sprite, frame));
94
+ })
95
+ .catch(() => {
96
+ console.warn(`Can't load image by the following url: ${src}`);
97
+ });
98
+ }
99
+ getTextureArray(sprite) {
100
+ const { src, slice } = sprite;
101
+ const image = this.imageCache[src];
102
+ if (image === null) {
103
+ return void 0;
104
+ }
105
+ if (image === undefined) {
106
+ void this.loadImage(sprite);
107
+ return void 0;
108
+ }
109
+ if (image && !this.spriteCache[src][slice]) {
110
+ this.spriteCache[src][slice] = prepareSprite(image, sprite);
111
+ }
112
+ const textureKey = getTextureMapKey(sprite);
113
+ if (image && this.spriteCache[src][slice] && !this.textureMap[textureKey]) {
114
+ this.textureMap[textureKey] = this.spriteCache[src][slice].map((frame) => cloneTexture(sprite, frame));
115
+ }
116
+ return this.textureMap[textureKey];
117
+ }
118
+ mount() {
119
+ this.handleWindowResize();
120
+ window.addEventListener('resize', this.handleWindowResize);
121
+ this.actorCollection.addEventListener(RemoveActor, this.handleActorRemove);
122
+ this.lightSubsystem.mount();
123
+ this.window.appendChild(this.renderer.domElement);
124
+ }
125
+ unmount() {
126
+ window.removeEventListener('resize', this.handleWindowResize);
127
+ this.actorCollection.removeEventListener(RemoveActor, this.handleActorRemove);
128
+ this.lightSubsystem.unmount();
129
+ this.window.removeChild(this.renderer.domElement);
130
+ }
131
+ getImagesToLoad() {
132
+ const imagesToLoad = {};
133
+ this.templateCollection.getAll().forEach((template) => getImagesFromTemplate(imagesToLoad, template));
134
+ this.actorCollection.forEach((actor) => {
135
+ const sprite = actor.getComponent(Sprite);
136
+ if (!imagesToLoad[sprite.src]) {
137
+ imagesToLoad[sprite.src] = sprite;
138
+ }
139
+ });
140
+ return imagesToLoad;
141
+ }
142
+ handleActorRemove = (event) => {
143
+ const { actor } = event;
144
+ const object = this.renderScene.getObjectById(this.actorsMap[actor.id]);
145
+ if (object) {
146
+ this.renderScene.remove(object);
147
+ }
148
+ delete this.actorsMap[actor.id];
149
+ };
150
+ handleWindowResize = () => {
151
+ this.viewWidth = this.window.clientWidth;
152
+ this.viewHeight = this.window.clientHeight;
153
+ this.currentCamera.left = this.viewWidth / -2;
154
+ this.currentCamera.top = this.viewHeight / 2;
155
+ this.currentCamera.right = this.viewWidth / 2;
156
+ this.currentCamera.bottom = this.viewHeight / -2;
157
+ this.currentCamera.updateProjectionMatrix();
158
+ this.renderer.setSize(this.viewWidth, this.viewHeight);
159
+ };
160
+ setUpActor(actor) {
161
+ const sprite = actor.getComponent(Sprite);
162
+ const material = createMaterial(sprite.material.type);
163
+ const geometry = new PlaneGeometry(sprite.width, sprite.height);
164
+ const object = new Mesh(geometry, material);
165
+ object.userData.actor = actor;
166
+ this.actorsMap[actor.id] = object.id;
167
+ this.renderScene.add(object);
168
+ }
169
+ updateCamera() {
170
+ const currentCamera = this.cameraService.getCurrentCamera();
171
+ const transform = currentCamera?.getComponent(Transform);
172
+ const camera = currentCamera?.getComponent(Camera);
173
+ const offsetX = transform?.offsetX ?? 0;
174
+ const offsetY = transform?.offsetY ?? 0;
175
+ const zoom = camera?.zoom ?? 1;
176
+ this.currentCamera.zoom = zoom;
177
+ // TODO: Figure out how to set up camera correctly to avoid negative transform by y axis
178
+ this.currentCamera.position.set(offsetX, -offsetY, 1);
179
+ this.currentCamera.updateProjectionMatrix();
180
+ }
181
+ updateActors() {
182
+ this.actorCollection.forEach((actor, index) => {
183
+ const transform = actor.getComponent(Transform);
184
+ const sprite = actor.getComponent(Sprite);
185
+ if (!this.actorsMap[actor.id]) {
186
+ this.setUpActor(actor);
187
+ }
188
+ const object = this.renderScene.getObjectById(this.actorsMap[actor.id]);
189
+ if (!object) {
190
+ return;
191
+ }
192
+ object.visible = !sprite.disabled;
193
+ if (!object.visible) {
194
+ return;
195
+ }
196
+ object.scale.set((sprite.flipX ? -1 : 1) * transform.scaleX, (sprite.flipY ? -1 : 1) * transform.scaleY, 1);
197
+ object.rotation.set(0, 0, MathOps.degToRad(transform.rotation + sprite.rotation));
198
+ object.position.set(transform.offsetX, transform.offsetY, 0);
199
+ object.renderOrder = index;
200
+ const material = object.material;
201
+ const textureArray = this.getTextureArray(sprite);
202
+ const texture = textureArray?.[sprite.currentFrame || 0];
203
+ updateMaterial(sprite.material.type, material, sprite.material.options, texture);
204
+ });
205
+ }
206
+ update() {
207
+ this.updateCamera();
208
+ this.lightSubsystem.update();
209
+ this.actorCollection.sort(this.sortFn);
210
+ this.updateActors();
211
+ this.renderer.render(this.renderScene, this.currentCamera);
212
+ }
213
+ }
214
+ SpriteRenderer.systemName = 'SpriteRenderer';
@@ -0,0 +1,24 @@
1
+ import type { Scene, Camera } from 'three/src/Three';
2
+ import type { CameraService } from '../../camera-system';
3
+ import type { Actor } from '../../../../engine/actor';
4
+ import type { SortFn } from '../sort';
5
+ interface SpriteRendererServiceOptions {
6
+ threeScene: Scene;
7
+ threeCamera: Camera;
8
+ window: HTMLElement;
9
+ sortFn: SortFn;
10
+ cameraService: CameraService;
11
+ }
12
+ export declare class SpriteRendererService {
13
+ private threeScene;
14
+ private threeCamera;
15
+ private window;
16
+ private raycaster;
17
+ private sortFn;
18
+ private cameraService;
19
+ constructor({ threeScene, threeCamera, window, sortFn, cameraService, }: SpriteRendererServiceOptions);
20
+ private getNormalizedCoordinates;
21
+ intersectsWithPoint(x: number, y: number): Actor[];
22
+ intersectsWithRectangle(minX: number, minY: number, maxX: number, maxY: number): Actor[];
23
+ }
24
+ export {};
@@ -0,0 +1,52 @@
1
+ import { Raycaster, Vector2 } from 'three/src/Three';
2
+ import { getProjectedX, getProjectedY } from '../../../utils/coordinates-projection';
3
+ export class SpriteRendererService {
4
+ threeScene;
5
+ threeCamera;
6
+ window;
7
+ raycaster;
8
+ sortFn;
9
+ cameraService;
10
+ constructor({ threeScene, threeCamera, window, sortFn, cameraService, }) {
11
+ this.threeScene = threeScene;
12
+ this.threeCamera = threeCamera;
13
+ this.window = window;
14
+ this.sortFn = sortFn;
15
+ this.cameraService = cameraService;
16
+ this.raycaster = new Raycaster();
17
+ }
18
+ getNormalizedCoordinates(x, y) {
19
+ const { clientWidth, clientHeight } = this.window;
20
+ return new Vector2((x / clientWidth) * 2 - 1, -(y / clientHeight) * 2 + 1);
21
+ }
22
+ intersectsWithPoint(x, y) {
23
+ this.raycaster.setFromCamera(this.getNormalizedCoordinates(x, y), this.threeCamera);
24
+ const intersects = this.raycaster.intersectObjects(this.threeScene.children, true);
25
+ const actors = intersects.map((intersect) => intersect.object.userData.actor);
26
+ // TODO: Find more efficient way to return intersected objects in right order
27
+ // according to posititon and sorting layer
28
+ return actors
29
+ .sort(this.sortFn)
30
+ .reverse();
31
+ }
32
+ intersectsWithRectangle(minX, minY, maxX, maxY) {
33
+ const actors = [];
34
+ const camera = this.cameraService.getCurrentCamera();
35
+ if (!camera) {
36
+ return actors;
37
+ }
38
+ const projectedMinX = getProjectedX(minX, camera);
39
+ const projectedMinY = getProjectedY(minY, camera);
40
+ const projectedMaxX = getProjectedX(maxX, camera);
41
+ const projectedMaxY = getProjectedY(maxY, camera);
42
+ this.threeScene.traverse((object) => {
43
+ if (object.userData.actor !== undefined) {
44
+ const { x, y } = object.position;
45
+ if (x >= projectedMinX && x <= projectedMaxX && y >= projectedMinY && y <= projectedMaxY) {
46
+ actors.push(object.userData.actor);
47
+ }
48
+ }
49
+ });
50
+ return actors;
51
+ }
52
+ }
@@ -0,0 +1,8 @@
1
+ import { SortFn } from './types';
2
+ export { createSortByLayer } from './sort-by-layer';
3
+ export { sortByXAxis } from './sort-by-x-axis';
4
+ export { sortByYAxis } from './sort-by-y-axis';
5
+ export { sortByZAxis } from './sort-by-z-axis';
6
+ export { sortByFit } from './sort-by-fit';
7
+ export declare const composeSort: (sortFns: Array<SortFn>) => SortFn;
8
+ export type { SortFn };
@@ -0,0 +1,15 @@
1
+ export { createSortByLayer } from './sort-by-layer';
2
+ export { sortByXAxis } from './sort-by-x-axis';
3
+ export { sortByYAxis } from './sort-by-y-axis';
4
+ export { sortByZAxis } from './sort-by-z-axis';
5
+ export { sortByFit } from './sort-by-fit';
6
+ export const composeSort = (sortFns) => (a, b) => {
7
+ let result = 0;
8
+ for (let i = 0; i < sortFns.length; i += 1) {
9
+ result = sortFns[i](a, b);
10
+ if (result !== 0) {
11
+ return result;
12
+ }
13
+ }
14
+ return result;
15
+ };
@@ -0,0 +1,2 @@
1
+ import type { SortFn } from './types';
2
+ export declare const sortByFit: SortFn;
@@ -0,0 +1,12 @@
1
+ import { Sprite } from '../../../components/sprite';
2
+ export const sortByFit = (a, b) => {
3
+ const aSprite = a.getComponent(Sprite);
4
+ const bSprite = b.getComponent(Sprite);
5
+ if (aSprite.fit > bSprite.fit) {
6
+ return 1;
7
+ }
8
+ if (aSprite.fit < bSprite.fit) {
9
+ return -1;
10
+ }
11
+ return 0;
12
+ };
@@ -0,0 +1,2 @@
1
+ import type { SortFn } from './types';
2
+ export declare const createSortByLayer: (sortingLayers: Array<string>) => SortFn;
@@ -0,0 +1,14 @@
1
+ import { Sprite } from '../../../components/sprite';
2
+ export const createSortByLayer = (sortingLayers) => {
3
+ const sortingLayer = sortingLayers.reduce((storage, layer, index) => {
4
+ storage[layer] = index;
5
+ return storage;
6
+ }, {});
7
+ return (a, b) => {
8
+ const aSprite = a.getComponent(Sprite);
9
+ const bSprite = b.getComponent(Sprite);
10
+ const aSortingLayerOrder = sortingLayer[aSprite.sortingLayer];
11
+ const bSortingLayerOrder = sortingLayer[bSprite.sortingLayer];
12
+ return aSortingLayerOrder - bSortingLayerOrder;
13
+ };
14
+ };
@@ -0,0 +1,2 @@
1
+ import type { SortFn } from './types';
2
+ export declare const sortByXAxis: SortFn;
@@ -0,0 +1,15 @@
1
+ import { Sprite } from '../../../components/sprite';
2
+ import { Transform } from '../../../components/transform';
3
+ export const sortByXAxis = (a, b) => {
4
+ const aSprite = a.getComponent(Sprite);
5
+ const bSprite = b.getComponent(Sprite);
6
+ const aTransform = a.getComponent(Transform);
7
+ const bTransform = b.getComponent(Transform);
8
+ const aOffsetX = aTransform.offsetX
9
+ + aSprite.sortCenter[0]
10
+ + ((aTransform.scaleX * aSprite.width) / 2);
11
+ const bOffsetX = bTransform.offsetX
12
+ + bSprite.sortCenter[0]
13
+ + ((bTransform.scaleX * bSprite.width) / 2);
14
+ return aOffsetX - bOffsetX;
15
+ };
@@ -0,0 +1,2 @@
1
+ import type { SortFn } from './types';
2
+ export declare const sortByYAxis: SortFn;
@@ -0,0 +1,15 @@
1
+ import { Sprite } from '../../../components/sprite';
2
+ import { Transform } from '../../../components/transform';
3
+ export const sortByYAxis = (a, b) => {
4
+ const aSprite = a.getComponent(Sprite);
5
+ const bSprite = b.getComponent(Sprite);
6
+ const aTransform = a.getComponent(Transform);
7
+ const bTransform = b.getComponent(Transform);
8
+ const aOffsetY = aTransform.offsetY
9
+ + aSprite.sortCenter[1]
10
+ + ((aTransform.scaleY * aSprite.height) / 2);
11
+ const bOffsetY = bTransform.offsetY
12
+ + bSprite.sortCenter[1]
13
+ + ((bTransform.scaleY * bSprite.height) / 2);
14
+ return aOffsetY - bOffsetY;
15
+ };
@@ -0,0 +1,2 @@
1
+ import type { SortFn } from './types';
2
+ export declare const sortByZAxis: SortFn;
@@ -0,0 +1,6 @@
1
+ import { Transform } from '../../../components/transform';
2
+ export const sortByZAxis = (a, b) => {
3
+ const aTransform = a.getComponent(Transform);
4
+ const bTransform = b.getComponent(Transform);
5
+ return aTransform.offsetZ - bTransform.offsetZ;
6
+ };
@@ -0,0 +1,2 @@
1
+ import type { Actor } from '../../../../engine/actor';
2
+ export type SortFn = (a: Actor, b: Actor) => number;
@@ -0,0 +1 @@
1
+ export declare const parseSortingLayers: (sortingLayers: unknown) => Array<string>;
@@ -0,0 +1,6 @@
1
+ export const parseSortingLayers = (sortingLayers) => {
2
+ if (Array.isArray(sortingLayers)) {
3
+ return sortingLayers.map((layer) => String(layer));
4
+ }
5
+ return [];
6
+ };
@@ -0,0 +1,8 @@
1
+ import { Texture } from 'three/src/Three';
2
+ import type { Sprite } from '../../components/sprite';
3
+ export declare class SpriteCropper {
4
+ private canvas;
5
+ private canvasContext;
6
+ constructor();
7
+ crop(spriteTexture: HTMLImageElement, sprite: Sprite): Array<Texture>;
8
+ }
@@ -0,0 +1,30 @@
1
+ import { Texture } from 'three/src/Three';
2
+ export class SpriteCropper {
3
+ canvas;
4
+ canvasContext;
5
+ constructor() {
6
+ this.canvas = document.createElement('canvas');
7
+ this.canvasContext = this.canvas.getContext('2d');
8
+ }
9
+ crop(spriteTexture, sprite) {
10
+ const frames = sprite.slice;
11
+ if (frames <= 0) {
12
+ return [];
13
+ }
14
+ const width = Math.max(spriteTexture.width / frames, 1);
15
+ const height = Math.max(spriteTexture.height, 1);
16
+ this.canvas.width = width;
17
+ this.canvas.height = height;
18
+ const textures = new Array(frames);
19
+ for (let i = 0; i < frames; i += 1) {
20
+ this.canvasContext.clearRect(0, 0, width, height);
21
+ this.canvasContext.drawImage(spriteTexture, width * i, 0, width, height, 0, 0, width, height);
22
+ const frameImageData = this.canvasContext.getImageData(0, 0, width, height);
23
+ // Some issue with three.js d.ts probably,
24
+ // cause it should take ImageData as first argument
25
+ const texture = new Texture(frameImageData);
26
+ textures[i] = texture;
27
+ }
28
+ return textures;
29
+ }
30
+ }
@@ -0,0 +1,8 @@
1
+ import { Texture } from 'three/src/Three';
2
+ import { Sprite } from '../../components/sprite';
3
+ import type { Template } from '../../../engine/template';
4
+ export declare const loadImage: (sprite: Sprite) => Promise<HTMLImageElement>;
5
+ export declare const prepareSprite: (image: HTMLImageElement, sprite: Sprite) => Array<Texture>;
6
+ export declare const getImagesFromTemplate: (images: Record<string, Sprite>, template: Template) => void;
7
+ export declare const getTextureMapKey: ({ slice, fit, width, height, src, }: Sprite) => string;
8
+ export declare const cloneTexture: (sprite: Sprite, texture: Texture) => Texture;