kiwiengine 0.0.1-alpha → 0.5.3

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 (599) hide show
  1. package/README.ko.md +550 -0
  2. package/README.md +575 -4
  3. package/examples/auto-battle/assets/bgm/battle.mp3 +0 -0
  4. package/examples/auto-battle/assets/bitmap-fonts/white-peaberry.fnt +107 -0
  5. package/examples/auto-battle/assets/bitmap-fonts/white-peaberry.png +0 -0
  6. package/examples/auto-battle/assets/joystick/joystick.png +0 -0
  7. package/examples/auto-battle/assets/joystick/knob.png +0 -0
  8. package/examples/auto-battle/assets/sfx/hero/die/die.wav +0 -0
  9. package/examples/auto-battle/assets/sfx/hero/heal/heal.wav +0 -0
  10. package/examples/auto-battle/assets/sfx/hero/hit/hit1.wav +0 -0
  11. package/examples/auto-battle/assets/sfx/hero/hit/hit2.wav +0 -0
  12. package/examples/auto-battle/assets/sfx/hero/hit/hit3.wav +0 -0
  13. package/examples/auto-battle/assets/sfx/hero/miss/miss1.wav +0 -0
  14. package/examples/auto-battle/assets/sfx/hero/miss/miss2.wav +0 -0
  15. package/examples/auto-battle/assets/sfx/hero/miss/miss3.wav +0 -0
  16. package/examples/auto-battle/assets/sfx/orc/die/die.wav +0 -0
  17. package/examples/auto-battle/assets/sfx/orc/hit/hit1.wav +0 -0
  18. package/examples/auto-battle/assets/sfx/orc/hit/hit2.wav +0 -0
  19. package/examples/auto-battle/assets/sfx/orc/hit/hit3.wav +0 -0
  20. package/examples/auto-battle/assets/sfx/orc/miss/miss1.wav +0 -0
  21. package/examples/auto-battle/assets/sfx/orc/miss/miss2.wav +0 -0
  22. package/examples/auto-battle/assets/sfx/orc/miss/miss3.wav +0 -0
  23. package/examples/auto-battle/assets/spritesheets/hero-atlas.json +246 -0
  24. package/examples/auto-battle/assets/spritesheets/hero.png +0 -0
  25. package/examples/auto-battle/assets/spritesheets/orc-atlas.json +246 -0
  26. package/examples/auto-battle/assets/spritesheets/orc.png +0 -0
  27. package/examples/auto-battle/assets/spritesheets/potion-atlas.json +68 -0
  28. package/examples/auto-battle/assets/spritesheets/potion.png +0 -0
  29. package/examples/auto-battle/dist/game.js +2 -0
  30. package/examples/auto-battle/dist/game.js.LICENSE.txt +35 -0
  31. package/examples/auto-battle/hud/damage-text.ts +46 -0
  32. package/examples/auto-battle/hud/heal-text.ts +46 -0
  33. package/examples/auto-battle/hud/hp-bar.ts +38 -0
  34. package/examples/auto-battle/index.ts +41 -0
  35. package/examples/auto-battle/objects/character.ts +95 -0
  36. package/examples/auto-battle/objects/hero.ts +119 -0
  37. package/examples/auto-battle/objects/orc.ts +107 -0
  38. package/examples/auto-battle/objects/potion.ts +27 -0
  39. package/examples/auto-battle/stage.ts +366 -0
  40. package/examples/battle-benchmark-matterjs/assets/bgm/battle.mp3 +0 -0
  41. package/examples/battle-benchmark-matterjs/assets/bitmap-fonts/white-peaberry.fnt +107 -0
  42. package/examples/battle-benchmark-matterjs/assets/bitmap-fonts/white-peaberry.png +0 -0
  43. package/examples/battle-benchmark-matterjs/assets/joystick/joystick.png +0 -0
  44. package/examples/battle-benchmark-matterjs/assets/joystick/knob.png +0 -0
  45. package/examples/battle-benchmark-matterjs/assets/sfx/hero/die/die.wav +0 -0
  46. package/examples/battle-benchmark-matterjs/assets/sfx/hero/heal/heal.wav +0 -0
  47. package/examples/battle-benchmark-matterjs/assets/sfx/hero/hit/hit1.wav +0 -0
  48. package/examples/battle-benchmark-matterjs/assets/sfx/hero/hit/hit2.wav +0 -0
  49. package/examples/battle-benchmark-matterjs/assets/sfx/hero/hit/hit3.wav +0 -0
  50. package/examples/battle-benchmark-matterjs/assets/sfx/hero/miss/miss1.wav +0 -0
  51. package/examples/battle-benchmark-matterjs/assets/sfx/hero/miss/miss2.wav +0 -0
  52. package/examples/battle-benchmark-matterjs/assets/sfx/hero/miss/miss3.wav +0 -0
  53. package/examples/battle-benchmark-matterjs/assets/sfx/orc/die/die.wav +0 -0
  54. package/examples/battle-benchmark-matterjs/assets/sfx/orc/hit/hit1.wav +0 -0
  55. package/examples/battle-benchmark-matterjs/assets/sfx/orc/hit/hit2.wav +0 -0
  56. package/examples/battle-benchmark-matterjs/assets/sfx/orc/hit/hit3.wav +0 -0
  57. package/examples/battle-benchmark-matterjs/assets/sfx/orc/miss/miss1.wav +0 -0
  58. package/examples/battle-benchmark-matterjs/assets/sfx/orc/miss/miss2.wav +0 -0
  59. package/examples/battle-benchmark-matterjs/assets/sfx/orc/miss/miss3.wav +0 -0
  60. package/examples/battle-benchmark-matterjs/assets/spritesheets/hero-atlas.json +246 -0
  61. package/examples/battle-benchmark-matterjs/assets/spritesheets/hero.png +0 -0
  62. package/examples/battle-benchmark-matterjs/assets/spritesheets/orc-atlas.json +246 -0
  63. package/examples/battle-benchmark-matterjs/assets/spritesheets/orc.png +0 -0
  64. package/examples/battle-benchmark-matterjs/assets/spritesheets/potion-atlas.json +68 -0
  65. package/examples/battle-benchmark-matterjs/assets/spritesheets/potion.png +0 -0
  66. package/examples/battle-benchmark-matterjs/dist/game.js +2 -0
  67. package/examples/battle-benchmark-matterjs/dist/game.js.LICENSE.txt +35 -0
  68. package/examples/battle-benchmark-matterjs/hud/damage-text.ts +46 -0
  69. package/examples/battle-benchmark-matterjs/hud/heal-text.ts +46 -0
  70. package/examples/battle-benchmark-matterjs/hud/hp-bar.ts +38 -0
  71. package/examples/battle-benchmark-matterjs/index.html +24 -0
  72. package/examples/battle-benchmark-matterjs/index.ts +41 -0
  73. package/examples/battle-benchmark-matterjs/objects/character.ts +95 -0
  74. package/examples/battle-benchmark-matterjs/objects/hero.ts +111 -0
  75. package/examples/battle-benchmark-matterjs/objects/orc.ts +107 -0
  76. package/examples/battle-benchmark-matterjs/objects/potion.ts +27 -0
  77. package/examples/battle-benchmark-matterjs/stage.ts +177 -0
  78. package/examples/battle-benchmark-separation/assets/bgm/battle.mp3 +0 -0
  79. package/examples/battle-benchmark-separation/assets/bitmap-fonts/white-peaberry.fnt +107 -0
  80. package/examples/battle-benchmark-separation/assets/bitmap-fonts/white-peaberry.png +0 -0
  81. package/examples/battle-benchmark-separation/assets/joystick/joystick.png +0 -0
  82. package/examples/battle-benchmark-separation/assets/joystick/knob.png +0 -0
  83. package/examples/battle-benchmark-separation/assets/sfx/hero/die/die.wav +0 -0
  84. package/examples/battle-benchmark-separation/assets/sfx/hero/heal/heal.wav +0 -0
  85. package/examples/battle-benchmark-separation/assets/sfx/hero/hit/hit1.wav +0 -0
  86. package/examples/battle-benchmark-separation/assets/sfx/hero/hit/hit2.wav +0 -0
  87. package/examples/battle-benchmark-separation/assets/sfx/hero/hit/hit3.wav +0 -0
  88. package/examples/battle-benchmark-separation/assets/sfx/hero/miss/miss1.wav +0 -0
  89. package/examples/battle-benchmark-separation/assets/sfx/hero/miss/miss2.wav +0 -0
  90. package/examples/battle-benchmark-separation/assets/sfx/hero/miss/miss3.wav +0 -0
  91. package/examples/battle-benchmark-separation/assets/sfx/orc/die/die.wav +0 -0
  92. package/examples/battle-benchmark-separation/assets/sfx/orc/hit/hit1.wav +0 -0
  93. package/examples/battle-benchmark-separation/assets/sfx/orc/hit/hit2.wav +0 -0
  94. package/examples/battle-benchmark-separation/assets/sfx/orc/hit/hit3.wav +0 -0
  95. package/examples/battle-benchmark-separation/assets/sfx/orc/miss/miss1.wav +0 -0
  96. package/examples/battle-benchmark-separation/assets/sfx/orc/miss/miss2.wav +0 -0
  97. package/examples/battle-benchmark-separation/assets/sfx/orc/miss/miss3.wav +0 -0
  98. package/examples/battle-benchmark-separation/assets/spritesheets/hero-atlas.json +246 -0
  99. package/examples/battle-benchmark-separation/assets/spritesheets/hero.png +0 -0
  100. package/examples/battle-benchmark-separation/assets/spritesheets/orc-atlas.json +246 -0
  101. package/examples/battle-benchmark-separation/assets/spritesheets/orc.png +0 -0
  102. package/examples/battle-benchmark-separation/assets/spritesheets/potion-atlas.json +68 -0
  103. package/examples/battle-benchmark-separation/assets/spritesheets/potion.png +0 -0
  104. package/examples/battle-benchmark-separation/dist/game.js +2 -0
  105. package/examples/battle-benchmark-separation/dist/game.js.LICENSE.txt +35 -0
  106. package/examples/battle-benchmark-separation/hud/damage-text.ts +46 -0
  107. package/examples/battle-benchmark-separation/hud/heal-text.ts +46 -0
  108. package/examples/battle-benchmark-separation/hud/hp-bar.ts +38 -0
  109. package/examples/battle-benchmark-separation/index.html +24 -0
  110. package/examples/battle-benchmark-separation/index.ts +41 -0
  111. package/examples/battle-benchmark-separation/objects/character.ts +225 -0
  112. package/examples/battle-benchmark-separation/objects/hero.ts +110 -0
  113. package/examples/battle-benchmark-separation/objects/orc.ts +213 -0
  114. package/examples/battle-benchmark-separation/objects/potion.ts +27 -0
  115. package/examples/battle-benchmark-separation/stage.ts +178 -0
  116. package/examples/battle-benchmark-separation2/assets/bgm/battle.mp3 +0 -0
  117. package/examples/battle-benchmark-separation2/assets/bitmap-fonts/white-peaberry.fnt +107 -0
  118. package/examples/battle-benchmark-separation2/assets/bitmap-fonts/white-peaberry.png +0 -0
  119. package/examples/battle-benchmark-separation2/assets/joystick/joystick.png +0 -0
  120. package/examples/battle-benchmark-separation2/assets/joystick/knob.png +0 -0
  121. package/examples/battle-benchmark-separation2/assets/sfx/hero/die/die.wav +0 -0
  122. package/examples/battle-benchmark-separation2/assets/sfx/hero/heal/heal.wav +0 -0
  123. package/examples/battle-benchmark-separation2/assets/sfx/hero/hit/hit1.wav +0 -0
  124. package/examples/battle-benchmark-separation2/assets/sfx/hero/hit/hit2.wav +0 -0
  125. package/examples/battle-benchmark-separation2/assets/sfx/hero/hit/hit3.wav +0 -0
  126. package/examples/battle-benchmark-separation2/assets/sfx/hero/miss/miss1.wav +0 -0
  127. package/examples/battle-benchmark-separation2/assets/sfx/hero/miss/miss2.wav +0 -0
  128. package/examples/battle-benchmark-separation2/assets/sfx/hero/miss/miss3.wav +0 -0
  129. package/examples/battle-benchmark-separation2/assets/sfx/orc/die/die.wav +0 -0
  130. package/examples/battle-benchmark-separation2/assets/sfx/orc/hit/hit1.wav +0 -0
  131. package/examples/battle-benchmark-separation2/assets/sfx/orc/hit/hit2.wav +0 -0
  132. package/examples/battle-benchmark-separation2/assets/sfx/orc/hit/hit3.wav +0 -0
  133. package/examples/battle-benchmark-separation2/assets/sfx/orc/miss/miss1.wav +0 -0
  134. package/examples/battle-benchmark-separation2/assets/sfx/orc/miss/miss2.wav +0 -0
  135. package/examples/battle-benchmark-separation2/assets/sfx/orc/miss/miss3.wav +0 -0
  136. package/examples/battle-benchmark-separation2/assets/spritesheets/hero-atlas.json +246 -0
  137. package/examples/battle-benchmark-separation2/assets/spritesheets/hero.png +0 -0
  138. package/examples/battle-benchmark-separation2/assets/spritesheets/orc-atlas.json +246 -0
  139. package/examples/battle-benchmark-separation2/assets/spritesheets/orc.png +0 -0
  140. package/examples/battle-benchmark-separation2/assets/spritesheets/potion-atlas.json +68 -0
  141. package/examples/battle-benchmark-separation2/assets/spritesheets/potion.png +0 -0
  142. package/examples/battle-benchmark-separation2/dist/game.js +2 -0
  143. package/examples/battle-benchmark-separation2/dist/game.js.LICENSE.txt +35 -0
  144. package/examples/battle-benchmark-separation2/hud/damage-text.ts +46 -0
  145. package/examples/battle-benchmark-separation2/hud/heal-text.ts +46 -0
  146. package/examples/battle-benchmark-separation2/hud/hp-bar.ts +38 -0
  147. package/examples/battle-benchmark-separation2/index.html +24 -0
  148. package/examples/battle-benchmark-separation2/index.ts +41 -0
  149. package/examples/battle-benchmark-separation2/objects/character.ts +195 -0
  150. package/examples/battle-benchmark-separation2/objects/hero.ts +110 -0
  151. package/examples/battle-benchmark-separation2/objects/orc.ts +213 -0
  152. package/examples/battle-benchmark-separation2/objects/potion.ts +27 -0
  153. package/examples/battle-benchmark-separation2/stage.ts +178 -0
  154. package/examples/collision-test/assets/cat.png +0 -0
  155. package/examples/collision-test/dist/game.js +2 -0
  156. package/examples/collision-test/dist/game.js.LICENSE.txt +35 -0
  157. package/examples/collision-test/index.html +24 -0
  158. package/examples/collision-test/index.ts +30 -0
  159. package/examples/dom-particle-test/assets/bird.png +0 -0
  160. package/examples/dom-particle-test/dist/game.js +2 -0
  161. package/examples/dom-particle-test/dist/game.js.LICENSE.txt +35 -0
  162. package/examples/dom-particle-test/index.html +24 -0
  163. package/examples/dom-particle-test/index.ts +27 -0
  164. package/examples/dom-sprite-test/assets/bird.png +0 -0
  165. package/examples/dom-sprite-test/assets/fire.png +0 -0
  166. package/examples/dom-sprite-test/assets/run.png +0 -0
  167. package/examples/dom-sprite-test/dist/game.js +2 -0
  168. package/examples/dom-sprite-test/dist/game.js.LICENSE.txt +35 -0
  169. package/examples/dom-sprite-test/index.html +24 -0
  170. package/examples/dom-sprite-test/index.ts +35 -0
  171. package/examples/dom-test/dist/game.js +2 -0
  172. package/examples/dom-test/dist/game.js.LICENSE.txt +35 -0
  173. package/examples/dom-test/index.html +24 -0
  174. package/examples/dom-test/index.ts +22 -0
  175. package/examples/particle-test/assets/bird.png +0 -0
  176. package/examples/particle-test/dist/game.js +2 -0
  177. package/examples/particle-test/dist/game.js.LICENSE.txt +35 -0
  178. package/examples/particle-test/index.html +24 -0
  179. package/examples/particle-test/index.ts +30 -0
  180. package/examples/renderer-test/dist/game.js +2 -0
  181. package/examples/renderer-test/dist/game.js.LICENSE.txt +35 -0
  182. package/examples/renderer-test/index.html +24 -0
  183. package/examples/renderer-test/index.ts +9 -0
  184. package/examples/simple-battle/assets/bgm/battle.mp3 +0 -0
  185. package/examples/simple-battle/assets/bitmap-fonts/white-peaberry.fnt +107 -0
  186. package/examples/simple-battle/assets/bitmap-fonts/white-peaberry.png +0 -0
  187. package/examples/simple-battle/assets/joystick/joystick.png +0 -0
  188. package/examples/simple-battle/assets/joystick/knob.png +0 -0
  189. package/examples/simple-battle/assets/sfx/hero/die/die.wav +0 -0
  190. package/examples/simple-battle/assets/sfx/hero/heal/heal.wav +0 -0
  191. package/examples/simple-battle/assets/sfx/hero/hit/hit1.wav +0 -0
  192. package/examples/simple-battle/assets/sfx/hero/hit/hit2.wav +0 -0
  193. package/examples/simple-battle/assets/sfx/hero/hit/hit3.wav +0 -0
  194. package/examples/simple-battle/assets/sfx/hero/miss/miss1.wav +0 -0
  195. package/examples/simple-battle/assets/sfx/hero/miss/miss2.wav +0 -0
  196. package/examples/simple-battle/assets/sfx/hero/miss/miss3.wav +0 -0
  197. package/examples/simple-battle/assets/sfx/orc/die/die.wav +0 -0
  198. package/examples/simple-battle/assets/sfx/orc/hit/hit1.wav +0 -0
  199. package/examples/simple-battle/assets/sfx/orc/hit/hit2.wav +0 -0
  200. package/examples/simple-battle/assets/sfx/orc/hit/hit3.wav +0 -0
  201. package/examples/simple-battle/assets/sfx/orc/miss/miss1.wav +0 -0
  202. package/examples/simple-battle/assets/sfx/orc/miss/miss2.wav +0 -0
  203. package/examples/simple-battle/assets/sfx/orc/miss/miss3.wav +0 -0
  204. package/examples/simple-battle/assets/spritesheets/hero-atlas.json +246 -0
  205. package/examples/simple-battle/assets/spritesheets/hero.png +0 -0
  206. package/examples/simple-battle/assets/spritesheets/orc-atlas.json +246 -0
  207. package/examples/simple-battle/assets/spritesheets/orc.png +0 -0
  208. package/examples/simple-battle/assets/spritesheets/potion-atlas.json +68 -0
  209. package/examples/simple-battle/assets/spritesheets/potion.png +0 -0
  210. package/examples/simple-battle/dist/game.js +2 -0
  211. package/examples/simple-battle/dist/game.js.LICENSE.txt +35 -0
  212. package/examples/simple-battle/hud/damage-text.ts +46 -0
  213. package/examples/simple-battle/hud/heal-text.ts +46 -0
  214. package/examples/simple-battle/hud/hp-bar.ts +38 -0
  215. package/examples/simple-battle/index.html +24 -0
  216. package/examples/simple-battle/index.ts +41 -0
  217. package/examples/simple-battle/objects/character.ts +95 -0
  218. package/examples/simple-battle/objects/hero.ts +111 -0
  219. package/examples/simple-battle/objects/orc.ts +107 -0
  220. package/examples/simple-battle/objects/potion.ts +27 -0
  221. package/examples/simple-battle/stage.ts +174 -0
  222. package/examples/spine-test/assets/spine/spineboy.atlas +95 -0
  223. package/examples/spine-test/assets/spine/spineboy.png +0 -0
  224. package/examples/spine-test/assets/spine/spineboy.skel +0 -0
  225. package/examples/spine-test/dist/game.js +2 -0
  226. package/examples/spine-test/dist/game.js.LICENSE.txt +35 -0
  227. package/examples/spine-test/index.html +24 -0
  228. package/examples/spine-test/index.ts +29 -0
  229. package/examples/sprite-test/assets/bird.png +0 -0
  230. package/examples/sprite-test/assets/fire.png +0 -0
  231. package/examples/sprite-test/dist/game.js +2 -0
  232. package/examples/sprite-test/dist/game.js.LICENSE.txt +35 -0
  233. package/examples/sprite-test/index.html +24 -0
  234. package/examples/sprite-test/index.ts +38 -0
  235. package/examples/tsconfig.json +2 -1
  236. package/examples/webpack.config.js +17 -3
  237. package/jest.config.ts +10 -0
  238. package/lib/asset/audio.js +47 -11
  239. package/lib/asset/audio.js.map +1 -1
  240. package/lib/asset/loaders/audio.js +7 -4
  241. package/lib/asset/loaders/audio.js.map +1 -1
  242. package/lib/asset/loaders/binary.js +7 -4
  243. package/lib/asset/loaders/binary.js.map +1 -1
  244. package/lib/asset/loaders/bitmap-font.js +74 -0
  245. package/lib/asset/loaders/bitmap-font.js.map +1 -0
  246. package/lib/asset/loaders/font.js +4 -1
  247. package/lib/asset/loaders/font.js.map +1 -1
  248. package/lib/asset/loaders/loader.js +17 -12
  249. package/lib/asset/loaders/loader.js.map +1 -1
  250. package/lib/asset/loaders/spritesheet.js +18 -8
  251. package/lib/asset/loaders/spritesheet.js.map +1 -1
  252. package/lib/asset/loaders/text.js +6 -3
  253. package/lib/asset/loaders/text.js.map +1 -1
  254. package/lib/asset/loaders/texture.js +22 -26
  255. package/lib/asset/loaders/texture.js.map +1 -1
  256. package/lib/asset/preload.js +60 -56
  257. package/lib/asset/preload.js.map +1 -1
  258. package/lib/collision/check-collision.js +804 -0
  259. package/lib/collision/check-collision.js.map +1 -0
  260. package/lib/collision/check-collision.test.js +300 -0
  261. package/lib/collision/check-collision.test.js.map +1 -0
  262. package/lib/collision/colliders.js +8 -0
  263. package/lib/collision/colliders.js.map +1 -0
  264. package/lib/debug.js.map +1 -0
  265. package/lib/dom/dom-animated-sprite.js +106 -0
  266. package/lib/dom/dom-animated-sprite.js.map +1 -0
  267. package/lib/dom/dom-game-object.js +108 -0
  268. package/lib/dom/dom-game-object.js.map +1 -0
  269. package/lib/dom/dom-particle.js +105 -0
  270. package/lib/dom/dom-particle.js.map +1 -0
  271. package/lib/dom/dom-preload.js +43 -0
  272. package/lib/dom/dom-preload.js.map +1 -0
  273. package/lib/dom/dom-sprite.js +40 -0
  274. package/lib/dom/dom-sprite.js.map +1 -0
  275. package/lib/dom/dom-texture-loader.js +36 -0
  276. package/lib/dom/dom-texture-loader.js.map +1 -0
  277. package/lib/dom/dom-utils.js +20 -0
  278. package/lib/dom/dom-utils.js.map +1 -0
  279. package/lib/index copy.js +16 -0
  280. package/lib/index copy.js.map +1 -0
  281. package/lib/index.js +36 -10
  282. package/lib/index.js.map +1 -1
  283. package/lib/input/joystick.js +262 -0
  284. package/lib/input/joystick.js.map +1 -0
  285. package/lib/node/core/dirty-number.js +19 -0
  286. package/lib/node/core/dirty-number.js.map +1 -0
  287. package/lib/node/core/game-node.js +63 -0
  288. package/lib/node/core/game-node.js.map +1 -0
  289. package/lib/node/core/game-object.js +8 -0
  290. package/lib/node/core/game-object.js.map +1 -0
  291. package/lib/node/core/renderable.js +59 -0
  292. package/lib/node/core/renderable.js.map +1 -0
  293. package/lib/node/core/transform.js +70 -0
  294. package/lib/node/core/transform.js.map +1 -0
  295. package/lib/node/core/transformable.js +85 -0
  296. package/lib/node/core/transformable.js.map +1 -0
  297. package/lib/node/ext/animated-sprite.js +77 -0
  298. package/lib/node/ext/animated-sprite.js.map +1 -0
  299. package/lib/node/ext/bitmap-text.js +93 -0
  300. package/lib/node/ext/bitmap-text.js.map +1 -0
  301. package/lib/node/ext/circle.js +43 -0
  302. package/lib/node/ext/circle.js.map +1 -0
  303. package/lib/node/ext/deplay.js +22 -0
  304. package/lib/node/ext/deplay.js.map +1 -0
  305. package/lib/node/ext/dom-container.js +51 -0
  306. package/lib/node/ext/dom-container.js.map +1 -0
  307. package/lib/node/ext/interval.js +22 -0
  308. package/lib/node/ext/interval.js.map +1 -0
  309. package/lib/node/ext/particle.js +98 -0
  310. package/lib/node/ext/particle.js.map +1 -0
  311. package/lib/node/ext/rectangle.js +52 -0
  312. package/lib/node/ext/rectangle.js.map +1 -0
  313. package/lib/node/ext/spine.js +272 -0
  314. package/lib/node/ext/spine.js.map +1 -0
  315. package/lib/node/ext/sprite.js +42 -0
  316. package/lib/node/ext/sprite.js.map +1 -0
  317. package/lib/node/physics/physics-object.js +92 -0
  318. package/lib/node/physics/physics-object.js.map +1 -0
  319. package/lib/node/physics/physics-world.js +29 -0
  320. package/lib/node/physics/physics-world.js.map +1 -0
  321. package/lib/node/physics/rigidbodies.js +7 -0
  322. package/lib/node/physics/rigidbodies.js.map +1 -0
  323. package/lib/renderer/camera.js +19 -0
  324. package/lib/renderer/camera.js.map +1 -0
  325. package/lib/renderer/container-manager.js +29 -0
  326. package/lib/renderer/container-manager.js.map +1 -0
  327. package/lib/renderer/fps-display.js +18 -0
  328. package/lib/renderer/fps-display.js.map +1 -0
  329. package/lib/renderer/layer.js +12 -0
  330. package/lib/renderer/layer.js.map +1 -0
  331. package/lib/renderer/renderer.js +146 -0
  332. package/lib/renderer/renderer.js.map +1 -0
  333. package/lib/renderer/ticker.js +56 -0
  334. package/lib/renderer/ticker.js.map +1 -0
  335. package/lib/renderer/ticker.test.js +241 -0
  336. package/lib/renderer/ticker.test.js.map +1 -0
  337. package/lib/types/animation-atlas.js +2 -0
  338. package/lib/types/animation-atlas.js.map +1 -0
  339. package/lib/types/asset/audio.d.ts +5 -4
  340. package/lib/types/asset/audio.d.ts.map +1 -1
  341. package/lib/types/asset/loaders/audio.d.ts +2 -1
  342. package/lib/types/asset/loaders/audio.d.ts.map +1 -1
  343. package/lib/types/asset/loaders/binary.d.ts +2 -1
  344. package/lib/types/asset/loaders/binary.d.ts.map +1 -1
  345. package/lib/types/asset/loaders/bitmap-font.d.ts +17 -0
  346. package/lib/types/asset/loaders/bitmap-font.d.ts.map +1 -0
  347. package/lib/types/asset/loaders/font.d.ts +2 -1
  348. package/lib/types/asset/loaders/font.d.ts.map +1 -1
  349. package/lib/types/asset/loaders/loader.d.ts +6 -6
  350. package/lib/types/asset/loaders/loader.d.ts.map +1 -1
  351. package/lib/types/asset/loaders/spritesheet.d.ts +14 -6
  352. package/lib/types/asset/loaders/spritesheet.d.ts.map +1 -1
  353. package/lib/types/asset/loaders/text.d.ts +2 -1
  354. package/lib/types/asset/loaders/text.d.ts.map +1 -1
  355. package/lib/types/asset/loaders/texture.d.ts +2 -2
  356. package/lib/types/asset/loaders/texture.d.ts.map +1 -1
  357. package/lib/types/asset/preload.d.ts +7 -5
  358. package/lib/types/asset/preload.d.ts.map +1 -1
  359. package/lib/types/atlas copy.js +2 -0
  360. package/lib/types/atlas copy.js.map +1 -0
  361. package/lib/types/atlas.js +2 -0
  362. package/lib/types/atlas.js.map +1 -0
  363. package/lib/types/bitmap-font.js +2 -0
  364. package/lib/types/bitmap-font.js.map +1 -0
  365. package/lib/types/collision/check-collision.d.ts +4 -0
  366. package/lib/types/collision/check-collision.d.ts.map +1 -0
  367. package/lib/types/collision/check-collision.test.d.ts +2 -0
  368. package/lib/types/collision/check-collision.test.d.ts.map +1 -0
  369. package/lib/types/collision/colliders.d.ts +34 -0
  370. package/lib/types/collision/colliders.d.ts.map +1 -0
  371. package/lib/types/debug.d.ts.map +1 -0
  372. package/lib/types/dom/dom-animated-sprite.d.ts +23 -0
  373. package/lib/types/dom/dom-animated-sprite.d.ts.map +1 -0
  374. package/lib/types/dom/dom-game-object.d.ts +44 -0
  375. package/lib/types/dom/dom-game-object.d.ts.map +1 -0
  376. package/lib/types/dom/dom-particle.d.ts +30 -0
  377. package/lib/types/dom/dom-particle.d.ts.map +1 -0
  378. package/lib/types/dom/dom-preload.d.ts +2 -0
  379. package/lib/types/dom/dom-preload.d.ts.map +1 -0
  380. package/lib/types/dom/dom-sprite.d.ts +13 -0
  381. package/lib/types/dom/dom-sprite.d.ts.map +1 -0
  382. package/lib/types/dom/dom-texture-loader.d.ts +8 -0
  383. package/lib/types/dom/dom-texture-loader.d.ts.map +1 -0
  384. package/lib/types/dom/dom-utils.d.ts +3 -0
  385. package/lib/types/dom/dom-utils.d.ts.map +1 -0
  386. package/lib/types/index copy.d.ts +16 -0
  387. package/lib/types/index copy.d.ts.map +1 -0
  388. package/lib/types/index.d.ts +26 -11
  389. package/lib/types/index.d.ts.map +1 -1
  390. package/lib/types/input/joystick.d.ts +28 -0
  391. package/lib/types/input/joystick.d.ts.map +1 -0
  392. package/lib/types/node/core/dirty-number.d.ts +9 -0
  393. package/lib/types/node/core/dirty-number.d.ts.map +1 -0
  394. package/lib/types/node/core/game-node.d.ts +16 -0
  395. package/lib/types/node/core/game-node.d.ts.map +1 -0
  396. package/lib/types/node/core/game-object.d.ts +8 -0
  397. package/lib/types/node/core/game-object.d.ts.map +1 -0
  398. package/lib/types/node/core/renderable.d.ts +23 -0
  399. package/lib/types/node/core/renderable.d.ts.map +1 -0
  400. package/lib/types/node/core/transform.d.ts +27 -0
  401. package/lib/types/node/core/transform.d.ts.map +1 -0
  402. package/lib/types/node/core/transformable.d.ts +44 -0
  403. package/lib/types/node/core/transformable.d.ts.map +1 -0
  404. package/lib/types/node/ext/animated-sprite.d.ts +22 -0
  405. package/lib/types/node/ext/animated-sprite.d.ts.map +1 -0
  406. package/lib/types/node/ext/bitmap-text.d.ts +14 -0
  407. package/lib/types/node/ext/bitmap-text.d.ts.map +1 -0
  408. package/lib/types/node/ext/circle.d.ts +19 -0
  409. package/lib/types/node/ext/circle.d.ts.map +1 -0
  410. package/lib/types/node/ext/deplay.d.ts +8 -0
  411. package/lib/types/node/ext/deplay.d.ts.map +1 -0
  412. package/lib/types/node/ext/dom-container.d.ts +12 -0
  413. package/lib/types/node/ext/dom-container.d.ts.map +1 -0
  414. package/lib/types/node/ext/interval.d.ts +9 -0
  415. package/lib/types/node/ext/interval.d.ts.map +1 -0
  416. package/lib/types/node/ext/particle.d.ts +30 -0
  417. package/lib/types/node/ext/particle.d.ts.map +1 -0
  418. package/lib/types/node/ext/rectangle.d.ts +22 -0
  419. package/lib/types/node/ext/rectangle.d.ts.map +1 -0
  420. package/lib/types/node/ext/spine.d.ts +36 -0
  421. package/lib/types/node/ext/spine.d.ts.map +1 -0
  422. package/lib/types/node/ext/sprite.d.ts +13 -0
  423. package/lib/types/node/ext/sprite.d.ts.map +1 -0
  424. package/lib/types/node/physics/physics-object.d.ts +38 -0
  425. package/lib/types/node/physics/physics-object.d.ts.map +1 -0
  426. package/lib/types/node/physics/physics-world.d.ts +18 -0
  427. package/lib/types/node/physics/physics-world.d.ts.map +1 -0
  428. package/lib/types/node/physics/rigidbodies.d.ts +23 -0
  429. package/lib/types/node/physics/rigidbodies.d.ts.map +1 -0
  430. package/lib/types/renderer/camera.d.ts +13 -0
  431. package/lib/types/renderer/camera.d.ts.map +1 -0
  432. package/lib/types/renderer/container-manager.d.ts +9 -0
  433. package/lib/types/renderer/container-manager.d.ts.map +1 -0
  434. package/lib/types/renderer/fps-display.d.ts +7 -0
  435. package/lib/types/renderer/fps-display.d.ts.map +1 -0
  436. package/lib/types/renderer/layer.d.ts +7 -0
  437. package/lib/types/renderer/layer.d.ts.map +1 -0
  438. package/lib/types/renderer/renderer.d.ts +40 -0
  439. package/lib/types/renderer/renderer.d.ts.map +1 -0
  440. package/lib/types/renderer/ticker.d.ts +6 -0
  441. package/lib/types/renderer/ticker.d.ts.map +1 -0
  442. package/lib/types/renderer/ticker.test.d.ts +40 -0
  443. package/lib/types/renderer/ticker.test.d.ts.map +1 -0
  444. package/lib/types/sprite-atlas.js +2 -0
  445. package/lib/types/sprite-atlas.js.map +1 -0
  446. package/lib/types/types/animation-atlas.d.ts +14 -0
  447. package/lib/types/types/animation-atlas.d.ts.map +1 -0
  448. package/lib/types/types/atlas copy.d.ts +12 -0
  449. package/lib/types/types/atlas copy.d.ts.map +1 -0
  450. package/lib/types/types/atlas.d.ts +16 -0
  451. package/lib/types/types/atlas.d.ts.map +1 -0
  452. package/lib/types/types/bitmap-font.d.ts +18 -0
  453. package/lib/types/types/bitmap-font.d.ts.map +1 -0
  454. package/lib/types/types/sprite-atlas.d.ts +13 -0
  455. package/lib/types/types/sprite-atlas.d.ts.map +1 -0
  456. package/lib/types/utils/device.d.ts +2 -0
  457. package/lib/types/utils/device.d.ts.map +1 -0
  458. package/lib/utils/device.js +2 -0
  459. package/lib/utils/device.js.map +1 -0
  460. package/package.json +8 -7
  461. package/src/asset/audio.ts +134 -90
  462. package/src/asset/loaders/audio.ts +23 -20
  463. package/src/asset/loaders/binary.ts +20 -16
  464. package/src/asset/loaders/bitmap-font.ts +91 -0
  465. package/src/asset/loaders/font.ts +18 -14
  466. package/src/asset/loaders/loader.ts +27 -23
  467. package/src/asset/loaders/spritesheet.ts +47 -36
  468. package/src/asset/loaders/text.ts +19 -15
  469. package/src/asset/loaders/texture.ts +30 -37
  470. package/src/asset/preload.ts +71 -64
  471. package/src/collision/check-collision.test.ts +349 -0
  472. package/src/collision/check-collision.ts +821 -0
  473. package/src/collision/colliders.ts +19 -0
  474. package/src/debug.ts +5 -0
  475. package/src/dom/dom-animated-sprite.ts +132 -0
  476. package/src/dom/dom-game-object.ts +134 -0
  477. package/src/dom/dom-particle.ts +151 -0
  478. package/src/dom/dom-preload.ts +54 -0
  479. package/src/dom/dom-sprite.ts +50 -0
  480. package/src/dom/dom-texture-loader.ts +44 -0
  481. package/src/dom/dom-utils.ts +19 -0
  482. package/src/index.ts +47 -13
  483. package/src/input/joystick.ts +316 -0
  484. package/src/node/core/dirty-number.ts +21 -0
  485. package/src/node/core/game-node.ts +74 -0
  486. package/src/node/core/game-object.ts +11 -0
  487. package/src/node/core/renderable.ts +72 -0
  488. package/src/node/core/transform.ts +82 -0
  489. package/src/node/core/transformable.ts +111 -0
  490. package/src/node/ext/animated-sprite.ts +103 -0
  491. package/src/node/ext/bitmap-text.ts +113 -0
  492. package/src/node/ext/circle.ts +55 -0
  493. package/src/node/ext/deplay.ts +25 -0
  494. package/src/node/ext/dom-container.ts +62 -0
  495. package/src/node/ext/interval.ts +25 -0
  496. package/src/node/ext/particle.ts +142 -0
  497. package/src/node/ext/rectangle.ts +71 -0
  498. package/src/node/ext/spine.ts +323 -0
  499. package/src/node/ext/sprite.ts +53 -0
  500. package/src/node/physics/physics-object.ts +127 -0
  501. package/src/node/physics/physics-world.ts +41 -0
  502. package/src/node/physics/rigidbodies.ts +14 -0
  503. package/src/renderer/camera.ts +25 -0
  504. package/src/renderer/container-manager.ts +36 -0
  505. package/src/renderer/fps-display.ts +21 -0
  506. package/src/renderer/layer.ts +15 -0
  507. package/src/renderer/renderer.ts +181 -0
  508. package/src/renderer/ticker.test.ts +325 -0
  509. package/src/renderer/ticker.ts +54 -0
  510. package/src/types/atlas.ts +17 -0
  511. package/src/types/bitmap-font.ts +19 -0
  512. package/src/utils/device.ts +1 -0
  513. package/examples/test-dom/index.ts +0 -21
  514. package/lib/game-object/game-object-physics.js +0 -188
  515. package/lib/game-object/game-object-physics.js.map +0 -1
  516. package/lib/game-object/game-object-rendering.js +0 -35
  517. package/lib/game-object/game-object-rendering.js.map +0 -1
  518. package/lib/game-object/game-object.js +0 -162
  519. package/lib/game-object/game-object.js.map +0 -1
  520. package/lib/game-object/transform.js +0 -118
  521. package/lib/game-object/transform.js.map +0 -1
  522. package/lib/game-object-ext/animated-sprite.js +0 -117
  523. package/lib/game-object-ext/animated-sprite.js.map +0 -1
  524. package/lib/game-object-ext/dom-container.js +0 -56
  525. package/lib/game-object-ext/dom-container.js.map +0 -1
  526. package/lib/game-object-ext/rect.js +0 -30
  527. package/lib/game-object-ext/rect.js.map +0 -1
  528. package/lib/game-object-ext/spine.js +0 -206
  529. package/lib/game-object-ext/spine.js.map +0 -1
  530. package/lib/game-object-ext/sprite.js +0 -46
  531. package/lib/game-object-ext/sprite.js.map +0 -1
  532. package/lib/game-object-ext/text.js +0 -68
  533. package/lib/game-object-ext/text.js.map +0 -1
  534. package/lib/game-object-ext/tiling-sprite.js +0 -64
  535. package/lib/game-object-ext/tiling-sprite.js.map +0 -1
  536. package/lib/types/game-object/game-object-physics.d.ts +0 -42
  537. package/lib/types/game-object/game-object-physics.d.ts.map +0 -1
  538. package/lib/types/game-object/game-object-rendering.d.ts +0 -15
  539. package/lib/types/game-object/game-object-rendering.d.ts.map +0 -1
  540. package/lib/types/game-object/game-object.d.ts +0 -81
  541. package/lib/types/game-object/game-object.d.ts.map +0 -1
  542. package/lib/types/game-object/transform.d.ts +0 -43
  543. package/lib/types/game-object/transform.d.ts.map +0 -1
  544. package/lib/types/game-object-ext/animated-sprite.d.ts +0 -29
  545. package/lib/types/game-object-ext/animated-sprite.d.ts.map +0 -1
  546. package/lib/types/game-object-ext/dom-container.d.ts +0 -16
  547. package/lib/types/game-object-ext/dom-container.d.ts.map +0 -1
  548. package/lib/types/game-object-ext/rect.d.ts +0 -17
  549. package/lib/types/game-object-ext/rect.d.ts.map +0 -1
  550. package/lib/types/game-object-ext/spine.d.ts +0 -35
  551. package/lib/types/game-object-ext/spine.d.ts.map +0 -1
  552. package/lib/types/game-object-ext/sprite.d.ts +0 -14
  553. package/lib/types/game-object-ext/sprite.d.ts.map +0 -1
  554. package/lib/types/game-object-ext/text.d.ts +0 -26
  555. package/lib/types/game-object-ext/text.d.ts.map +0 -1
  556. package/lib/types/game-object-ext/tiling-sprite.d.ts +0 -20
  557. package/lib/types/game-object-ext/tiling-sprite.d.ts.map +0 -1
  558. package/lib/types/utils/debug.d.ts.map +0 -1
  559. package/lib/types/utils/go.d.ts +0 -26
  560. package/lib/types/utils/go.d.ts.map +0 -1
  561. package/lib/types/world/world-debug.d.ts +0 -11
  562. package/lib/types/world/world-debug.d.ts.map +0 -1
  563. package/lib/types/world/world-physics.d.ts +0 -16
  564. package/lib/types/world/world-physics.d.ts.map +0 -1
  565. package/lib/types/world/world-rendering.d.ts +0 -28
  566. package/lib/types/world/world-rendering.d.ts.map +0 -1
  567. package/lib/types/world/world.d.ts +0 -38
  568. package/lib/types/world/world.d.ts.map +0 -1
  569. package/lib/utils/debug.js.map +0 -1
  570. package/lib/utils/go.js +0 -33
  571. package/lib/utils/go.js.map +0 -1
  572. package/lib/world/world-debug.js +0 -89
  573. package/lib/world/world-debug.js.map +0 -1
  574. package/lib/world/world-physics.js +0 -45
  575. package/lib/world/world-physics.js.map +0 -1
  576. package/lib/world/world-rendering.js +0 -123
  577. package/lib/world/world-rendering.js.map +0 -1
  578. package/lib/world/world.js +0 -147
  579. package/lib/world/world.js.map +0 -1
  580. package/src/game-object/game-object-physics.ts +0 -191
  581. package/src/game-object/game-object-rendering.ts +0 -27
  582. package/src/game-object/game-object.ts +0 -190
  583. package/src/game-object/transform.ts +0 -164
  584. package/src/game-object-ext/animated-sprite.ts +0 -140
  585. package/src/game-object-ext/dom-container.ts +0 -67
  586. package/src/game-object-ext/rect.ts +0 -40
  587. package/src/game-object-ext/spine.ts +0 -235
  588. package/src/game-object-ext/sprite.ts +0 -55
  589. package/src/game-object-ext/text.ts +0 -83
  590. package/src/game-object-ext/tiling-sprite.ts +0 -73
  591. package/src/utils/debug.ts +0 -5
  592. package/src/utils/go.ts +0 -53
  593. package/src/world/world-debug.ts +0 -114
  594. package/src/world/world-physics.ts +0 -52
  595. package/src/world/world-rendering.ts +0 -145
  596. package/src/world/world.ts +0 -171
  597. /package/examples/{test-dom → auto-battle}/index.html +0 -0
  598. /package/lib/{utils/debug.js → debug.js} +0 -0
  599. /package/lib/types/{utils/debug.d.ts → debug.d.ts} +0 -0
package/lib/utils/go.js DELETED
@@ -1,33 +0,0 @@
1
- import { AnimatedSpriteObject } from '../game-object-ext/animated-sprite';
2
- import { DomContainerObject } from '../game-object-ext/dom-container';
3
- import { RectangleObject } from '../game-object-ext/rect';
4
- import { SpineObject } from '../game-object-ext/spine';
5
- import { SpriteObject } from '../game-object-ext/sprite';
6
- import { TextObject } from '../game-object-ext/text';
7
- import { TilingSpriteObject } from '../game-object-ext/tiling-sprite';
8
- import { GameObject } from '../game-object/game-object';
9
- const GameObjectClassMap = {
10
- 'go': GameObject,
11
- 'sprite': SpriteObject,
12
- 'animated-sprite': AnimatedSpriteObject,
13
- 'tiling-sprite': TilingSpriteObject,
14
- 'spine': SpineObject,
15
- 'dom': DomContainerObject,
16
- 'text': TextObject,
17
- 'rect': RectangleObject,
18
- };
19
- function go(name = '', ...args) {
20
- const go = new GameObjectClassMap[(name || 'go')]();
21
- for (const arg of args) {
22
- if (arg instanceof GameObject)
23
- go.add(arg);
24
- else if (arg) {
25
- for (const key in arg) {
26
- go[key] = arg[key];
27
- }
28
- }
29
- }
30
- return go;
31
- }
32
- export { go };
33
- //# sourceMappingURL=go.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"go.js","sourceRoot":"","sources":["../../src/utils/go.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD,MAAM,kBAAkB,GAAG;IACzB,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE,YAAY;IACtB,iBAAiB,EAAE,oBAAoB;IACvC,eAAe,EAAE,kBAAkB;IACnC,OAAO,EAAE,WAAW;IACpB,KAAK,EAAE,kBAAkB;IACzB,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,eAAe;CACf,CAAC;AAgBX,SAAS,EAAE,CACT,OAAU,EAAO,EACjB,GAAG,IAA4D;IAE/D,MAAM,EAAE,GAAG,IAAI,kBAAkB,CAAC,CAAC,IAAI,IAAI,IAAI,CAA4B,CAAC,EAAE,CAAC;IAE/E,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,YAAY,UAAU;YAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;aACtC,IAAI,GAAG,EAAE,CAAC;YACb,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;gBACrB,EAAU,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAyB,CAAC;AACnC,CAAC;AAED,OAAO,EAAE,EAAE,EAAE,CAAC","sourcesContent":["import { AnimatedSpriteObject } from '../game-object-ext/animated-sprite';\nimport { DomContainerObject } from '../game-object-ext/dom-container';\nimport { RectangleObject } from '../game-object-ext/rect';\nimport { SpineObject } from '../game-object-ext/spine';\nimport { SpriteObject } from '../game-object-ext/sprite';\nimport { TextObject } from '../game-object-ext/text';\nimport { TilingSpriteObject } from '../game-object-ext/tiling-sprite';\nimport { GameObject } from '../game-object/game-object';\n\nconst GameObjectClassMap = {\n 'go': GameObject,\n 'sprite': SpriteObject,\n 'animated-sprite': AnimatedSpriteObject,\n 'tiling-sprite': TilingSpriteObject,\n 'spine': SpineObject,\n 'dom': DomContainerObject,\n 'text': TextObject,\n 'rect': RectangleObject,\n} as const;\n\ntype GameObjectNameMap = {\n [K in keyof typeof GameObjectClassMap]: InstanceType<(typeof GameObjectClassMap)[K]>;\n};\n\ntype Name = '' | keyof GameObjectNameMap;\n\ntype GameObjectByName<T extends Name> = (\n T extends '' ? GameObject\n : (\n T extends keyof GameObjectNameMap ? GameObjectNameMap[T]\n : GameObject\n )\n);\n\nfunction go<T extends Name>(\n name: T = '' as T,\n ...args: (GameObjectByName<T> | Partial<GameObjectByName<T>>)[]\n): GameObjectByName<T> {\n const go = new GameObjectClassMap[(name || 'go') as keyof GameObjectNameMap]();\n\n for (const arg of args) {\n if (arg instanceof GameObject) go.add(arg);\n else if (arg) {\n for (const key in arg) {\n (go as any)[key] = arg[key];\n }\n }\n }\n\n return go as GameObjectByName<T>;\n}\n\nexport { go };\n"]}
@@ -1,89 +0,0 @@
1
- import Matter from 'matter-js';
2
- import Stats from 'stats.js';
3
- import { debugMode } from '../utils/debug';
4
- export class WorldDebug {
5
- #container;
6
- #stats;
7
- #matterDebugRenderer;
8
- constructor(container) {
9
- this.#container = container;
10
- if (debugMode) {
11
- const stats = new Stats();
12
- stats.dom.style.position = 'absolute';
13
- stats.showPanel(0);
14
- container.appendChild(stats.dom);
15
- this.#stats = stats;
16
- }
17
- }
18
- update() {
19
- this.#stats?.update();
20
- }
21
- createMatterDebugRenderer(engine, width, height) {
22
- if (debugMode) {
23
- const matterDebugRenderer = Matter.Render.create({
24
- element: this.#container,
25
- engine,
26
- options: {
27
- width,
28
- height,
29
- background: 'transparent',
30
- wireframes: false,
31
- showCollisions: true,
32
- pixelRatio: window.devicePixelRatio,
33
- },
34
- });
35
- this.#matterDebugRenderer = matterDebugRenderer;
36
- const debugCanvas = matterDebugRenderer.canvas;
37
- debugCanvas.style.position = 'absolute';
38
- debugCanvas.style.zIndex = '1';
39
- debugCanvas.style.touchAction = 'auto';
40
- Matter.Render.run(matterDebugRenderer);
41
- if (this.#lastRect)
42
- this.setMatterDebugRendererSize(this.#lastRect, this.#lastWidth, this.#lastHeight, this.#lastCameraX, this.#lastCameraY);
43
- }
44
- }
45
- #lastRect;
46
- #lastWidth = 0;
47
- #lastHeight = 0;
48
- #lastCameraX = 0;
49
- #lastCameraY = 0;
50
- setMatterDebugRendererSize(rect, width, height, cameraX, cameraY) {
51
- this.#lastRect = rect;
52
- this.#lastWidth = width;
53
- this.#lastHeight = height;
54
- this.#lastCameraX = cameraX;
55
- this.#lastCameraY = cameraY;
56
- if (!debugMode || !this.#matterDebugRenderer)
57
- return;
58
- const r = this.#matterDebugRenderer;
59
- const pr = window.devicePixelRatio || 1;
60
- r.options.width = width;
61
- r.options.height = height;
62
- r.canvas.width = Math.max(1, Math.floor(width * pr));
63
- r.canvas.height = Math.max(1, Math.floor(height * pr));
64
- const scale = Math.min(rect.width / width, rect.height / height);
65
- const displayW = width * scale;
66
- const displayH = height * scale;
67
- const left = (rect.width - displayW) / 2;
68
- const top = (rect.height - displayH) / 2;
69
- r.canvas.style.width = `${displayW}px`;
70
- r.canvas.style.height = `${displayH}px`;
71
- r.canvas.style.left = `${left}px`;
72
- r.canvas.style.top = `${top}px`;
73
- this.setMatterDebugRendererCamera(cameraX, cameraY);
74
- }
75
- setMatterDebugRendererCamera(cameraX, cameraY) {
76
- if (this.#matterDebugRenderer) {
77
- const r = this.#matterDebugRenderer;
78
- const halfW = this.#lastWidth / 2;
79
- const halfH = this.#lastHeight / 2;
80
- r.bounds.min.x = cameraX - halfW;
81
- r.bounds.min.y = cameraY - halfH;
82
- r.bounds.max.x = cameraX + halfW;
83
- r.bounds.max.y = cameraY + halfH;
84
- Matter.Render.lookAt(r, r.bounds);
85
- }
86
- }
87
- destroy() { }
88
- }
89
- //# sourceMappingURL=world-debug.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"world-debug.js","sourceRoot":"","sources":["../../src/world/world-debug.ts"],"names":[],"mappings":"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","sourcesContent":["import Matter from 'matter-js';\nimport Stats from 'stats.js';\nimport { debugMode } from '../utils/debug';\n\nexport class WorldDebug {\n #container: HTMLElement;\n #stats?: Stats;\n #matterDebugRenderer?: Matter.Render;\n\n constructor(container: HTMLElement) {\n this.#container = container;\n\n if (debugMode) {\n const stats = new Stats();\n stats.dom.style.position = 'absolute';\n stats.showPanel(0);\n container.appendChild(stats.dom);\n this.#stats = stats;\n }\n }\n\n update() {\n this.#stats?.update();\n }\n\n createMatterDebugRenderer(engine: Matter.Engine, width: number, height: number) {\n if (debugMode) {\n const matterDebugRenderer = Matter.Render.create({\n element: this.#container,\n engine,\n options: {\n width,\n height,\n background: 'transparent',\n wireframes: false,\n showCollisions: true,\n pixelRatio: window.devicePixelRatio,\n },\n });\n this.#matterDebugRenderer = matterDebugRenderer;\n\n const debugCanvas = matterDebugRenderer.canvas;\n debugCanvas.style.position = 'absolute';\n debugCanvas.style.zIndex = '1';\n debugCanvas.style.touchAction = 'auto';\n Matter.Render.run(matterDebugRenderer);\n\n if (this.#lastRect) this.setMatterDebugRendererSize(this.#lastRect, this.#lastWidth, this.#lastHeight, this.#lastCameraX, this.#lastCameraY);\n }\n }\n\n #lastRect?: DOMRectReadOnly;\n #lastWidth = 0;\n #lastHeight = 0;\n #lastCameraX = 0;\n #lastCameraY = 0;\n\n setMatterDebugRendererSize(\n rect: DOMRectReadOnly,\n width: number,\n height: number,\n cameraX: number,\n cameraY: number,\n ) {\n this.#lastRect = rect;\n this.#lastWidth = width;\n this.#lastHeight = height;\n this.#lastCameraX = cameraX;\n this.#lastCameraY = cameraY;\n\n if (!debugMode || !this.#matterDebugRenderer) return;\n\n const r = this.#matterDebugRenderer;\n const pr = window.devicePixelRatio || 1;\n\n r.options.width = width;\n r.options.height = height;\n\n r.canvas.width = Math.max(1, Math.floor(width * pr));\n r.canvas.height = Math.max(1, Math.floor(height * pr));\n\n const scale = Math.min(rect.width / width, rect.height / height);\n\n const displayW = width * scale;\n const displayH = height * scale;\n\n const left = (rect.width - displayW) / 2;\n const top = (rect.height - displayH) / 2;\n\n r.canvas.style.width = `${displayW}px`;\n r.canvas.style.height = `${displayH}px`;\n r.canvas.style.left = `${left}px`;\n r.canvas.style.top = `${top}px`;\n\n this.setMatterDebugRendererCamera(cameraX, cameraY);\n }\n\n setMatterDebugRendererCamera(cameraX: number, cameraY: number) {\n if (this.#matterDebugRenderer) {\n const r = this.#matterDebugRenderer;\n const halfW = this.#lastWidth / 2;\n const halfH = this.#lastHeight / 2;\n\n r.bounds.min.x = cameraX - halfW;\n r.bounds.min.y = cameraY - halfH;\n r.bounds.max.x = cameraX + halfW;\n r.bounds.max.y = cameraY + halfH;\n\n Matter.Render.lookAt(r, r.bounds);\n }\n }\n\n destroy() { }\n}\n"]}
@@ -1,45 +0,0 @@
1
- import { EventEmitter } from '@webtaku/event-emitter';
2
- import Matter from 'matter-js';
3
- export class WorldPhysics extends EventEmitter {
4
- #engine;
5
- #gravity = 0;
6
- get gravity() { return this.#gravity; }
7
- set gravity(v) {
8
- this.#gravity = v;
9
- if (this.#engine)
10
- this.#engine.gravity.y = v;
11
- }
12
- #createEngine() {
13
- this.#engine = Matter.Engine.create();
14
- this.#engine.gravity.y = this.#gravity;
15
- Matter.Events.on(this.#engine, 'collisionStart', (event) => {
16
- event.pairs.forEach((pair) => {
17
- const { bodyA, bodyB } = pair;
18
- this.emit('collisionStart', bodyA.plugin.owner, bodyB.plugin.owner);
19
- });
20
- });
21
- this.emit('engineCreated', this.#engine);
22
- }
23
- addBody(body) {
24
- if (!this.#engine)
25
- this.#createEngine();
26
- Matter.World.add(this.#engine.world, body);
27
- }
28
- removeBody(body) {
29
- if (!this.#engine)
30
- return;
31
- Matter.World.remove(this.#engine.world, body);
32
- }
33
- update(dt) {
34
- if (!this.#engine)
35
- return;
36
- const matterDt = dt * 1000;
37
- Matter.Engine.update(this.#engine, matterDt > 16.666 ? 16.666 : matterDt);
38
- }
39
- destroy() {
40
- if (this.#engine)
41
- Matter.Engine.clear(this.#engine);
42
- this.#engine = undefined;
43
- }
44
- }
45
- //# sourceMappingURL=world-physics.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"world-physics.js","sourceRoot":"","sources":["../../src/world/world-physics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,MAAM,MAAM,WAAW,CAAC;AAG/B,MAAM,OAAO,YAAa,SAAQ,YAGhC;IACA,OAAO,CAAiB;IACxB,QAAQ,GAAG,CAAC,CAAC;IAEb,IAAI,OAAO,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvC,IAAI,OAAO,CAAC,CAAS;QACnB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,IAAI,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;IAC/C,CAAC;IAED,aAAa;QACX,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACtC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QAEvC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,EAAE,CAAC,KAAK,EAAE,EAAE;YACzD,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC3B,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;gBAC9B,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACtE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,CAAC,IAAiB;QACvB,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,aAAa,EAAE,CAAC;QACxC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,UAAU,CAAC,IAAiB;QAC1B,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,CAAC,EAAU;QACf,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,MAAM,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC;QAC3B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,OAAO;YAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;IAC3B,CAAC;CACF","sourcesContent":["import { EventEmitter } from '@webtaku/event-emitter';\nimport Matter from 'matter-js';\nimport { GameObject } from '../game-object/game-object';\n\nexport class WorldPhysics extends EventEmitter<{\n engineCreated: (engine: Matter.Engine) => void;\n collisionStart: (a: GameObject, b: GameObject) => void;\n}> {\n #engine?: Matter.Engine;\n #gravity = 0;\n\n get gravity() { return this.#gravity; }\n set gravity(v: number) {\n this.#gravity = v;\n if (this.#engine) this.#engine.gravity.y = v;\n }\n\n #createEngine() {\n this.#engine = Matter.Engine.create();\n this.#engine.gravity.y = this.#gravity;\n\n Matter.Events.on(this.#engine, 'collisionStart', (event) => {\n event.pairs.forEach((pair) => {\n const { bodyA, bodyB } = pair;\n this.emit('collisionStart', bodyA.plugin.owner, bodyB.plugin.owner);\n });\n });\n\n this.emit('engineCreated', this.#engine);\n }\n\n addBody(body: Matter.Body) {\n if (!this.#engine) this.#createEngine();\n Matter.World.add(this.#engine!.world, body);\n }\n\n removeBody(body: Matter.Body) {\n if (!this.#engine) return;\n Matter.World.remove(this.#engine!.world, body);\n }\n\n update(dt: number) {\n if (!this.#engine) return;\n const matterDt = dt * 1000;\n Matter.Engine.update(this.#engine, matterDt > 16.666 ? 16.666 : matterDt);\n }\n\n destroy() {\n if (this.#engine) Matter.Engine.clear(this.#engine);\n this.#engine = undefined;\n }\n}\n"]}
@@ -1,123 +0,0 @@
1
- import { autoDetectRenderer, Container, EventEmitter, Sprite } from "pixi.js";
2
- import { textureLoader } from '../asset/loaders/texture';
3
- export class WorldRendering extends EventEmitter {
4
- #renderer;
5
- #root = new Container();
6
- #backgroundAlpha = 1;
7
- #cameraX = 0;
8
- #cameraY = 0;
9
- centerX = 0;
10
- centerY = 0;
11
- renderWidth = 0;
12
- renderHeight = 0;
13
- renderScale = 1;
14
- canvasLeft = 0;
15
- canvasTop = 0;
16
- #backgroundColor = 0x304C79;
17
- get backgroundColor() { return this.#backgroundColor; }
18
- set backgroundColor(v) {
19
- this.#backgroundColor = v;
20
- if (this.#renderer)
21
- this.#renderer.background.color = v;
22
- }
23
- get backgroundAlpha() { return this.#backgroundAlpha; }
24
- set backgroundAlpha(v) {
25
- this.#backgroundAlpha = v;
26
- if (this.#renderer)
27
- this.#renderer.background.alpha = v;
28
- }
29
- async init(container, width, height) {
30
- const renderer = await autoDetectRenderer({
31
- width,
32
- height,
33
- backgroundColor: this.#backgroundColor,
34
- backgroundAlpha: this.#backgroundAlpha,
35
- eventMode: 'none',
36
- resolution: window.devicePixelRatio,
37
- });
38
- this.#renderer = renderer;
39
- const canvas = renderer.canvas;
40
- canvas.style.position = 'absolute';
41
- canvas.style.touchAction = 'auto';
42
- canvas.style.borderRadius = container.style.borderRadius;
43
- container.appendChild(canvas);
44
- if (this.#lastRect)
45
- this.setRendererSize(this.#lastRect, this.#lastWidth, this.#lastHeight);
46
- }
47
- #applyPosition() {
48
- this.#root.x = this.centerX - this.#cameraX;
49
- this.#root.y = this.centerY - this.#cameraY;
50
- if (this.#backgroundSprite) {
51
- this.#backgroundSprite.x = this.#cameraX;
52
- this.#backgroundSprite.y = this.#cameraY;
53
- }
54
- this.emit('positionChanged');
55
- }
56
- #lastRect;
57
- #lastWidth = 0;
58
- #lastHeight = 0;
59
- setRendererSize(rect, width, height) {
60
- this.#lastRect = rect;
61
- this.#lastWidth = width;
62
- this.#lastHeight = height;
63
- this.centerX = width / 2;
64
- this.centerY = height / 2;
65
- this.#applyPosition();
66
- this.renderWidth = width;
67
- this.renderHeight = height;
68
- const scale = Math.min(rect.width / width, rect.height / height);
69
- this.renderScale = scale;
70
- const displayW = width * scale;
71
- const displayH = height * scale;
72
- const left = (rect.width - displayW) / 2;
73
- const top = (rect.height - displayH) / 2;
74
- this.canvasLeft = left;
75
- this.canvasTop = top;
76
- if (!this.#renderer)
77
- return;
78
- this.#renderer.resize(width, height);
79
- const canvas = this.#renderer.canvas;
80
- canvas.style.width = `${displayW}px`;
81
- canvas.style.height = `${displayH}px`;
82
- canvas.style.left = `${left}px`;
83
- canvas.style.top = `${top}px`;
84
- }
85
- update() {
86
- this.#renderer?.render(this.#root);
87
- }
88
- get cameraX() { return this.#cameraX; }
89
- set cameraX(value) { this.#cameraX = value; this.#applyPosition(); }
90
- get cameraY() { return this.#cameraY; }
91
- set cameraY(value) { this.#cameraY = value; this.#applyPosition(); }
92
- addPixiChildToRoot(child) {
93
- this.#root.addChild(child);
94
- }
95
- destroy() {
96
- this.#renderer?.destroy();
97
- this.#renderer = undefined;
98
- }
99
- #backgroundSprite;
100
- setBackgroundImage(image) {
101
- if (image) {
102
- if (!textureLoader.checkLoaded(image)) {
103
- console.info(`Background image not preloaded. Loading now: ${image}`);
104
- }
105
- textureLoader.load(image).then((texture) => {
106
- if (texture) {
107
- this.#backgroundSprite?.destroy();
108
- this.#backgroundSprite = new Sprite({
109
- x: this.#cameraX,
110
- y: this.#cameraY,
111
- texture,
112
- anchor: { x: 0.5, y: 0.5 },
113
- width: this.renderWidth,
114
- height: this.renderHeight,
115
- zIndex: -999999,
116
- });
117
- this.#root.addChild(this.#backgroundSprite);
118
- }
119
- });
120
- }
121
- }
122
- }
123
- //# sourceMappingURL=world-rendering.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"world-rendering.js","sourceRoot":"","sources":["../../src/world/world-rendering.ts"],"names":[],"mappings":"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","sourcesContent":["import { autoDetectRenderer, Container, EventEmitter, Renderer, Sprite } from \"pixi.js\";\nimport { textureLoader } from '../asset/loaders/texture';\n\nexport class WorldRendering extends EventEmitter<{\n positionChanged: () => void;\n}> {\n #renderer?: Renderer;\n #root = new Container();\n #backgroundAlpha = 1;\n\n #cameraX = 0;\n #cameraY = 0;\n\n centerX = 0;\n centerY = 0;\n renderWidth = 0;\n renderHeight = 0;\n renderScale = 1;\n canvasLeft = 0;\n canvasTop = 0;\n\n #backgroundColor = 0x304C79;\n get backgroundColor() { return this.#backgroundColor; }\n set backgroundColor(v: number) {\n this.#backgroundColor = v;\n if (this.#renderer) this.#renderer.background.color = v;\n }\n\n get backgroundAlpha() { return this.#backgroundAlpha; }\n set backgroundAlpha(v: number) {\n this.#backgroundAlpha = v;\n if (this.#renderer) this.#renderer.background.alpha = v;\n }\n\n async init(container: HTMLElement, width: number | undefined, height: number | undefined) {\n const renderer = await autoDetectRenderer({\n width,\n height,\n backgroundColor: this.#backgroundColor,\n backgroundAlpha: this.#backgroundAlpha,\n eventMode: 'none',\n resolution: window.devicePixelRatio,\n });\n this.#renderer = renderer;\n\n const canvas = renderer.canvas;\n canvas.style.position = 'absolute';\n canvas.style.touchAction = 'auto';\n canvas.style.borderRadius = container.style.borderRadius;\n container.appendChild(canvas);\n\n if (this.#lastRect) this.setRendererSize(this.#lastRect, this.#lastWidth, this.#lastHeight);\n }\n\n #applyPosition() {\n this.#root.x = this.centerX - this.#cameraX;\n this.#root.y = this.centerY - this.#cameraY;\n\n if (this.#backgroundSprite) {\n this.#backgroundSprite.x = this.#cameraX;\n this.#backgroundSprite.y = this.#cameraY;\n }\n\n this.emit('positionChanged');\n }\n\n #lastRect?: DOMRect;\n #lastWidth = 0;\n #lastHeight = 0;\n\n setRendererSize(rect: DOMRect, width: number, height: number) {\n this.#lastRect = rect;\n this.#lastWidth = width;\n this.#lastHeight = height;\n\n this.centerX = width / 2;\n this.centerY = height / 2;\n this.#applyPosition();\n\n this.renderWidth = width;\n this.renderHeight = height;\n\n const scale = Math.min(rect.width / width, rect.height / height);\n this.renderScale = scale;\n\n const displayW = width * scale;\n const displayH = height * scale;\n\n const left = (rect.width - displayW) / 2;\n const top = (rect.height - displayH) / 2;\n this.canvasLeft = left;\n this.canvasTop = top;\n\n if (!this.#renderer) return;\n this.#renderer.resize(width, height);\n\n const canvas = this.#renderer.canvas;\n canvas.style.width = `${displayW}px`;\n canvas.style.height = `${displayH}px`;\n canvas.style.left = `${left}px`;\n canvas.style.top = `${top}px`;\n }\n\n update() {\n this.#renderer?.render(this.#root);\n }\n\n get cameraX() { return this.#cameraX; }\n set cameraX(value: number) { this.#cameraX = value; this.#applyPosition(); }\n get cameraY() { return this.#cameraY; }\n set cameraY(value: number) { this.#cameraY = value; this.#applyPosition(); }\n\n addPixiChildToRoot(child: Container) {\n this.#root.addChild(child);\n }\n\n destroy() {\n this.#renderer?.destroy();\n this.#renderer = undefined;\n }\n\n #backgroundSprite?: Sprite;\n setBackgroundImage(image: string | undefined) {\n if (image) {\n if (!textureLoader.checkLoaded(image)) {\n console.info(`Background image not preloaded. Loading now: ${image}`);\n }\n textureLoader.load(image).then((texture) => {\n if (texture) {\n this.#backgroundSprite?.destroy();\n this.#backgroundSprite = new Sprite({\n x: this.#cameraX,\n y: this.#cameraY,\n texture,\n anchor: { x: 0.5, y: 0.5 },\n width: this.renderWidth,\n height: this.renderHeight,\n zIndex: -999999,\n });\n this.#root.addChild(this.#backgroundSprite);\n }\n });\n }\n }\n}\n"]}
@@ -1,147 +0,0 @@
1
- import { GameObject } 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
- export class World extends GameObject {
8
- container = document.createElement('div');
9
- #containerResizeObserver;
10
- _worldRendering = new WorldRendering();
11
- _worldPhysics = new WorldPhysics();
12
- #worldDebug = new WorldDebug(this.container);
13
- #width;
14
- #height;
15
- #hasEverBeenConnected = false;
16
- #destroyed = false;
17
- #pt = new WorldTransform();
18
- #update(dt) {
19
- if (this.container.isConnected) {
20
- if (!this.#hasEverBeenConnected) {
21
- this.#hasEverBeenConnected = true;
22
- this.#applySize();
23
- }
24
- this._worldPhysics.update(dt);
25
- this._engineUpdate(dt, this.#pt);
26
- this._worldRendering.update();
27
- this.#worldDebug.update();
28
- this._containerSizeDirty = false;
29
- }
30
- else if (this.#hasEverBeenConnected) {
31
- this.#destroy();
32
- return;
33
- }
34
- }
35
- #lastContainerW = 0;
36
- #lastContainerH = 0;
37
- _containerSizeDirty = false;
38
- #applySize() {
39
- const rect = this.container.getBoundingClientRect();
40
- if (rect.width === this.#lastContainerW && rect.height === this.#lastContainerH)
41
- return;
42
- this.#lastContainerW = rect.width;
43
- this.#lastContainerH = rect.height;
44
- this._containerSizeDirty = true;
45
- if (rect.width === 0 || rect.height === 0)
46
- return;
47
- const canvasWidth = this.#width ?? rect.width;
48
- const canvasHeight = this.#height ?? rect.height;
49
- this._worldRendering.setRendererSize(rect, canvasWidth, canvasHeight);
50
- this.#worldDebug.setMatterDebugRendererSize(rect, canvasWidth, canvasHeight, this.cameraX, this.cameraY);
51
- this.emit('resize', this.width, this.height);
52
- }
53
- #destroy() {
54
- this.#containerResizeObserver.disconnect();
55
- this._worldRendering.destroy();
56
- this._worldPhysics.destroy();
57
- this.#worldDebug.destroy();
58
- this.#destroyed = true;
59
- }
60
- async #init() {
61
- await this._worldRendering.init(this.container, this.#width, this.#height);
62
- this.#applySize();
63
- let prevTime = 0;
64
- let lagSeconds = 0;
65
- let fpsCap;
66
- const step = (timestamp) => {
67
- if (this.#destroyed)
68
- return;
69
- const dt = (timestamp - prevTime) / 1000;
70
- if (dt > 0) {
71
- if (fpsCap !== undefined && fpsCap > 0) {
72
- lagSeconds += dt;
73
- const fixedStep = 1 / fpsCap;
74
- if (lagSeconds >= fixedStep) {
75
- this.#update(fixedStep);
76
- if (lagSeconds >= fixedStep * 2) {
77
- this.#update(dt);
78
- lagSeconds = 0;
79
- }
80
- else {
81
- lagSeconds -= fixedStep;
82
- }
83
- }
84
- }
85
- else {
86
- this.#update(dt);
87
- }
88
- prevTime = timestamp;
89
- }
90
- requestAnimationFrame(step);
91
- };
92
- requestAnimationFrame(step);
93
- if (debugMode) {
94
- if (!document.hasFocus())
95
- fpsCap = 6;
96
- window.addEventListener('blur', () => fpsCap = 6);
97
- window.addEventListener('focus', () => fpsCap = undefined);
98
- window.addEventListener('pageshow', (event) => { if (event.persisted)
99
- fpsCap = undefined; });
100
- }
101
- }
102
- constructor(opts) {
103
- super(opts);
104
- this._setWorld(this);
105
- this._worldRendering.addPixiChildToRoot(this._rendering._container);
106
- this.#containerResizeObserver = new ResizeObserver(this.#applySize.bind(this));
107
- this.#containerResizeObserver.observe(this.container);
108
- this._worldRendering.on('positionChanged', () => this.#worldDebug.setMatterDebugRendererCamera(this.cameraX, this.cameraY));
109
- this._worldPhysics.on('engineCreated', (engine) => this.#worldDebug.createMatterDebugRenderer(engine, this.width, this.height));
110
- this._worldPhysics.on('collisionStart', (a, b) => this.emit('collisionStart', a, b));
111
- ``;
112
- if (opts) {
113
- if (opts.width !== undefined)
114
- this.#width = opts.width;
115
- if (opts.height !== undefined)
116
- this.#height = opts.height;
117
- if (opts.backgroundColor !== undefined)
118
- this.backgroundColor = opts.backgroundColor;
119
- if (opts.backgroundAlpha !== undefined)
120
- this.backgroundAlpha = opts.backgroundAlpha;
121
- if (opts.gravity !== undefined)
122
- this.gravity = opts.gravity;
123
- }
124
- this.#init();
125
- }
126
- get width() { return this.#width ?? this._worldRendering.renderWidth; }
127
- set width(v) { this.#width = v; this.#applySize(); }
128
- get height() { return this.#height ?? this._worldRendering.renderHeight; }
129
- set height(v) { this.#height = v; this.#applySize(); }
130
- get backgroundColor() { return this._worldRendering.backgroundColor; }
131
- set backgroundColor(v) { this._worldRendering.backgroundColor = v; }
132
- get backgroundAlpha() { return this._worldRendering.backgroundAlpha; }
133
- set backgroundAlpha(v) { this._worldRendering.backgroundAlpha = v; }
134
- get gravity() { return this._worldPhysics.gravity; }
135
- set gravity(v) { this._worldPhysics.gravity = v; }
136
- get cameraX() { return this._worldRendering.cameraX; }
137
- set cameraX(v) { this._worldRendering.cameraX = v; }
138
- get cameraY() { return this._worldRendering.cameraY; }
139
- set cameraY(v) { this._worldRendering.cameraY = v; }
140
- #backgroundImage;
141
- get backgroundImage() { return this.#backgroundImage; }
142
- set backgroundImage(image) {
143
- this.#backgroundImage = image;
144
- this._worldRendering.setBackgroundImage(image);
145
- }
146
- }
147
- //# sourceMappingURL=world.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"world.js","sourceRoot":"","sources":["../../src/world/world.ts"],"names":[],"mappings":"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","sourcesContent":["import { GameObject, GameObjectOptions } from '../game-object/game-object';\nimport { WorldTransform } from '../game-object/transform';\nimport { debugMode } from '../utils/debug';\nimport { WorldDebug } from './world-debug';\nimport { WorldPhysics } from \"./world-physics\";\nimport { WorldRendering } from \"./world-rendering\";\n\nexport type WorldOptions = {\n width?: number;\n height?: number;\n backgroundColor?: number;\n backgroundAlpha?: number;\n gravity?: number;\n} & GameObjectOptions;\n\nexport class World extends GameObject<{\n resize: (width: number, height: number) => void;\n collisionStart: (a: GameObject, b: GameObject) => void;\n}> {\n container = document.createElement('div');\n #containerResizeObserver: ResizeObserver;\n\n _worldRendering = new WorldRendering();\n _worldPhysics = new WorldPhysics();\n #worldDebug = new WorldDebug(this.container);\n\n #width?: number;\n #height?: number;\n\n #hasEverBeenConnected = false;\n #destroyed = false;\n\n #pt = new WorldTransform();\n #update(dt: number) {\n if (this.container.isConnected) {\n if (!this.#hasEverBeenConnected) {\n this.#hasEverBeenConnected = true;\n this.#applySize();\n }\n\n this._worldPhysics.update(dt);\n this._engineUpdate(dt, this.#pt);\n this._worldRendering.update();\n this.#worldDebug.update();\n\n this._containerSizeDirty = false;\n }\n\n else if (this.#hasEverBeenConnected) {\n this.#destroy();\n return;\n }\n }\n\n #lastContainerW = 0;\n #lastContainerH = 0;\n _containerSizeDirty = false;\n\n #applySize() {\n const rect = this.container.getBoundingClientRect();\n\n if (rect.width === this.#lastContainerW && rect.height === this.#lastContainerH) return;\n this.#lastContainerW = rect.width;\n this.#lastContainerH = rect.height;\n this._containerSizeDirty = true;\n\n if (rect.width === 0 || rect.height === 0) return;\n\n const canvasWidth = this.#width ?? rect.width;\n const canvasHeight = this.#height ?? rect.height;\n\n this._worldRendering.setRendererSize(rect, canvasWidth, canvasHeight);\n this.#worldDebug.setMatterDebugRendererSize(rect, canvasWidth, canvasHeight, this.cameraX, this.cameraY);\n\n this.emit('resize', this.width, this.height);\n }\n\n #destroy() {\n this.#containerResizeObserver.disconnect();\n this._worldRendering.destroy();\n this._worldPhysics.destroy();\n this.#worldDebug.destroy();\n\n this.#destroyed = true;\n }\n\n async #init() {\n await this._worldRendering.init(this.container, this.#width, this.#height);\n this.#applySize();\n\n let prevTime = 0;\n let lagSeconds = 0;\n let fpsCap: number | undefined;\n\n const step = (timestamp: number) => {\n if (this.#destroyed) return;\n\n const dt = (timestamp - prevTime) / 1000;\n if (dt > 0) {\n if (fpsCap !== undefined && fpsCap > 0) {\n lagSeconds += dt;\n const fixedStep = 1 / fpsCap;\n if (lagSeconds >= fixedStep) {\n this.#update(fixedStep);\n if (lagSeconds >= fixedStep * 2) { this.#update(dt); lagSeconds = 0; }\n else { lagSeconds -= fixedStep; }\n }\n } else {\n this.#update(dt);\n }\n prevTime = timestamp;\n }\n requestAnimationFrame(step);\n };\n requestAnimationFrame(step);\n\n if (debugMode) {\n if (!document.hasFocus()) fpsCap = 6;\n window.addEventListener('blur', () => fpsCap = 6);\n window.addEventListener('focus', () => fpsCap = undefined);\n window.addEventListener('pageshow', (event) => { if (event.persisted) fpsCap = undefined; });\n }\n }\n\n constructor(opts?: WorldOptions) {\n super(opts);\n this._setWorld(this);\n this._worldRendering.addPixiChildToRoot(this._rendering._container);\n\n this.#containerResizeObserver = new ResizeObserver(this.#applySize.bind(this));\n this.#containerResizeObserver.observe(this.container);\n\n this._worldRendering.on('positionChanged', () => this.#worldDebug.setMatterDebugRendererCamera(this.cameraX, this.cameraY));\n this._worldPhysics.on('engineCreated', (engine) => this.#worldDebug.createMatterDebugRenderer(engine, this.width, this.height));\n this._worldPhysics.on('collisionStart', (a, b) => this.emit('collisionStart', a, b));\n ``\n if (opts) {\n if (opts.width !== undefined) this.#width = opts.width;\n if (opts.height !== undefined) this.#height = opts.height;\n if (opts.backgroundColor !== undefined) this.backgroundColor = opts.backgroundColor;\n if (opts.backgroundAlpha !== undefined) this.backgroundAlpha = opts.backgroundAlpha;\n if (opts.gravity !== undefined) this.gravity = opts.gravity;\n }\n\n this.#init();\n }\n\n get width() { return this.#width ?? this._worldRendering.renderWidth; }\n set width(v: number) { this.#width = v; this.#applySize(); }\n get height() { return this.#height ?? this._worldRendering.renderHeight; }\n set height(v: number) { this.#height = v; this.#applySize(); }\n\n get backgroundColor() { return this._worldRendering.backgroundColor; }\n set backgroundColor(v: number) { this._worldRendering.backgroundColor = v; }\n get backgroundAlpha() { return this._worldRendering.backgroundAlpha; }\n set backgroundAlpha(v: number) { this._worldRendering.backgroundAlpha = v; }\n get gravity() { return this._worldPhysics.gravity; }\n set gravity(v: number) { this._worldPhysics.gravity = v; }\n\n get cameraX() { return this._worldRendering.cameraX; }\n set cameraX(v: number) { this._worldRendering.cameraX = v; }\n get cameraY() { return this._worldRendering.cameraY; }\n set cameraY(v: number) { this._worldRendering.cameraY = v; }\n\n #backgroundImage?: string;\n get backgroundImage() { return this.#backgroundImage; }\n set backgroundImage(image: string | undefined) {\n this.#backgroundImage = image;\n this._worldRendering.setBackgroundImage(image);\n }\n}\n"]}