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
@@ -1,191 +0,0 @@
1
- import Matter, { IChamferableBodyDefinition } from 'matter-js';
2
- import { debugMode } from '../utils/debug';
3
- import { GameObject } from './game-object';
4
- import { localOffsetToWorld, worldToLocalWithNewWorld } from './transform';
5
-
6
- type BaseCollider = { x?: number; y?: number; };
7
- type RectangleCollider = BaseCollider & { type: 'rect'; width: number; height: number };
8
- type CircleCollider = BaseCollider & { type: 'circle'; radius: number };
9
- type VerticesCollider = BaseCollider & { type: 'vert'; vertices: { x: number; y: number }[] };
10
- export type Collider = RectangleCollider | CircleCollider | VerticesCollider;
11
-
12
- export class GameObjectPhysics {
13
- #collider?: Collider;
14
- #isStatic = false;
15
- #isSensor = false;
16
- #velocityX = 0;
17
- #velocityY = 0;
18
- #fixedRotation = false;
19
-
20
- #go: GameObject;
21
- #matterBody?: Matter.Body;
22
-
23
- constructor(go: GameObject) {
24
- this.#go = go;
25
- }
26
-
27
- #removeBody() {
28
- const world = this.#go._getWorld();
29
- if (!world || !this.#matterBody) return;
30
- world._worldPhysics.removeBody(this.#matterBody);
31
- }
32
-
33
- #lastScaleX = 1;
34
- #lastScaleY = 1;
35
- #initialInertia?: number;
36
-
37
- #createBody() {
38
- const world = this.#go._getWorld();
39
- if (!this.#collider || !world) return;
40
-
41
- const wt = this.#go._wt;
42
- const { x: ox, y: oy } = localOffsetToWorld(wt, this.#collider?.x ?? 0, this.#collider?.y ?? 0);
43
- const x = wt.x.v + ox;
44
- const y = wt.y.v + oy;
45
-
46
- const bodyOpts: IChamferableBodyDefinition = {
47
- angle: wt.rotation.v,
48
- isStatic: this.#isStatic,
49
- isSensor: this.#isSensor,
50
- velocity: { x: this.#velocityX, y: this.#velocityY },
51
- };
52
-
53
- if (this.#collider.type === 'rect') this.#matterBody = Matter.Bodies.rectangle(x, y, this.#collider.width, this.#collider.height, bodyOpts);
54
- else if (this.#collider.type === 'circle') this.#matterBody = Matter.Bodies.circle(x, y, this.#collider.radius, bodyOpts);
55
- else if (this.#collider.type === 'vert') this.#matterBody = Matter.Bodies.fromVertices(x, y, [this.#collider.vertices], bodyOpts);
56
- else throw new Error('Invalid collider type');
57
-
58
- this.#matterBody.plugin.owner = this.#go;
59
- this.#lastScaleX = wt.scaleX.v;
60
- this.#lastScaleY = wt.scaleY.v;
61
- Matter.Body.scale(this.#matterBody, wt.scaleX.v, wt.scaleY.v);
62
-
63
- this.#initialInertia = this.#matterBody.inertia;
64
- if (this.#fixedRotation) {
65
- Matter.Body.setInertia(this.#matterBody, Infinity);
66
- Matter.Body.setAngularVelocity(this.#matterBody, 0);
67
- }
68
-
69
- world._worldPhysics.addBody(this.#matterBody);
70
- this.#setDebugRenderStyle();
71
- }
72
-
73
- applyChanges() {
74
- if (this.#collider && !this.#matterBody) this.#createBody();
75
- if (!this.#matterBody) return;
76
-
77
- const wt = this.#go._wt;
78
- const { x: ox, y: oy } = localOffsetToWorld(wt, this.#collider?.x ?? 0, this.#collider?.y ?? 0);
79
-
80
- if (wt.x.dirty || wt.scaleX.dirty || wt.y.dirty || wt.scaleY.dirty) {
81
- if ((wt.x.dirty || wt.scaleX.dirty) && (wt.y.dirty || wt.scaleY.dirty)) Matter.Body.setPosition(this.#matterBody, { x: wt.x.v + ox, y: wt.y.v + oy });
82
- else if (wt.x.dirty || wt.scaleX.dirty) Matter.Body.setPosition(this.#matterBody, { x: wt.x.v + ox, y: this.#matterBody.position.y });
83
- else if (wt.y.dirty || wt.scaleY.dirty) Matter.Body.setPosition(this.#matterBody, { x: this.#matterBody.position.x, y: wt.y.v + oy });
84
- }
85
- if (wt.scaleX.dirty || wt.scaleY.dirty) {
86
- const scaleDiffX = wt.scaleX.v / this.#lastScaleX;
87
- const scaleDiffY = wt.scaleY.v / this.#lastScaleY;
88
- Matter.Body.scale(this.#matterBody, scaleDiffX, scaleDiffY);
89
- this.#lastScaleX = wt.scaleX.v;
90
- this.#lastScaleY = wt.scaleY.v;
91
- }
92
- if (wt.rotation.dirty) Matter.Body.setAngle(this.#matterBody, wt.rotation.v);
93
-
94
- const lt = this.#go._lt;
95
- if (!wt.x.dirty || !wt.y.dirty || !wt.rotation.dirty) {
96
- const { x, y, rotation, newWorldX, newWorldY, newWorldRotation } =
97
- worldToLocalWithNewWorld(
98
- wt,
99
- lt,
100
- this.#matterBody.position.x - ox,
101
- this.#matterBody.position.y - oy,
102
- this.#matterBody.angle
103
- );
104
- if (!wt.x.dirty) { lt.x.v = x; wt.x.v = newWorldX; }
105
- if (!wt.y.dirty) { lt.y.v = y; wt.y.v = newWorldY; }
106
- if (!wt.rotation.dirty) { lt.rotation.v = rotation; wt.rotation.v = newWorldRotation; }
107
- }
108
- }
109
-
110
- destroy() {
111
- this.#removeBody();
112
- }
113
-
114
- get collider() { return this.#collider; }
115
- set collider(value: Collider | undefined) {
116
- this.#removeBody();
117
- this.#collider = value;
118
- }
119
-
120
- get isStatic() {
121
- if (this.#matterBody) return this.#matterBody.isStatic;
122
- else return this.#isStatic;
123
- }
124
- set isStatic(value: boolean) {
125
- this.#isStatic = value;
126
- if (this.#matterBody) Matter.Body.setStatic(this.#matterBody, value);
127
- this.#setDebugRenderStyle();
128
- }
129
-
130
- get isSensor() {
131
- if (this.#matterBody) return this.#matterBody.isSensor;
132
- else return this.#isSensor;
133
- }
134
- set isSensor(value: boolean) {
135
- this.#isSensor = value;
136
- if (this.#matterBody) this.#matterBody.isSensor = value;
137
- this.#setDebugRenderStyle();
138
- }
139
-
140
- get velocityX() {
141
- if (this.#matterBody) return this.#matterBody.velocity.x;
142
- else return this.#velocityX;
143
- }
144
- set velocityX(value: number) {
145
- this.#velocityX = value;
146
- if (this.#matterBody) Matter.Body.setVelocity(this.#matterBody, { x: value, y: this.#velocityY });
147
- }
148
-
149
- get velocityY() {
150
- if (this.#matterBody) return this.#matterBody.velocity.y;
151
- else return this.#velocityY;
152
- }
153
- set velocityY(value: number) {
154
- this.#velocityY = value;
155
- if (this.#matterBody) Matter.Body.setVelocity(this.#matterBody, { x: this.#velocityX, y: value });
156
- }
157
-
158
- get fixedRotation() { return this.#fixedRotation; }
159
- set fixedRotation(value: boolean) {
160
- this.#fixedRotation = value;
161
- if (this.#matterBody) {
162
- if (value) {
163
- Matter.Body.setInertia(this.#matterBody, Infinity);
164
- Matter.Body.setAngularVelocity(this.#matterBody, 0);
165
- } else {
166
- Matter.Body.setInertia(this.#matterBody, this.#initialInertia!);
167
- Matter.Body.setAngularVelocity(this.#matterBody, 0);
168
- }
169
- }
170
- }
171
-
172
- #setDebugRenderStyle() {
173
- if (!debugMode || !this.#matterBody) return;
174
-
175
- if (this.#isSensor) {
176
- this.#matterBody.render.fillStyle = 'rgba(255,255,0,0.1)';
177
- this.#matterBody.render.strokeStyle = 'rgba(255,255,0,0.25)';
178
- this.#matterBody.render.lineWidth = 1;
179
- }
180
- else if (this.#isStatic) {
181
- this.#matterBody.render.fillStyle = 'rgba(255,0,0,0.1)';
182
- this.#matterBody.render.strokeStyle = 'rgba(255,0,0,0.25)';
183
- this.#matterBody.render.lineWidth = 1;
184
- }
185
- else {
186
- this.#matterBody.render.fillStyle = 'rgba(0,255,0,0.1)';
187
- this.#matterBody.render.strokeStyle = 'rgba(0,255,0,0.25)';
188
- this.#matterBody.render.lineWidth = 1;
189
- }
190
- }
191
- }
@@ -1,27 +0,0 @@
1
- import { Container } from 'pixi.js';
2
- import { LocalTransform } from './transform';
3
-
4
- export class GameObjectRendering {
5
- _container = new Container({ sortableChildren: true });
6
- #yBasedDrawOrder = false;
7
-
8
- addChild(child: GameObjectRendering) { this._container.addChild(child._container); }
9
- removeChild(child: GameObjectRendering) { this._container.removeChild(child._container); }
10
- destroy() { this._container.destroy({ children: true }); }
11
-
12
- applyChanges(lt: LocalTransform) {
13
- if (lt.x.dirty) this._container.x = lt.x.v;
14
- if (lt.y.dirty) { this._container.y = lt.y.v; if (this.#yBasedDrawOrder) this.drawOrder = lt.y.v; }
15
- if (lt.pivotX.dirty) this._container.pivot.x = lt.pivotX.v;
16
- if (lt.pivotY.dirty) this._container.pivot.y = lt.pivotY.v;
17
- if (lt.scaleX.dirty) this._container.scale.x = lt.scaleX.v;
18
- if (lt.scaleY.dirty) this._container.scale.y = lt.scaleY.v;
19
- if (lt.rotation.dirty) this._container.rotation = lt.rotation.v;
20
- if (lt.alpha.dirty) this._container.alpha = lt.alpha.v;
21
- }
22
-
23
- get drawOrder() { return this._container.zIndex; }
24
- set drawOrder(v: number) { this._container.zIndex = v; }
25
- get yBasedDrawOrder() { return this.#yBasedDrawOrder; }
26
- set yBasedDrawOrder(v: boolean) { this.#yBasedDrawOrder = v; if (v) this.drawOrder = this._container.y; }
27
- }
@@ -1,190 +0,0 @@
1
- import { EventEmitter, EventMap } from '@webtaku/event-emitter';
2
- import { Container, Sprite } from 'pixi.js';
3
- import { textureLoader } from '../asset/loaders/texture';
4
- import { World } from '../world/world';
5
- import { Collider, GameObjectPhysics } from './game-object-physics';
6
- import { GameObjectRendering } from './game-object-rendering';
7
- import { LocalTransform, WorldTransform } from './transform';
8
-
9
- export class GameObject<E extends EventMap = EventMap> extends EventEmitter<E & {
10
- update: (dt: number) => void
11
- }> {
12
- _lt = new LocalTransform();
13
- _wt = new WorldTransform();
14
-
15
- _rendering = new GameObjectRendering();
16
- #physics = new GameObjectPhysics(this);
17
-
18
- #world?: World;
19
- #parent?: GameObject;
20
- #children: GameObject[] = [];
21
-
22
- data: Record<string, any> = {};
23
-
24
- protected _setWorld(world: World) {
25
- this.#world = world;
26
- for (const child of this.#children) {
27
- child._setWorld(world);
28
- }
29
- }
30
- _getWorld() { return this.#world; }
31
-
32
- add(...children: GameObject[]) {
33
- for (const child of children) {
34
- if (child.#parent) {
35
- const idx = child.#parent.#children.indexOf(child);
36
- if (idx !== -1) child.#parent.#children.splice(idx, 1);
37
- child.#parent._rendering.removeChild(child._rendering);
38
- }
39
- if (this.#world) child._setWorld(this.#world);
40
- child.#parent = this;
41
-
42
- this.#children.push(child);
43
- this._rendering.addChild(child._rendering);
44
- }
45
- }
46
-
47
- remove() {
48
- if (this.#parent) {
49
- const idx = this.#parent.#children.indexOf(this);
50
- if (idx !== -1) this.#parent.#children.splice(idx, 1);
51
- this.#parent = undefined;
52
- }
53
-
54
- for (const child of this.#children) {
55
- child.#parent = undefined;
56
- child.remove();
57
- }
58
- this.#children.length = 0;
59
-
60
- this._rendering.destroy();
61
- this.#physics.destroy();
62
- }
63
-
64
- protected update(dt: number): void { }
65
-
66
- protected _afterRender() { }
67
- _engineUpdate(dt: number, pt: WorldTransform) {
68
- this.update(dt);
69
-
70
- this._wt.update(pt, this._lt);
71
- this.#physics.applyChanges();
72
- this._rendering.applyChanges(this._lt);
73
- this._afterRender();
74
- this._lt.markClean();
75
-
76
- (this as any).emit('update', dt);
77
-
78
- for (const child of this.#children) {
79
- child._engineUpdate(dt, this._wt);
80
- }
81
- this._wt.markClean();
82
- }
83
-
84
- constructor(opts?: GameObjectOptions) {
85
- super();
86
- if (opts) {
87
- if (opts.x !== undefined) this.x = opts.x;
88
- if (opts.y !== undefined) this.y = opts.y;
89
- if (opts.pivotX !== undefined) this.pivotX = opts.pivotX;
90
- if (opts.pivotY !== undefined) this.pivotY = opts.pivotY;
91
- if (opts.scale !== undefined) this.scale = opts.scale;
92
- if (opts.scaleX !== undefined) this.scaleX = opts.scaleX;
93
- if (opts.scaleY !== undefined) this.scaleY = opts.scaleY;
94
- if (opts.rotation !== undefined) this.rotation = opts.rotation;
95
- if (opts.alpha !== undefined) this.alpha = opts.alpha;
96
-
97
- if (opts.drawOrder !== undefined) this.drawOrder = opts.drawOrder;
98
- if (opts.yBasedDrawOrder !== undefined) this.yBasedDrawOrder = opts.yBasedDrawOrder;
99
-
100
- if (opts.collider !== undefined) this.collider = opts.collider;
101
- if (opts.isStatic !== undefined) this.isStatic = opts.isStatic;
102
- if (opts.isSensor !== undefined) this.isSensor = opts.isSensor;
103
- if (opts.velocityX !== undefined) this.velocityX = opts.velocityX;
104
- if (opts.velocityY !== undefined) this.velocityY = opts.velocityY;
105
- if (opts.fixedRotation !== undefined) this.fixedRotation = opts.fixedRotation;
106
-
107
- if (opts.image !== undefined) this.image = opts.image;
108
- }
109
- }
110
-
111
- get x() { return this._lt.x.v; }
112
- set x(v: number) { this._lt.x.v = v; }
113
- get y() { return this._lt.y.v; }
114
- set y(v: number) { this._lt.y.v = v; }
115
- get pivotX() { return this._lt.pivotX.v; }
116
- set pivotX(v: number) { this._lt.pivotX.v = v; }
117
- get pivotY() { return this._lt.pivotY.v; }
118
- set pivotY(v: number) { this._lt.pivotY.v = v; }
119
- get scale() { return this._lt.scaleX.v; }
120
- set scale(v: number) { this._lt.scaleX.v = v; this._lt.scaleY.v = v; }
121
- get scaleX() { return this._lt.scaleX.v; }
122
- set scaleX(v: number) { this._lt.scaleX.v = v; }
123
- get scaleY() { return this._lt.scaleY.v; }
124
- set scaleY(v: number) { this._lt.scaleY.v = v; }
125
- get rotation() { return this._lt.rotation.v; }
126
- set rotation(v: number) { this._lt.rotation.v = v; }
127
- get alpha() { return this._lt.alpha.v; }
128
- set alpha(v: number) { this._lt.alpha.v = v; }
129
-
130
- get drawOrder() { return this._rendering.drawOrder; }
131
- set drawOrder(v: number) { this._rendering.drawOrder = v; }
132
- get yBasedDrawOrder() { return this._rendering.yBasedDrawOrder; }
133
- set yBasedDrawOrder(v: boolean) { this._rendering.yBasedDrawOrder = v; }
134
-
135
- get collider() { return this.#physics.collider; }
136
- set collider(v: Collider | undefined) { this.#physics.collider = v; }
137
- get isStatic() { return this.#physics.isStatic; }
138
- set isStatic(v: boolean) { this.#physics.isStatic = v; }
139
- get isSensor() { return this.#physics.isSensor; }
140
- set isSensor(v: boolean) { this.#physics.isSensor = v; }
141
- get velocityX() { return this.#physics.velocityX; }
142
- set velocityX(v: number) { this.#physics.velocityX = v; }
143
- get velocityY() { return this.#physics.velocityY; }
144
- set velocityY(v: number) { this.#physics.velocityY = v; }
145
- get fixedRotation() { return this.#physics.fixedRotation; }
146
- set fixedRotation(v: boolean) { this.#physics.fixedRotation = v; }
147
-
148
- _addPixiChild(child: Container) { this._rendering._container.addChild(child); }
149
-
150
- #image?: string;
151
- get image() { return this.#image; }
152
- set image(value: string | undefined) {
153
- if (value) {
154
- if (!textureLoader.checkLoaded(value)) {
155
- console.info(`Image not preloaded. Loading now: ${value}`);
156
- }
157
- textureLoader.load(value).then((texture) => {
158
- if (texture) this._addPixiChild(new Sprite({
159
- texture,
160
- anchor: { x: 0.5, y: 0.5 },
161
- zIndex: -999999,
162
- }));
163
- });
164
- }
165
- }
166
- }
167
-
168
- export type GameObjectOptions = {
169
- x?: number;
170
- y?: number;
171
- pivotX?: number;
172
- pivotY?: number;
173
- scale?: number;
174
- scaleX?: number;
175
- scaleY?: number;
176
- rotation?: number;
177
- alpha?: number;
178
-
179
- drawOrder?: number;
180
- yBasedDrawOrder?: boolean;
181
-
182
- collider?: Collider;
183
- isStatic?: boolean;
184
- isSensor?: boolean;
185
- velocityX?: number;
186
- velocityY?: number;
187
- fixedRotation?: boolean;
188
-
189
- image?: string;
190
- };
@@ -1,164 +0,0 @@
1
- class DirtyNumber {
2
- #v: number;
3
- #dirty: boolean;
4
-
5
- constructor(v: number) {
6
- this.#v = v;
7
- this.#dirty = false;
8
- }
9
-
10
- get dirty(): boolean {
11
- return this.#dirty;
12
- }
13
-
14
- get v(): number {
15
- return this.#v;
16
- }
17
-
18
- set v(v: number) {
19
- if (this.#v !== v) this.#dirty = true;
20
- this.#v = v;
21
- }
22
-
23
- markClean() {
24
- this.#dirty = false;
25
- }
26
- }
27
-
28
- export class LocalTransform {
29
- x = new DirtyNumber(0);
30
- y = new DirtyNumber(0);
31
- pivotX = new DirtyNumber(0);
32
- pivotY = new DirtyNumber(0);
33
- scaleX = new DirtyNumber(1);
34
- scaleY = new DirtyNumber(1);
35
- rotation = new DirtyNumber(0);
36
- alpha = new DirtyNumber(1);
37
-
38
- markClean() {
39
- this.x.markClean();
40
- this.y.markClean();
41
- this.pivotX.markClean();
42
- this.pivotY.markClean();
43
- this.scaleX.markClean();
44
- this.scaleY.markClean();
45
- this.rotation.markClean();
46
- this.alpha.markClean();
47
- }
48
- }
49
-
50
- export class WorldTransform {
51
- x = new DirtyNumber(0);
52
- y = new DirtyNumber(0);
53
- scaleX = new DirtyNumber(1);
54
- scaleY = new DirtyNumber(1);
55
- rotation = new DirtyNumber(0);
56
- alpha = new DirtyNumber(1);
57
-
58
- update(parent: WorldTransform, local: LocalTransform) {
59
- const rx = local.x.v * parent.scaleX.v;
60
- const ry = local.y.v * parent.scaleY.v;
61
- const pCos = Math.cos(parent.rotation.v);
62
- const pSin = Math.sin(parent.rotation.v);
63
-
64
- this.scaleX.v = parent.scaleX.v * local.scaleX.v;
65
- this.scaleY.v = parent.scaleY.v * local.scaleY.v;
66
-
67
- const pivotX = local.pivotX.v * this.scaleX.v;
68
- const pivotY = local.pivotY.v * this.scaleY.v;
69
- const cos = Math.cos(local.rotation.v);
70
- const sin = Math.sin(local.rotation.v);
71
-
72
- this.x.v = parent.x.v + (rx * pCos - ry * pSin) - (pivotX * cos - pivotY * sin);
73
- this.y.v = parent.y.v + (rx * pSin + ry * pCos) - (pivotX * sin + pivotY * cos);
74
-
75
- this.rotation.v = parent.rotation.v + local.rotation.v;
76
- this.alpha.v = parent.alpha.v * local.alpha.v;
77
- }
78
-
79
- markClean() {
80
- this.x.markClean();
81
- this.y.markClean();
82
- this.scaleX.markClean();
83
- this.scaleY.markClean();
84
- this.rotation.markClean();
85
- this.alpha.markClean();
86
- }
87
- }
88
-
89
- export function localOffsetToWorld(
90
- world: WorldTransform,
91
- ox: number,
92
- oy: number
93
- ): { x: number; y: number } {
94
- const cos = Math.cos(world.rotation.v);
95
- const sin = Math.sin(world.rotation.v);
96
- const sx = ox * world.scaleX.v;
97
- const sy = oy * world.scaleY.v;
98
-
99
- const x = sx * cos - sy * sin;
100
- const y = sx * sin + sy * cos;
101
- return { x, y };
102
- }
103
-
104
- export function worldToLocalWithNewWorld(
105
- world: WorldTransform,
106
- local: LocalTransform,
107
- targetWorldX: number,
108
- targetWorldY: number,
109
- targetWorldRotation: number
110
- ): {
111
- x: number;
112
- y: number;
113
- rotation: number;
114
- newWorldX: number;
115
- newWorldY: number;
116
- newWorldRotation: number;
117
- } {
118
- const invLocalScaleX = local.scaleX.v !== 0 ? 1 / local.scaleX.v : 0;
119
- const invLocalScaleY = local.scaleY.v !== 0 ? 1 / local.scaleY.v : 0;
120
-
121
- const parentScaleX = world.scaleX.v * invLocalScaleX;
122
- const parentScaleY = world.scaleY.v * invLocalScaleY;
123
- const parentRot = world.rotation.v - local.rotation.v;
124
-
125
- const pCos = Math.cos(parentRot);
126
- const pSin = Math.sin(parentRot);
127
-
128
- const cosOld = Math.cos(local.rotation.v);
129
- const sinOld = Math.sin(local.rotation.v);
130
-
131
- const pivotX = local.pivotX.v * world.scaleX.v;
132
- const pivotY = local.pivotY.v * world.scaleY.v;
133
-
134
- const rx0 = local.x.v * parentScaleX;
135
- const ry0 = local.y.v * parentScaleY;
136
-
137
- const parentX = world.x.v - (rx0 * pCos - ry0 * pSin) + (pivotX * cosOld - pivotY * sinOld);
138
- const parentY = world.y.v - (rx0 * pSin + ry0 * pCos) + (pivotX * sinOld + pivotY * cosOld);
139
-
140
- const rotation = targetWorldRotation - parentRot;
141
-
142
- const cosNew = Math.cos(rotation);
143
- const sinNew = Math.sin(rotation);
144
-
145
- const tx = (targetWorldX - parentX) + (pivotX * cosNew - pivotY * sinNew);
146
- const ty = (targetWorldY - parentY) + (pivotX * sinNew + pivotY * cosNew);
147
-
148
- const rx = tx * pCos + ty * pSin;
149
- const ry = -tx * pSin + ty * pCos;
150
-
151
- const invParentScaleX = parentScaleX !== 0 ? 1 / parentScaleX : 0;
152
- const invParentScaleY = parentScaleY !== 0 ? 1 / parentScaleY : 0;
153
-
154
- const x = rx * invParentScaleX;
155
- const y = ry * invParentScaleY;
156
-
157
- const newRx = x * parentScaleX;
158
- const newRy = y * parentScaleY;
159
- const newWorldX = parentX + (newRx * pCos - newRy * pSin) - (pivotX * cosNew - pivotY * sinNew);
160
- const newWorldY = parentY + (newRx * pSin + newRy * pCos) - (pivotX * sinNew + pivotY * cosNew);
161
- const newWorldRotation = parentRot + rotation;
162
-
163
- return { x, y, rotation, newWorldX, newWorldY, newWorldRotation };
164
- }
@@ -1,140 +0,0 @@
1
- import { EventMap } from '@webtaku/event-emitter';
2
- import { AnimatedSprite, Spritesheet, SpritesheetData } from 'pixi.js';
3
- import { getCachedId, spritesheetLoader } from '../asset/loaders/spritesheet';
4
- import { GameObject, GameObjectOptions } from '../game-object/game-object';
5
-
6
- type AnimatedSpriteOptions = {
7
- src?: string;
8
- atlas?: SpritesheetData;
9
- animation?: string;
10
- fps?: number;
11
- loop?: boolean;
12
- } & GameObjectOptions;
13
-
14
- class AnimatedSpriteObject<E extends EventMap = EventMap> extends GameObject<E & {
15
- animationend: (animation: string) => void;
16
- }> {
17
- #id?: string;
18
- #sheet?: Spritesheet;
19
- #sprite?: AnimatedSprite;
20
-
21
- #src?: string;
22
- #atlas?: SpritesheetData;
23
- #animation?: string;
24
- #fps?: number;
25
- #loop?: boolean;
26
-
27
- constructor(opts?: AnimatedSpriteOptions) {
28
- super(opts);
29
- if (opts) {
30
- if (opts.src) this.src = opts.src;
31
- if (opts.atlas) this.atlas = opts.atlas;
32
- if (opts.animation) this.animation = opts.animation;
33
- if (opts.fps) this.fps = opts.fps;
34
- if (opts.loop) this.loop = opts.loop;
35
- }
36
- }
37
-
38
- #updateAnimation() {
39
- this.#sprite?.destroy();
40
- this.#sprite = undefined;
41
-
42
- if (this.#sheet && this.#animation) {
43
- if (!this.#sheet.animations[this.#animation]) {
44
- console.error(`Animation not found: ${this.#animation}`);
45
- return;
46
- }
47
- const sprite = new AnimatedSprite(this.#sheet.animations[this.#animation]);
48
- sprite.anchor.set(0.5, 0.5);
49
- sprite.loop = this.#loop ?? true;
50
- sprite.animationSpeed = (this.#fps ?? 0) / 60;
51
- sprite.play();
52
- this._addPixiChild(sprite);
53
- this.#sprite = sprite;
54
-
55
- sprite.onLoop = () => (this as any).emit('animationend', this.#animation);
56
- sprite.onComplete = () => (this as any).emit('animationend', this.#animation);
57
- }
58
- }
59
-
60
- async #load() {
61
- if (this.#id) spritesheetLoader.release(this.#id);
62
-
63
- this.#id = undefined;
64
- this.#sheet = undefined;
65
- this.#sprite?.destroy();
66
- this.#sprite = undefined;
67
-
68
- if (this.#src && this.#atlas) {
69
- this.#id = getCachedId(this.#src, this.#atlas);
70
- if (!spritesheetLoader.checkLoaded(this.#id)) {
71
- console.info(`Spritesheet not preloaded. Loading now: ${this.#id}`);
72
- }
73
- this.#sheet = await spritesheetLoader.load(this.#id, this.#src, this.#atlas);
74
- }
75
-
76
- this.#updateAnimation();
77
- }
78
-
79
- get src() {
80
- return this.#src;
81
- }
82
-
83
- set src(src: string | undefined) {
84
- if (this.#src !== src) {
85
- this.#src = src;
86
- this.#load();
87
- }
88
- }
89
-
90
- get atlas() {
91
- return this.#atlas;
92
- }
93
-
94
- set atlas(atlas: SpritesheetData | undefined) {
95
- if (this.#atlas !== atlas) {
96
- this.#atlas = atlas;
97
- this.#load();
98
- }
99
- }
100
-
101
- get animation() {
102
- return this.#animation;
103
- }
104
-
105
- set animation(animation: string | undefined) {
106
- if (this.#animation !== animation) {
107
- this.#animation = animation;
108
- this.#updateAnimation();
109
- }
110
- }
111
-
112
- get fps() {
113
- return this.#fps;
114
- }
115
-
116
- set fps(fps: number | undefined) {
117
- if (this.#fps !== fps) {
118
- this.#fps = fps;
119
- if (this.#sprite) this.#sprite.animationSpeed = (fps ?? 0) / 60;
120
- }
121
- }
122
-
123
- get loop() {
124
- return this.#loop;
125
- }
126
-
127
- set loop(loop: boolean | undefined) {
128
- if (this.#loop !== loop) {
129
- this.#loop = loop;
130
- if (this.#sprite) this.#sprite.loop = loop === true;
131
- }
132
- }
133
-
134
- remove() {
135
- if (this.#id) spritesheetLoader.release(this.#id);
136
- super.remove();
137
- }
138
- }
139
-
140
- export { AnimatedSpriteObject };