kiwiengine 0.0.1-alpha → 0.5.2

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 (438) hide show
  1. package/README.ko.md +550 -0
  2. package/README.md +575 -4
  3. package/examples/collision-test/assets/cat.png +0 -0
  4. package/examples/collision-test/dist/game.js +2 -0
  5. package/examples/collision-test/dist/game.js.LICENSE.txt +35 -0
  6. package/examples/collision-test/index.ts +30 -0
  7. package/examples/dom-particle-test/assets/bird.png +0 -0
  8. package/examples/dom-particle-test/dist/game.js +2 -0
  9. package/examples/dom-particle-test/dist/game.js.LICENSE.txt +35 -0
  10. package/examples/dom-particle-test/index.html +24 -0
  11. package/examples/dom-particle-test/index.ts +27 -0
  12. package/examples/dom-sprite-test/assets/bird.png +0 -0
  13. package/examples/dom-sprite-test/assets/fire.png +0 -0
  14. package/examples/dom-sprite-test/assets/run.png +0 -0
  15. package/examples/dom-sprite-test/dist/game.js +2 -0
  16. package/examples/dom-sprite-test/dist/game.js.LICENSE.txt +35 -0
  17. package/examples/dom-sprite-test/index.html +24 -0
  18. package/examples/dom-sprite-test/index.ts +38 -0
  19. package/examples/dom-test/dist/game.js +2 -0
  20. package/examples/dom-test/dist/game.js.LICENSE.txt +35 -0
  21. package/examples/dom-test/index.html +24 -0
  22. package/examples/dom-test/index.ts +22 -0
  23. package/examples/flappy-cat/assets/bgm/bgm.ogg +0 -0
  24. package/examples/flappy-cat/assets/images/base.png +0 -0
  25. package/examples/flappy-cat/assets/images/bg.png +0 -0
  26. package/examples/flappy-cat/assets/images/cat.png +0 -0
  27. package/examples/flappy-cat/assets/images/pipe-green.png +0 -0
  28. package/examples/flappy-cat/assets/images/pipe-red.png +0 -0
  29. package/examples/flappy-cat/assets/sfx/die.wav +0 -0
  30. package/examples/flappy-cat/assets/sfx/hit.wav +0 -0
  31. package/examples/flappy-cat/assets/sfx/point.wav +0 -0
  32. package/examples/flappy-cat/assets/sfx/wing.wav +0 -0
  33. package/examples/flappy-cat/dist/game.js +0 -0
  34. package/examples/flappy-cat/index.html +24 -0
  35. package/examples/flappy-cat/index.ts +0 -0
  36. package/examples/particle-test/assets/bird.png +0 -0
  37. package/examples/particle-test/dist/game.js +2 -0
  38. package/examples/particle-test/dist/game.js.LICENSE.txt +35 -0
  39. package/examples/particle-test/index.html +24 -0
  40. package/examples/particle-test/index.ts +30 -0
  41. package/examples/renderer-test/dist/game.js +2 -0
  42. package/examples/renderer-test/dist/game.js.LICENSE.txt +35 -0
  43. package/examples/renderer-test/index.html +24 -0
  44. package/examples/renderer-test/index.ts +9 -0
  45. package/examples/simple-battle/assets/bgm/battle.mp3 +0 -0
  46. package/examples/simple-battle/assets/bitmap-fonts/white-peaberry.fnt +107 -0
  47. package/examples/simple-battle/assets/bitmap-fonts/white-peaberry.png +0 -0
  48. package/examples/simple-battle/assets/joystick/joystick.png +0 -0
  49. package/examples/simple-battle/assets/joystick/knob.png +0 -0
  50. package/examples/simple-battle/assets/sfx/hero/die/die.wav +0 -0
  51. package/examples/simple-battle/assets/sfx/hero/heal/heal.wav +0 -0
  52. package/examples/simple-battle/assets/sfx/hero/hit/hit1.wav +0 -0
  53. package/examples/simple-battle/assets/sfx/hero/hit/hit2.wav +0 -0
  54. package/examples/simple-battle/assets/sfx/hero/hit/hit3.wav +0 -0
  55. package/examples/simple-battle/assets/sfx/hero/miss/miss1.wav +0 -0
  56. package/examples/simple-battle/assets/sfx/hero/miss/miss2.wav +0 -0
  57. package/examples/simple-battle/assets/sfx/hero/miss/miss3.wav +0 -0
  58. package/examples/simple-battle/assets/sfx/orc/die/die.wav +0 -0
  59. package/examples/simple-battle/assets/sfx/orc/hit/hit1.wav +0 -0
  60. package/examples/simple-battle/assets/sfx/orc/hit/hit2.wav +0 -0
  61. package/examples/simple-battle/assets/sfx/orc/hit/hit3.wav +0 -0
  62. package/examples/simple-battle/assets/sfx/orc/miss/miss1.wav +0 -0
  63. package/examples/simple-battle/assets/sfx/orc/miss/miss2.wav +0 -0
  64. package/examples/simple-battle/assets/sfx/orc/miss/miss3.wav +0 -0
  65. package/examples/simple-battle/assets/spritesheets/hero-atlas.json +289 -0
  66. package/examples/simple-battle/assets/spritesheets/hero.png +0 -0
  67. package/examples/simple-battle/assets/spritesheets/orc-atlas.json +289 -0
  68. package/examples/simple-battle/assets/spritesheets/orc.png +0 -0
  69. package/examples/simple-battle/assets/spritesheets/potion-atlas.json +83 -0
  70. package/examples/simple-battle/assets/spritesheets/potion.png +0 -0
  71. package/examples/simple-battle/dist/game.js +2 -0
  72. package/examples/simple-battle/dist/game.js.LICENSE.txt +35 -0
  73. package/examples/simple-battle/hud/damage-text.ts +45 -0
  74. package/examples/simple-battle/hud/heal-text.ts +45 -0
  75. package/examples/simple-battle/hud/hp-bar.ts +38 -0
  76. package/examples/simple-battle/index.html +24 -0
  77. package/examples/simple-battle/index.ts +41 -0
  78. package/examples/simple-battle/objects/character.ts +95 -0
  79. package/examples/simple-battle/objects/hero.ts +113 -0
  80. package/examples/simple-battle/objects/orc.ts +109 -0
  81. package/examples/simple-battle/objects/potion.ts +29 -0
  82. package/examples/simple-battle/stage.ts +176 -0
  83. package/examples/spine-test/assets/spine/spineboy.atlas +95 -0
  84. package/examples/spine-test/assets/spine/spineboy.png +0 -0
  85. package/examples/spine-test/assets/spine/spineboy.skel +0 -0
  86. package/examples/spine-test/dist/game.js +2 -0
  87. package/examples/spine-test/dist/game.js.LICENSE.txt +35 -0
  88. package/examples/spine-test/index.html +24 -0
  89. package/examples/spine-test/index.ts +29 -0
  90. package/examples/sprite-test/assets/bird.png +0 -0
  91. package/examples/sprite-test/assets/fire.png +0 -0
  92. package/examples/sprite-test/dist/game.js +2 -0
  93. package/examples/sprite-test/dist/game.js.LICENSE.txt +35 -0
  94. package/examples/sprite-test/index.html +24 -0
  95. package/examples/sprite-test/index.ts +41 -0
  96. package/examples/tsconfig.json +2 -1
  97. package/examples/webpack.config.js +14 -3
  98. package/jest.config.ts +10 -0
  99. package/lib/asset/audio.js +47 -11
  100. package/lib/asset/audio.js.map +1 -1
  101. package/lib/asset/loaders/audio.js +3 -3
  102. package/lib/asset/loaders/audio.js.map +1 -1
  103. package/lib/asset/loaders/binary.js +3 -3
  104. package/lib/asset/loaders/binary.js.map +1 -1
  105. package/lib/asset/loaders/bitmap-font.js +71 -0
  106. package/lib/asset/loaders/bitmap-font.js.map +1 -0
  107. package/lib/asset/loaders/font.js +1 -1
  108. package/lib/asset/loaders/font.js.map +1 -1
  109. package/lib/asset/loaders/loader.js +17 -12
  110. package/lib/asset/loaders/loader.js.map +1 -1
  111. package/lib/asset/loaders/spritesheet.js +6 -7
  112. package/lib/asset/loaders/spritesheet.js.map +1 -1
  113. package/lib/asset/loaders/text.js +3 -3
  114. package/lib/asset/loaders/text.js.map +1 -1
  115. package/lib/asset/loaders/texture.js +5 -4
  116. package/lib/asset/loaders/texture.js.map +1 -1
  117. package/lib/asset/preload.js +60 -56
  118. package/lib/asset/preload.js.map +1 -1
  119. package/lib/collision/check-collision.js +804 -0
  120. package/lib/collision/check-collision.js.map +1 -0
  121. package/lib/collision/check-collision.test.js +300 -0
  122. package/lib/collision/check-collision.test.js.map +1 -0
  123. package/lib/collision/colliders.js +8 -0
  124. package/lib/collision/colliders.js.map +1 -0
  125. package/lib/debug.js.map +1 -0
  126. package/lib/dom/dom-animated-sprite.js +121 -0
  127. package/lib/dom/dom-animated-sprite.js.map +1 -0
  128. package/lib/dom/dom-game-object.js +106 -0
  129. package/lib/dom/dom-game-object.js.map +1 -0
  130. package/lib/dom/dom-particle.js +105 -0
  131. package/lib/dom/dom-particle.js.map +1 -0
  132. package/lib/dom/dom-preload.js +43 -0
  133. package/lib/dom/dom-preload.js.map +1 -0
  134. package/lib/dom/dom-sprite.js +40 -0
  135. package/lib/dom/dom-sprite.js.map +1 -0
  136. package/lib/dom/dom-texture-loader.js +36 -0
  137. package/lib/dom/dom-texture-loader.js.map +1 -0
  138. package/lib/dom/dom-utils.js +20 -0
  139. package/lib/dom/dom-utils.js.map +1 -0
  140. package/lib/index copy.js +16 -0
  141. package/lib/index copy.js.map +1 -0
  142. package/lib/index.js +35 -10
  143. package/lib/index.js.map +1 -1
  144. package/lib/input/joystick.js +262 -0
  145. package/lib/input/joystick.js.map +1 -0
  146. package/lib/node/core/dirty-number.js +38 -0
  147. package/lib/node/core/dirty-number.js.map +1 -0
  148. package/lib/node/core/game-node.js +63 -0
  149. package/lib/node/core/game-node.js.map +1 -0
  150. package/lib/node/core/game-object.js +8 -0
  151. package/lib/node/core/game-object.js.map +1 -0
  152. package/lib/node/core/renderable.js +52 -0
  153. package/lib/node/core/renderable.js.map +1 -0
  154. package/lib/node/core/transform.js +59 -0
  155. package/lib/node/core/transform.js.map +1 -0
  156. package/lib/node/core/transformable.js +85 -0
  157. package/lib/node/core/transformable.js.map +1 -0
  158. package/lib/node/ext/animated-sprite.js +96 -0
  159. package/lib/node/ext/animated-sprite.js.map +1 -0
  160. package/lib/node/ext/bitmap-text.js +89 -0
  161. package/lib/node/ext/bitmap-text.js.map +1 -0
  162. package/lib/node/ext/circle.js +28 -0
  163. package/lib/node/ext/circle.js.map +1 -0
  164. package/lib/node/ext/deplay.js +20 -0
  165. package/lib/node/ext/deplay.js.map +1 -0
  166. package/lib/node/ext/dom-container.js +51 -0
  167. package/lib/node/ext/dom-container.js.map +1 -0
  168. package/lib/node/ext/interval.js +20 -0
  169. package/lib/node/ext/interval.js.map +1 -0
  170. package/lib/node/ext/particle.js +98 -0
  171. package/lib/node/ext/particle.js.map +1 -0
  172. package/lib/node/ext/rectangle.js +32 -0
  173. package/lib/node/ext/rectangle.js.map +1 -0
  174. package/lib/node/ext/spine.js +272 -0
  175. package/lib/node/ext/spine.js.map +1 -0
  176. package/lib/node/ext/sprite.js +42 -0
  177. package/lib/node/ext/sprite.js.map +1 -0
  178. package/lib/node/physics/physics-object.js +112 -0
  179. package/lib/node/physics/physics-object.js.map +1 -0
  180. package/lib/node/physics/physics-world.js +27 -0
  181. package/lib/node/physics/physics-world.js.map +1 -0
  182. package/lib/renderer/camera.js +19 -0
  183. package/lib/renderer/camera.js.map +1 -0
  184. package/lib/renderer/container-manager.js +29 -0
  185. package/lib/renderer/container-manager.js.map +1 -0
  186. package/lib/renderer/fps-display.js +18 -0
  187. package/lib/renderer/fps-display.js.map +1 -0
  188. package/lib/renderer/layer.js +12 -0
  189. package/lib/renderer/layer.js.map +1 -0
  190. package/lib/renderer/renderer.js +145 -0
  191. package/lib/renderer/renderer.js.map +1 -0
  192. package/lib/renderer/ticker.js +56 -0
  193. package/lib/renderer/ticker.js.map +1 -0
  194. package/lib/renderer/ticker.test.js +241 -0
  195. package/lib/renderer/ticker.test.js.map +1 -0
  196. package/lib/types/asset/audio.d.ts +5 -4
  197. package/lib/types/asset/audio.d.ts.map +1 -1
  198. package/lib/types/asset/loaders/audio.d.ts +1 -1
  199. package/lib/types/asset/loaders/audio.d.ts.map +1 -1
  200. package/lib/types/asset/loaders/binary.d.ts +1 -1
  201. package/lib/types/asset/loaders/binary.d.ts.map +1 -1
  202. package/lib/types/asset/loaders/bitmap-font.d.ts +16 -0
  203. package/lib/types/asset/loaders/bitmap-font.d.ts.map +1 -0
  204. package/lib/types/asset/loaders/font.d.ts +1 -1
  205. package/lib/types/asset/loaders/font.d.ts.map +1 -1
  206. package/lib/types/asset/loaders/loader.d.ts +6 -6
  207. package/lib/types/asset/loaders/loader.d.ts.map +1 -1
  208. package/lib/types/asset/loaders/spritesheet.d.ts +5 -5
  209. package/lib/types/asset/loaders/spritesheet.d.ts.map +1 -1
  210. package/lib/types/asset/loaders/text.d.ts +1 -1
  211. package/lib/types/asset/loaders/text.d.ts.map +1 -1
  212. package/lib/types/asset/loaders/texture.d.ts +2 -2
  213. package/lib/types/asset/loaders/texture.d.ts.map +1 -1
  214. package/lib/types/asset/preload.d.ts +5 -3
  215. package/lib/types/asset/preload.d.ts.map +1 -1
  216. package/lib/types/bitmap-font.js +2 -0
  217. package/lib/types/bitmap-font.js.map +1 -0
  218. package/lib/types/collision/check-collision.d.ts +4 -0
  219. package/lib/types/collision/check-collision.d.ts.map +1 -0
  220. package/lib/types/collision/check-collision.test.d.ts +2 -0
  221. package/lib/types/collision/check-collision.test.d.ts.map +1 -0
  222. package/lib/types/collision/colliders.d.ts +34 -0
  223. package/lib/types/collision/colliders.d.ts.map +1 -0
  224. package/lib/types/debug.d.ts.map +1 -0
  225. package/lib/types/dom/dom-animated-sprite.d.ts +29 -0
  226. package/lib/types/dom/dom-animated-sprite.d.ts.map +1 -0
  227. package/lib/types/dom/dom-game-object.d.ts +44 -0
  228. package/lib/types/dom/dom-game-object.d.ts.map +1 -0
  229. package/lib/types/dom/dom-particle.d.ts +30 -0
  230. package/lib/types/dom/dom-particle.d.ts.map +1 -0
  231. package/lib/types/dom/dom-preload.d.ts +2 -0
  232. package/lib/types/dom/dom-preload.d.ts.map +1 -0
  233. package/lib/types/dom/dom-sprite.d.ts +13 -0
  234. package/lib/types/dom/dom-sprite.d.ts.map +1 -0
  235. package/lib/types/dom/dom-texture-loader.d.ts +8 -0
  236. package/lib/types/dom/dom-texture-loader.d.ts.map +1 -0
  237. package/lib/types/dom/dom-utils.d.ts +3 -0
  238. package/lib/types/dom/dom-utils.d.ts.map +1 -0
  239. package/lib/types/index copy.d.ts +16 -0
  240. package/lib/types/index copy.d.ts.map +1 -0
  241. package/lib/types/index.d.ts +25 -11
  242. package/lib/types/index.d.ts.map +1 -1
  243. package/lib/types/input/joystick.d.ts +28 -0
  244. package/lib/types/input/joystick.d.ts.map +1 -0
  245. package/lib/types/node/core/dirty-number.d.ts +17 -0
  246. package/lib/types/node/core/dirty-number.d.ts.map +1 -0
  247. package/lib/types/node/core/game-node.d.ts +16 -0
  248. package/lib/types/node/core/game-node.d.ts.map +1 -0
  249. package/lib/types/node/core/game-object.d.ts +8 -0
  250. package/lib/types/node/core/game-object.d.ts.map +1 -0
  251. package/lib/types/node/core/renderable.d.ts +22 -0
  252. package/lib/types/node/core/renderable.d.ts.map +1 -0
  253. package/lib/types/node/core/transform.d.ts +25 -0
  254. package/lib/types/node/core/transform.d.ts.map +1 -0
  255. package/lib/types/node/core/transformable.d.ts +44 -0
  256. package/lib/types/node/core/transformable.d.ts.map +1 -0
  257. package/lib/types/node/ext/animated-sprite.d.ts +28 -0
  258. package/lib/types/node/ext/animated-sprite.d.ts.map +1 -0
  259. package/lib/types/node/ext/bitmap-text.d.ts +14 -0
  260. package/lib/types/node/ext/bitmap-text.d.ts.map +1 -0
  261. package/lib/types/node/ext/circle.d.ts +19 -0
  262. package/lib/types/node/ext/circle.d.ts.map +1 -0
  263. package/lib/types/node/ext/deplay.d.ts +8 -0
  264. package/lib/types/node/ext/deplay.d.ts.map +1 -0
  265. package/lib/types/node/ext/dom-container.d.ts +12 -0
  266. package/lib/types/node/ext/dom-container.d.ts.map +1 -0
  267. package/lib/types/node/ext/interval.d.ts +9 -0
  268. package/lib/types/node/ext/interval.d.ts.map +1 -0
  269. package/lib/types/node/ext/particle.d.ts +30 -0
  270. package/lib/types/node/ext/particle.d.ts.map +1 -0
  271. package/lib/types/node/ext/rectangle.d.ts +22 -0
  272. package/lib/types/node/ext/rectangle.d.ts.map +1 -0
  273. package/lib/types/node/ext/spine.d.ts +36 -0
  274. package/lib/types/node/ext/spine.d.ts.map +1 -0
  275. package/lib/types/node/ext/sprite.d.ts +13 -0
  276. package/lib/types/node/ext/sprite.d.ts.map +1 -0
  277. package/lib/types/node/physics/physics-object.d.ts +38 -0
  278. package/lib/types/node/physics/physics-object.d.ts.map +1 -0
  279. package/lib/types/node/physics/physics-world.d.ts +18 -0
  280. package/lib/types/node/physics/physics-world.d.ts.map +1 -0
  281. package/lib/types/renderer/camera.d.ts +13 -0
  282. package/lib/types/renderer/camera.d.ts.map +1 -0
  283. package/lib/types/renderer/container-manager.d.ts +9 -0
  284. package/lib/types/renderer/container-manager.d.ts.map +1 -0
  285. package/lib/types/renderer/fps-display.d.ts +7 -0
  286. package/lib/types/renderer/fps-display.d.ts.map +1 -0
  287. package/lib/types/renderer/layer.d.ts +7 -0
  288. package/lib/types/renderer/layer.d.ts.map +1 -0
  289. package/lib/types/renderer/renderer.d.ts +40 -0
  290. package/lib/types/renderer/renderer.d.ts.map +1 -0
  291. package/lib/types/renderer/ticker.d.ts +6 -0
  292. package/lib/types/renderer/ticker.d.ts.map +1 -0
  293. package/lib/types/renderer/ticker.test.d.ts +40 -0
  294. package/lib/types/renderer/ticker.test.d.ts.map +1 -0
  295. package/lib/types/types/bitmap-font.d.ts +18 -0
  296. package/lib/types/types/bitmap-font.d.ts.map +1 -0
  297. package/lib/types/utils/device.d.ts +2 -0
  298. package/lib/types/utils/device.d.ts.map +1 -0
  299. package/lib/utils/device.js +2 -0
  300. package/lib/utils/device.js.map +1 -0
  301. package/package.json +8 -7
  302. package/src/asset/audio.ts +134 -90
  303. package/src/asset/loaders/audio.ts +19 -19
  304. package/src/asset/loaders/binary.ts +16 -16
  305. package/src/asset/loaders/bitmap-font.ts +85 -0
  306. package/src/asset/loaders/font.ts +14 -14
  307. package/src/asset/loaders/loader.ts +27 -23
  308. package/src/asset/loaders/spritesheet.ts +34 -36
  309. package/src/asset/loaders/text.ts +15 -15
  310. package/src/asset/loaders/texture.ts +29 -28
  311. package/src/asset/preload.ts +75 -64
  312. package/src/collision/check-collision.test.ts +349 -0
  313. package/src/collision/check-collision.ts +821 -0
  314. package/src/collision/colliders.ts +19 -0
  315. package/src/debug.ts +5 -0
  316. package/src/dom/dom-animated-sprite.ts +153 -0
  317. package/src/dom/dom-game-object.ts +131 -0
  318. package/src/dom/dom-particle.ts +151 -0
  319. package/src/dom/dom-preload.ts +54 -0
  320. package/src/dom/dom-sprite.ts +50 -0
  321. package/src/dom/dom-texture-loader.ts +44 -0
  322. package/src/dom/dom-utils.ts +19 -0
  323. package/src/index.ts +46 -13
  324. package/src/input/joystick.ts +316 -0
  325. package/src/node/core/dirty-number.ts +45 -0
  326. package/src/node/core/game-node.ts +74 -0
  327. package/src/node/core/game-object.ts +11 -0
  328. package/src/node/core/renderable.ts +65 -0
  329. package/src/node/core/transform.ts +70 -0
  330. package/src/node/core/transformable.ts +111 -0
  331. package/src/node/ext/animated-sprite.ts +123 -0
  332. package/src/node/ext/bitmap-text.ts +109 -0
  333. package/src/node/ext/circle.ts +40 -0
  334. package/src/node/ext/deplay.ts +24 -0
  335. package/src/node/ext/dom-container.ts +62 -0
  336. package/src/node/ext/interval.ts +24 -0
  337. package/src/node/ext/particle.ts +142 -0
  338. package/src/node/ext/rectangle.ts +51 -0
  339. package/src/node/ext/spine.ts +323 -0
  340. package/src/node/ext/sprite.ts +53 -0
  341. package/src/node/physics/physics-object.ts +156 -0
  342. package/src/node/physics/physics-world.ts +40 -0
  343. package/src/renderer/camera.ts +25 -0
  344. package/src/renderer/container-manager.ts +36 -0
  345. package/src/renderer/fps-display.ts +21 -0
  346. package/src/renderer/layer.ts +15 -0
  347. package/src/renderer/renderer.ts +180 -0
  348. package/src/renderer/ticker.test.ts +325 -0
  349. package/src/renderer/ticker.ts +54 -0
  350. package/src/types/bitmap-font.ts +19 -0
  351. package/src/utils/device.ts +1 -0
  352. package/examples/test-dom/index.ts +0 -21
  353. package/lib/game-object/game-object-physics.js +0 -188
  354. package/lib/game-object/game-object-physics.js.map +0 -1
  355. package/lib/game-object/game-object-rendering.js +0 -35
  356. package/lib/game-object/game-object-rendering.js.map +0 -1
  357. package/lib/game-object/game-object.js +0 -162
  358. package/lib/game-object/game-object.js.map +0 -1
  359. package/lib/game-object/transform.js +0 -118
  360. package/lib/game-object/transform.js.map +0 -1
  361. package/lib/game-object-ext/animated-sprite.js +0 -117
  362. package/lib/game-object-ext/animated-sprite.js.map +0 -1
  363. package/lib/game-object-ext/dom-container.js +0 -56
  364. package/lib/game-object-ext/dom-container.js.map +0 -1
  365. package/lib/game-object-ext/rect.js +0 -30
  366. package/lib/game-object-ext/rect.js.map +0 -1
  367. package/lib/game-object-ext/spine.js +0 -206
  368. package/lib/game-object-ext/spine.js.map +0 -1
  369. package/lib/game-object-ext/sprite.js +0 -46
  370. package/lib/game-object-ext/sprite.js.map +0 -1
  371. package/lib/game-object-ext/text.js +0 -68
  372. package/lib/game-object-ext/text.js.map +0 -1
  373. package/lib/game-object-ext/tiling-sprite.js +0 -64
  374. package/lib/game-object-ext/tiling-sprite.js.map +0 -1
  375. package/lib/types/game-object/game-object-physics.d.ts +0 -42
  376. package/lib/types/game-object/game-object-physics.d.ts.map +0 -1
  377. package/lib/types/game-object/game-object-rendering.d.ts +0 -15
  378. package/lib/types/game-object/game-object-rendering.d.ts.map +0 -1
  379. package/lib/types/game-object/game-object.d.ts +0 -81
  380. package/lib/types/game-object/game-object.d.ts.map +0 -1
  381. package/lib/types/game-object/transform.d.ts +0 -43
  382. package/lib/types/game-object/transform.d.ts.map +0 -1
  383. package/lib/types/game-object-ext/animated-sprite.d.ts +0 -29
  384. package/lib/types/game-object-ext/animated-sprite.d.ts.map +0 -1
  385. package/lib/types/game-object-ext/dom-container.d.ts +0 -16
  386. package/lib/types/game-object-ext/dom-container.d.ts.map +0 -1
  387. package/lib/types/game-object-ext/rect.d.ts +0 -17
  388. package/lib/types/game-object-ext/rect.d.ts.map +0 -1
  389. package/lib/types/game-object-ext/spine.d.ts +0 -35
  390. package/lib/types/game-object-ext/spine.d.ts.map +0 -1
  391. package/lib/types/game-object-ext/sprite.d.ts +0 -14
  392. package/lib/types/game-object-ext/sprite.d.ts.map +0 -1
  393. package/lib/types/game-object-ext/text.d.ts +0 -26
  394. package/lib/types/game-object-ext/text.d.ts.map +0 -1
  395. package/lib/types/game-object-ext/tiling-sprite.d.ts +0 -20
  396. package/lib/types/game-object-ext/tiling-sprite.d.ts.map +0 -1
  397. package/lib/types/utils/debug.d.ts.map +0 -1
  398. package/lib/types/utils/go.d.ts +0 -26
  399. package/lib/types/utils/go.d.ts.map +0 -1
  400. package/lib/types/world/world-debug.d.ts +0 -11
  401. package/lib/types/world/world-debug.d.ts.map +0 -1
  402. package/lib/types/world/world-physics.d.ts +0 -16
  403. package/lib/types/world/world-physics.d.ts.map +0 -1
  404. package/lib/types/world/world-rendering.d.ts +0 -28
  405. package/lib/types/world/world-rendering.d.ts.map +0 -1
  406. package/lib/types/world/world.d.ts +0 -38
  407. package/lib/types/world/world.d.ts.map +0 -1
  408. package/lib/utils/debug.js.map +0 -1
  409. package/lib/utils/go.js +0 -33
  410. package/lib/utils/go.js.map +0 -1
  411. package/lib/world/world-debug.js +0 -89
  412. package/lib/world/world-debug.js.map +0 -1
  413. package/lib/world/world-physics.js +0 -45
  414. package/lib/world/world-physics.js.map +0 -1
  415. package/lib/world/world-rendering.js +0 -123
  416. package/lib/world/world-rendering.js.map +0 -1
  417. package/lib/world/world.js +0 -147
  418. package/lib/world/world.js.map +0 -1
  419. package/src/game-object/game-object-physics.ts +0 -191
  420. package/src/game-object/game-object-rendering.ts +0 -27
  421. package/src/game-object/game-object.ts +0 -190
  422. package/src/game-object/transform.ts +0 -164
  423. package/src/game-object-ext/animated-sprite.ts +0 -140
  424. package/src/game-object-ext/dom-container.ts +0 -67
  425. package/src/game-object-ext/rect.ts +0 -40
  426. package/src/game-object-ext/spine.ts +0 -235
  427. package/src/game-object-ext/sprite.ts +0 -55
  428. package/src/game-object-ext/text.ts +0 -83
  429. package/src/game-object-ext/tiling-sprite.ts +0 -73
  430. package/src/utils/debug.ts +0 -5
  431. package/src/utils/go.ts +0 -53
  432. package/src/world/world-debug.ts +0 -114
  433. package/src/world/world-physics.ts +0 -52
  434. package/src/world/world-rendering.ts +0 -145
  435. package/src/world/world.ts +0 -171
  436. /package/examples/{test-dom → collision-test}/index.html +0 -0
  437. /package/lib/{utils/debug.js → debug.js} +0 -0
  438. /package/lib/types/{utils/debug.d.ts → debug.d.ts} +0 -0
@@ -1,114 +0,0 @@
1
- import Matter from 'matter-js';
2
- import Stats from 'stats.js';
3
- import { debugMode } from '../utils/debug';
4
-
5
- export class WorldDebug {
6
- #container: HTMLElement;
7
- #stats?: Stats;
8
- #matterDebugRenderer?: Matter.Render;
9
-
10
- constructor(container: HTMLElement) {
11
- this.#container = container;
12
-
13
- if (debugMode) {
14
- const stats = new Stats();
15
- stats.dom.style.position = 'absolute';
16
- stats.showPanel(0);
17
- container.appendChild(stats.dom);
18
- this.#stats = stats;
19
- }
20
- }
21
-
22
- update() {
23
- this.#stats?.update();
24
- }
25
-
26
- createMatterDebugRenderer(engine: Matter.Engine, width: number, height: number) {
27
- if (debugMode) {
28
- const matterDebugRenderer = Matter.Render.create({
29
- element: this.#container,
30
- engine,
31
- options: {
32
- width,
33
- height,
34
- background: 'transparent',
35
- wireframes: false,
36
- showCollisions: true,
37
- pixelRatio: window.devicePixelRatio,
38
- },
39
- });
40
- this.#matterDebugRenderer = matterDebugRenderer;
41
-
42
- const debugCanvas = matterDebugRenderer.canvas;
43
- debugCanvas.style.position = 'absolute';
44
- debugCanvas.style.zIndex = '1';
45
- debugCanvas.style.touchAction = 'auto';
46
- Matter.Render.run(matterDebugRenderer);
47
-
48
- if (this.#lastRect) this.setMatterDebugRendererSize(this.#lastRect, this.#lastWidth, this.#lastHeight, this.#lastCameraX, this.#lastCameraY);
49
- }
50
- }
51
-
52
- #lastRect?: DOMRectReadOnly;
53
- #lastWidth = 0;
54
- #lastHeight = 0;
55
- #lastCameraX = 0;
56
- #lastCameraY = 0;
57
-
58
- setMatterDebugRendererSize(
59
- rect: DOMRectReadOnly,
60
- width: number,
61
- height: number,
62
- cameraX: number,
63
- cameraY: number,
64
- ) {
65
- this.#lastRect = rect;
66
- this.#lastWidth = width;
67
- this.#lastHeight = height;
68
- this.#lastCameraX = cameraX;
69
- this.#lastCameraY = cameraY;
70
-
71
- if (!debugMode || !this.#matterDebugRenderer) return;
72
-
73
- const r = this.#matterDebugRenderer;
74
- const pr = window.devicePixelRatio || 1;
75
-
76
- r.options.width = width;
77
- r.options.height = height;
78
-
79
- r.canvas.width = Math.max(1, Math.floor(width * pr));
80
- r.canvas.height = Math.max(1, Math.floor(height * pr));
81
-
82
- const scale = Math.min(rect.width / width, rect.height / height);
83
-
84
- const displayW = width * scale;
85
- const displayH = height * scale;
86
-
87
- const left = (rect.width - displayW) / 2;
88
- const top = (rect.height - displayH) / 2;
89
-
90
- r.canvas.style.width = `${displayW}px`;
91
- r.canvas.style.height = `${displayH}px`;
92
- r.canvas.style.left = `${left}px`;
93
- r.canvas.style.top = `${top}px`;
94
-
95
- this.setMatterDebugRendererCamera(cameraX, cameraY);
96
- }
97
-
98
- setMatterDebugRendererCamera(cameraX: number, cameraY: number) {
99
- if (this.#matterDebugRenderer) {
100
- const r = this.#matterDebugRenderer;
101
- const halfW = this.#lastWidth / 2;
102
- const halfH = this.#lastHeight / 2;
103
-
104
- r.bounds.min.x = cameraX - halfW;
105
- r.bounds.min.y = cameraY - halfH;
106
- r.bounds.max.x = cameraX + halfW;
107
- r.bounds.max.y = cameraY + halfH;
108
-
109
- Matter.Render.lookAt(r, r.bounds);
110
- }
111
- }
112
-
113
- destroy() { }
114
- }
@@ -1,52 +0,0 @@
1
- import { EventEmitter } from '@webtaku/event-emitter';
2
- import Matter from 'matter-js';
3
- import { GameObject } from '../game-object/game-object';
4
-
5
- export class WorldPhysics extends EventEmitter<{
6
- engineCreated: (engine: Matter.Engine) => void;
7
- collisionStart: (a: GameObject, b: GameObject) => void;
8
- }> {
9
- #engine?: Matter.Engine;
10
- #gravity = 0;
11
-
12
- get gravity() { return this.#gravity; }
13
- set gravity(v: number) {
14
- this.#gravity = v;
15
- if (this.#engine) this.#engine.gravity.y = v;
16
- }
17
-
18
- #createEngine() {
19
- this.#engine = Matter.Engine.create();
20
- this.#engine.gravity.y = this.#gravity;
21
-
22
- Matter.Events.on(this.#engine, 'collisionStart', (event) => {
23
- event.pairs.forEach((pair) => {
24
- const { bodyA, bodyB } = pair;
25
- this.emit('collisionStart', bodyA.plugin.owner, bodyB.plugin.owner);
26
- });
27
- });
28
-
29
- this.emit('engineCreated', this.#engine);
30
- }
31
-
32
- addBody(body: Matter.Body) {
33
- if (!this.#engine) this.#createEngine();
34
- Matter.World.add(this.#engine!.world, body);
35
- }
36
-
37
- removeBody(body: Matter.Body) {
38
- if (!this.#engine) return;
39
- Matter.World.remove(this.#engine!.world, body);
40
- }
41
-
42
- update(dt: number) {
43
- if (!this.#engine) return;
44
- const matterDt = dt * 1000;
45
- Matter.Engine.update(this.#engine, matterDt > 16.666 ? 16.666 : matterDt);
46
- }
47
-
48
- destroy() {
49
- if (this.#engine) Matter.Engine.clear(this.#engine);
50
- this.#engine = undefined;
51
- }
52
- }
@@ -1,145 +0,0 @@
1
- import { autoDetectRenderer, Container, EventEmitter, Renderer, Sprite } from "pixi.js";
2
- import { textureLoader } from '../asset/loaders/texture';
3
-
4
- export class WorldRendering extends EventEmitter<{
5
- positionChanged: () => void;
6
- }> {
7
- #renderer?: Renderer;
8
- #root = new Container();
9
- #backgroundAlpha = 1;
10
-
11
- #cameraX = 0;
12
- #cameraY = 0;
13
-
14
- centerX = 0;
15
- centerY = 0;
16
- renderWidth = 0;
17
- renderHeight = 0;
18
- renderScale = 1;
19
- canvasLeft = 0;
20
- canvasTop = 0;
21
-
22
- #backgroundColor = 0x304C79;
23
- get backgroundColor() { return this.#backgroundColor; }
24
- set backgroundColor(v: number) {
25
- this.#backgroundColor = v;
26
- if (this.#renderer) this.#renderer.background.color = v;
27
- }
28
-
29
- get backgroundAlpha() { return this.#backgroundAlpha; }
30
- set backgroundAlpha(v: number) {
31
- this.#backgroundAlpha = v;
32
- if (this.#renderer) this.#renderer.background.alpha = v;
33
- }
34
-
35
- async init(container: HTMLElement, width: number | undefined, height: number | undefined) {
36
- const renderer = await autoDetectRenderer({
37
- width,
38
- height,
39
- backgroundColor: this.#backgroundColor,
40
- backgroundAlpha: this.#backgroundAlpha,
41
- eventMode: 'none',
42
- resolution: window.devicePixelRatio,
43
- });
44
- this.#renderer = renderer;
45
-
46
- const canvas = renderer.canvas;
47
- canvas.style.position = 'absolute';
48
- canvas.style.touchAction = 'auto';
49
- canvas.style.borderRadius = container.style.borderRadius;
50
- container.appendChild(canvas);
51
-
52
- if (this.#lastRect) this.setRendererSize(this.#lastRect, this.#lastWidth, this.#lastHeight);
53
- }
54
-
55
- #applyPosition() {
56
- this.#root.x = this.centerX - this.#cameraX;
57
- this.#root.y = this.centerY - this.#cameraY;
58
-
59
- if (this.#backgroundSprite) {
60
- this.#backgroundSprite.x = this.#cameraX;
61
- this.#backgroundSprite.y = this.#cameraY;
62
- }
63
-
64
- this.emit('positionChanged');
65
- }
66
-
67
- #lastRect?: DOMRect;
68
- #lastWidth = 0;
69
- #lastHeight = 0;
70
-
71
- setRendererSize(rect: DOMRect, width: number, height: number) {
72
- this.#lastRect = rect;
73
- this.#lastWidth = width;
74
- this.#lastHeight = height;
75
-
76
- this.centerX = width / 2;
77
- this.centerY = height / 2;
78
- this.#applyPosition();
79
-
80
- this.renderWidth = width;
81
- this.renderHeight = height;
82
-
83
- const scale = Math.min(rect.width / width, rect.height / height);
84
- this.renderScale = scale;
85
-
86
- const displayW = width * scale;
87
- const displayH = height * scale;
88
-
89
- const left = (rect.width - displayW) / 2;
90
- const top = (rect.height - displayH) / 2;
91
- this.canvasLeft = left;
92
- this.canvasTop = top;
93
-
94
- if (!this.#renderer) return;
95
- this.#renderer.resize(width, height);
96
-
97
- const canvas = this.#renderer.canvas;
98
- canvas.style.width = `${displayW}px`;
99
- canvas.style.height = `${displayH}px`;
100
- canvas.style.left = `${left}px`;
101
- canvas.style.top = `${top}px`;
102
- }
103
-
104
- update() {
105
- this.#renderer?.render(this.#root);
106
- }
107
-
108
- get cameraX() { return this.#cameraX; }
109
- set cameraX(value: number) { this.#cameraX = value; this.#applyPosition(); }
110
- get cameraY() { return this.#cameraY; }
111
- set cameraY(value: number) { this.#cameraY = value; this.#applyPosition(); }
112
-
113
- addPixiChildToRoot(child: Container) {
114
- this.#root.addChild(child);
115
- }
116
-
117
- destroy() {
118
- this.#renderer?.destroy();
119
- this.#renderer = undefined;
120
- }
121
-
122
- #backgroundSprite?: Sprite;
123
- setBackgroundImage(image: string | undefined) {
124
- if (image) {
125
- if (!textureLoader.checkLoaded(image)) {
126
- console.info(`Background image not preloaded. Loading now: ${image}`);
127
- }
128
- textureLoader.load(image).then((texture) => {
129
- if (texture) {
130
- this.#backgroundSprite?.destroy();
131
- this.#backgroundSprite = new Sprite({
132
- x: this.#cameraX,
133
- y: this.#cameraY,
134
- texture,
135
- anchor: { x: 0.5, y: 0.5 },
136
- width: this.renderWidth,
137
- height: this.renderHeight,
138
- zIndex: -999999,
139
- });
140
- this.#root.addChild(this.#backgroundSprite);
141
- }
142
- });
143
- }
144
- }
145
- }
@@ -1,171 +0,0 @@
1
- import { GameObject, GameObjectOptions } from '../game-object/game-object';
2
- import { WorldTransform } from '../game-object/transform';
3
- import { debugMode } from '../utils/debug';
4
- import { WorldDebug } from './world-debug';
5
- import { WorldPhysics } from "./world-physics";
6
- import { WorldRendering } from "./world-rendering";
7
-
8
- export type WorldOptions = {
9
- width?: number;
10
- height?: number;
11
- backgroundColor?: number;
12
- backgroundAlpha?: number;
13
- gravity?: number;
14
- } & GameObjectOptions;
15
-
16
- export class World extends GameObject<{
17
- resize: (width: number, height: number) => void;
18
- collisionStart: (a: GameObject, b: GameObject) => void;
19
- }> {
20
- container = document.createElement('div');
21
- #containerResizeObserver: ResizeObserver;
22
-
23
- _worldRendering = new WorldRendering();
24
- _worldPhysics = new WorldPhysics();
25
- #worldDebug = new WorldDebug(this.container);
26
-
27
- #width?: number;
28
- #height?: number;
29
-
30
- #hasEverBeenConnected = false;
31
- #destroyed = false;
32
-
33
- #pt = new WorldTransform();
34
- #update(dt: number) {
35
- if (this.container.isConnected) {
36
- if (!this.#hasEverBeenConnected) {
37
- this.#hasEverBeenConnected = true;
38
- this.#applySize();
39
- }
40
-
41
- this._worldPhysics.update(dt);
42
- this._engineUpdate(dt, this.#pt);
43
- this._worldRendering.update();
44
- this.#worldDebug.update();
45
-
46
- this._containerSizeDirty = false;
47
- }
48
-
49
- else if (this.#hasEverBeenConnected) {
50
- this.#destroy();
51
- return;
52
- }
53
- }
54
-
55
- #lastContainerW = 0;
56
- #lastContainerH = 0;
57
- _containerSizeDirty = false;
58
-
59
- #applySize() {
60
- const rect = this.container.getBoundingClientRect();
61
-
62
- if (rect.width === this.#lastContainerW && rect.height === this.#lastContainerH) return;
63
- this.#lastContainerW = rect.width;
64
- this.#lastContainerH = rect.height;
65
- this._containerSizeDirty = true;
66
-
67
- if (rect.width === 0 || rect.height === 0) return;
68
-
69
- const canvasWidth = this.#width ?? rect.width;
70
- const canvasHeight = this.#height ?? rect.height;
71
-
72
- this._worldRendering.setRendererSize(rect, canvasWidth, canvasHeight);
73
- this.#worldDebug.setMatterDebugRendererSize(rect, canvasWidth, canvasHeight, this.cameraX, this.cameraY);
74
-
75
- this.emit('resize', this.width, this.height);
76
- }
77
-
78
- #destroy() {
79
- this.#containerResizeObserver.disconnect();
80
- this._worldRendering.destroy();
81
- this._worldPhysics.destroy();
82
- this.#worldDebug.destroy();
83
-
84
- this.#destroyed = true;
85
- }
86
-
87
- async #init() {
88
- await this._worldRendering.init(this.container, this.#width, this.#height);
89
- this.#applySize();
90
-
91
- let prevTime = 0;
92
- let lagSeconds = 0;
93
- let fpsCap: number | undefined;
94
-
95
- const step = (timestamp: number) => {
96
- if (this.#destroyed) return;
97
-
98
- const dt = (timestamp - prevTime) / 1000;
99
- if (dt > 0) {
100
- if (fpsCap !== undefined && fpsCap > 0) {
101
- lagSeconds += dt;
102
- const fixedStep = 1 / fpsCap;
103
- if (lagSeconds >= fixedStep) {
104
- this.#update(fixedStep);
105
- if (lagSeconds >= fixedStep * 2) { this.#update(dt); lagSeconds = 0; }
106
- else { lagSeconds -= fixedStep; }
107
- }
108
- } else {
109
- this.#update(dt);
110
- }
111
- prevTime = timestamp;
112
- }
113
- requestAnimationFrame(step);
114
- };
115
- requestAnimationFrame(step);
116
-
117
- if (debugMode) {
118
- if (!document.hasFocus()) fpsCap = 6;
119
- window.addEventListener('blur', () => fpsCap = 6);
120
- window.addEventListener('focus', () => fpsCap = undefined);
121
- window.addEventListener('pageshow', (event) => { if (event.persisted) fpsCap = undefined; });
122
- }
123
- }
124
-
125
- constructor(opts?: WorldOptions) {
126
- super(opts);
127
- this._setWorld(this);
128
- this._worldRendering.addPixiChildToRoot(this._rendering._container);
129
-
130
- this.#containerResizeObserver = new ResizeObserver(this.#applySize.bind(this));
131
- this.#containerResizeObserver.observe(this.container);
132
-
133
- this._worldRendering.on('positionChanged', () => this.#worldDebug.setMatterDebugRendererCamera(this.cameraX, this.cameraY));
134
- this._worldPhysics.on('engineCreated', (engine) => this.#worldDebug.createMatterDebugRenderer(engine, this.width, this.height));
135
- this._worldPhysics.on('collisionStart', (a, b) => this.emit('collisionStart', a, b));
136
- ``
137
- if (opts) {
138
- if (opts.width !== undefined) this.#width = opts.width;
139
- if (opts.height !== undefined) this.#height = opts.height;
140
- if (opts.backgroundColor !== undefined) this.backgroundColor = opts.backgroundColor;
141
- if (opts.backgroundAlpha !== undefined) this.backgroundAlpha = opts.backgroundAlpha;
142
- if (opts.gravity !== undefined) this.gravity = opts.gravity;
143
- }
144
-
145
- this.#init();
146
- }
147
-
148
- get width() { return this.#width ?? this._worldRendering.renderWidth; }
149
- set width(v: number) { this.#width = v; this.#applySize(); }
150
- get height() { return this.#height ?? this._worldRendering.renderHeight; }
151
- set height(v: number) { this.#height = v; this.#applySize(); }
152
-
153
- get backgroundColor() { return this._worldRendering.backgroundColor; }
154
- set backgroundColor(v: number) { this._worldRendering.backgroundColor = v; }
155
- get backgroundAlpha() { return this._worldRendering.backgroundAlpha; }
156
- set backgroundAlpha(v: number) { this._worldRendering.backgroundAlpha = v; }
157
- get gravity() { return this._worldPhysics.gravity; }
158
- set gravity(v: number) { this._worldPhysics.gravity = v; }
159
-
160
- get cameraX() { return this._worldRendering.cameraX; }
161
- set cameraX(v: number) { this._worldRendering.cameraX = v; }
162
- get cameraY() { return this._worldRendering.cameraY; }
163
- set cameraY(v: number) { this._worldRendering.cameraY = v; }
164
-
165
- #backgroundImage?: string;
166
- get backgroundImage() { return this.#backgroundImage; }
167
- set backgroundImage(image: string | undefined) {
168
- this.#backgroundImage = image;
169
- this._worldRendering.setBackgroundImage(image);
170
- }
171
- }
File without changes
File without changes