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.
- package/README.ko.md +550 -0
- package/README.md +575 -4
- package/examples/auto-battle/assets/bgm/battle.mp3 +0 -0
- package/examples/auto-battle/assets/bitmap-fonts/white-peaberry.fnt +107 -0
- package/examples/auto-battle/assets/bitmap-fonts/white-peaberry.png +0 -0
- package/examples/auto-battle/assets/joystick/joystick.png +0 -0
- package/examples/auto-battle/assets/joystick/knob.png +0 -0
- package/examples/auto-battle/assets/sfx/hero/die/die.wav +0 -0
- package/examples/auto-battle/assets/sfx/hero/heal/heal.wav +0 -0
- package/examples/auto-battle/assets/sfx/hero/hit/hit1.wav +0 -0
- package/examples/auto-battle/assets/sfx/hero/hit/hit2.wav +0 -0
- package/examples/auto-battle/assets/sfx/hero/hit/hit3.wav +0 -0
- package/examples/auto-battle/assets/sfx/hero/miss/miss1.wav +0 -0
- package/examples/auto-battle/assets/sfx/hero/miss/miss2.wav +0 -0
- package/examples/auto-battle/assets/sfx/hero/miss/miss3.wav +0 -0
- package/examples/auto-battle/assets/sfx/orc/die/die.wav +0 -0
- package/examples/auto-battle/assets/sfx/orc/hit/hit1.wav +0 -0
- package/examples/auto-battle/assets/sfx/orc/hit/hit2.wav +0 -0
- package/examples/auto-battle/assets/sfx/orc/hit/hit3.wav +0 -0
- package/examples/auto-battle/assets/sfx/orc/miss/miss1.wav +0 -0
- package/examples/auto-battle/assets/sfx/orc/miss/miss2.wav +0 -0
- package/examples/auto-battle/assets/sfx/orc/miss/miss3.wav +0 -0
- package/examples/auto-battle/assets/spritesheets/hero-atlas.json +246 -0
- package/examples/auto-battle/assets/spritesheets/hero.png +0 -0
- package/examples/auto-battle/assets/spritesheets/orc-atlas.json +246 -0
- package/examples/auto-battle/assets/spritesheets/orc.png +0 -0
- package/examples/auto-battle/assets/spritesheets/potion-atlas.json +68 -0
- package/examples/auto-battle/assets/spritesheets/potion.png +0 -0
- package/examples/auto-battle/dist/game.js +2 -0
- package/examples/auto-battle/dist/game.js.LICENSE.txt +35 -0
- package/examples/auto-battle/hud/damage-text.ts +46 -0
- package/examples/auto-battle/hud/heal-text.ts +46 -0
- package/examples/auto-battle/hud/hp-bar.ts +38 -0
- package/examples/auto-battle/index.ts +41 -0
- package/examples/auto-battle/objects/character.ts +95 -0
- package/examples/auto-battle/objects/hero.ts +119 -0
- package/examples/auto-battle/objects/orc.ts +107 -0
- package/examples/auto-battle/objects/potion.ts +27 -0
- package/examples/auto-battle/stage.ts +366 -0
- package/examples/battle-benchmark-matterjs/assets/bgm/battle.mp3 +0 -0
- package/examples/battle-benchmark-matterjs/assets/bitmap-fonts/white-peaberry.fnt +107 -0
- package/examples/battle-benchmark-matterjs/assets/bitmap-fonts/white-peaberry.png +0 -0
- package/examples/battle-benchmark-matterjs/assets/joystick/joystick.png +0 -0
- package/examples/battle-benchmark-matterjs/assets/joystick/knob.png +0 -0
- package/examples/battle-benchmark-matterjs/assets/sfx/hero/die/die.wav +0 -0
- package/examples/battle-benchmark-matterjs/assets/sfx/hero/heal/heal.wav +0 -0
- package/examples/battle-benchmark-matterjs/assets/sfx/hero/hit/hit1.wav +0 -0
- package/examples/battle-benchmark-matterjs/assets/sfx/hero/hit/hit2.wav +0 -0
- package/examples/battle-benchmark-matterjs/assets/sfx/hero/hit/hit3.wav +0 -0
- package/examples/battle-benchmark-matterjs/assets/sfx/hero/miss/miss1.wav +0 -0
- package/examples/battle-benchmark-matterjs/assets/sfx/hero/miss/miss2.wav +0 -0
- package/examples/battle-benchmark-matterjs/assets/sfx/hero/miss/miss3.wav +0 -0
- package/examples/battle-benchmark-matterjs/assets/sfx/orc/die/die.wav +0 -0
- package/examples/battle-benchmark-matterjs/assets/sfx/orc/hit/hit1.wav +0 -0
- package/examples/battle-benchmark-matterjs/assets/sfx/orc/hit/hit2.wav +0 -0
- package/examples/battle-benchmark-matterjs/assets/sfx/orc/hit/hit3.wav +0 -0
- package/examples/battle-benchmark-matterjs/assets/sfx/orc/miss/miss1.wav +0 -0
- package/examples/battle-benchmark-matterjs/assets/sfx/orc/miss/miss2.wav +0 -0
- package/examples/battle-benchmark-matterjs/assets/sfx/orc/miss/miss3.wav +0 -0
- package/examples/battle-benchmark-matterjs/assets/spritesheets/hero-atlas.json +246 -0
- package/examples/battle-benchmark-matterjs/assets/spritesheets/hero.png +0 -0
- package/examples/battle-benchmark-matterjs/assets/spritesheets/orc-atlas.json +246 -0
- package/examples/battle-benchmark-matterjs/assets/spritesheets/orc.png +0 -0
- package/examples/battle-benchmark-matterjs/assets/spritesheets/potion-atlas.json +68 -0
- package/examples/battle-benchmark-matterjs/assets/spritesheets/potion.png +0 -0
- package/examples/battle-benchmark-matterjs/dist/game.js +2 -0
- package/examples/battle-benchmark-matterjs/dist/game.js.LICENSE.txt +35 -0
- package/examples/battle-benchmark-matterjs/hud/damage-text.ts +46 -0
- package/examples/battle-benchmark-matterjs/hud/heal-text.ts +46 -0
- package/examples/battle-benchmark-matterjs/hud/hp-bar.ts +38 -0
- package/examples/battle-benchmark-matterjs/index.html +24 -0
- package/examples/battle-benchmark-matterjs/index.ts +41 -0
- package/examples/battle-benchmark-matterjs/objects/character.ts +95 -0
- package/examples/battle-benchmark-matterjs/objects/hero.ts +111 -0
- package/examples/battle-benchmark-matterjs/objects/orc.ts +107 -0
- package/examples/battle-benchmark-matterjs/objects/potion.ts +27 -0
- package/examples/battle-benchmark-matterjs/stage.ts +177 -0
- package/examples/battle-benchmark-separation/assets/bgm/battle.mp3 +0 -0
- package/examples/battle-benchmark-separation/assets/bitmap-fonts/white-peaberry.fnt +107 -0
- package/examples/battle-benchmark-separation/assets/bitmap-fonts/white-peaberry.png +0 -0
- package/examples/battle-benchmark-separation/assets/joystick/joystick.png +0 -0
- package/examples/battle-benchmark-separation/assets/joystick/knob.png +0 -0
- package/examples/battle-benchmark-separation/assets/sfx/hero/die/die.wav +0 -0
- package/examples/battle-benchmark-separation/assets/sfx/hero/heal/heal.wav +0 -0
- package/examples/battle-benchmark-separation/assets/sfx/hero/hit/hit1.wav +0 -0
- package/examples/battle-benchmark-separation/assets/sfx/hero/hit/hit2.wav +0 -0
- package/examples/battle-benchmark-separation/assets/sfx/hero/hit/hit3.wav +0 -0
- package/examples/battle-benchmark-separation/assets/sfx/hero/miss/miss1.wav +0 -0
- package/examples/battle-benchmark-separation/assets/sfx/hero/miss/miss2.wav +0 -0
- package/examples/battle-benchmark-separation/assets/sfx/hero/miss/miss3.wav +0 -0
- package/examples/battle-benchmark-separation/assets/sfx/orc/die/die.wav +0 -0
- package/examples/battle-benchmark-separation/assets/sfx/orc/hit/hit1.wav +0 -0
- package/examples/battle-benchmark-separation/assets/sfx/orc/hit/hit2.wav +0 -0
- package/examples/battle-benchmark-separation/assets/sfx/orc/hit/hit3.wav +0 -0
- package/examples/battle-benchmark-separation/assets/sfx/orc/miss/miss1.wav +0 -0
- package/examples/battle-benchmark-separation/assets/sfx/orc/miss/miss2.wav +0 -0
- package/examples/battle-benchmark-separation/assets/sfx/orc/miss/miss3.wav +0 -0
- package/examples/battle-benchmark-separation/assets/spritesheets/hero-atlas.json +246 -0
- package/examples/battle-benchmark-separation/assets/spritesheets/hero.png +0 -0
- package/examples/battle-benchmark-separation/assets/spritesheets/orc-atlas.json +246 -0
- package/examples/battle-benchmark-separation/assets/spritesheets/orc.png +0 -0
- package/examples/battle-benchmark-separation/assets/spritesheets/potion-atlas.json +68 -0
- package/examples/battle-benchmark-separation/assets/spritesheets/potion.png +0 -0
- package/examples/battle-benchmark-separation/dist/game.js +2 -0
- package/examples/battle-benchmark-separation/dist/game.js.LICENSE.txt +35 -0
- package/examples/battle-benchmark-separation/hud/damage-text.ts +46 -0
- package/examples/battle-benchmark-separation/hud/heal-text.ts +46 -0
- package/examples/battle-benchmark-separation/hud/hp-bar.ts +38 -0
- package/examples/battle-benchmark-separation/index.html +24 -0
- package/examples/battle-benchmark-separation/index.ts +41 -0
- package/examples/battle-benchmark-separation/objects/character.ts +225 -0
- package/examples/battle-benchmark-separation/objects/hero.ts +110 -0
- package/examples/battle-benchmark-separation/objects/orc.ts +213 -0
- package/examples/battle-benchmark-separation/objects/potion.ts +27 -0
- package/examples/battle-benchmark-separation/stage.ts +178 -0
- package/examples/battle-benchmark-separation2/assets/bgm/battle.mp3 +0 -0
- package/examples/battle-benchmark-separation2/assets/bitmap-fonts/white-peaberry.fnt +107 -0
- package/examples/battle-benchmark-separation2/assets/bitmap-fonts/white-peaberry.png +0 -0
- package/examples/battle-benchmark-separation2/assets/joystick/joystick.png +0 -0
- package/examples/battle-benchmark-separation2/assets/joystick/knob.png +0 -0
- package/examples/battle-benchmark-separation2/assets/sfx/hero/die/die.wav +0 -0
- package/examples/battle-benchmark-separation2/assets/sfx/hero/heal/heal.wav +0 -0
- package/examples/battle-benchmark-separation2/assets/sfx/hero/hit/hit1.wav +0 -0
- package/examples/battle-benchmark-separation2/assets/sfx/hero/hit/hit2.wav +0 -0
- package/examples/battle-benchmark-separation2/assets/sfx/hero/hit/hit3.wav +0 -0
- package/examples/battle-benchmark-separation2/assets/sfx/hero/miss/miss1.wav +0 -0
- package/examples/battle-benchmark-separation2/assets/sfx/hero/miss/miss2.wav +0 -0
- package/examples/battle-benchmark-separation2/assets/sfx/hero/miss/miss3.wav +0 -0
- package/examples/battle-benchmark-separation2/assets/sfx/orc/die/die.wav +0 -0
- package/examples/battle-benchmark-separation2/assets/sfx/orc/hit/hit1.wav +0 -0
- package/examples/battle-benchmark-separation2/assets/sfx/orc/hit/hit2.wav +0 -0
- package/examples/battle-benchmark-separation2/assets/sfx/orc/hit/hit3.wav +0 -0
- package/examples/battle-benchmark-separation2/assets/sfx/orc/miss/miss1.wav +0 -0
- package/examples/battle-benchmark-separation2/assets/sfx/orc/miss/miss2.wav +0 -0
- package/examples/battle-benchmark-separation2/assets/sfx/orc/miss/miss3.wav +0 -0
- package/examples/battle-benchmark-separation2/assets/spritesheets/hero-atlas.json +246 -0
- package/examples/battle-benchmark-separation2/assets/spritesheets/hero.png +0 -0
- package/examples/battle-benchmark-separation2/assets/spritesheets/orc-atlas.json +246 -0
- package/examples/battle-benchmark-separation2/assets/spritesheets/orc.png +0 -0
- package/examples/battle-benchmark-separation2/assets/spritesheets/potion-atlas.json +68 -0
- package/examples/battle-benchmark-separation2/assets/spritesheets/potion.png +0 -0
- package/examples/battle-benchmark-separation2/dist/game.js +2 -0
- package/examples/battle-benchmark-separation2/dist/game.js.LICENSE.txt +35 -0
- package/examples/battle-benchmark-separation2/hud/damage-text.ts +46 -0
- package/examples/battle-benchmark-separation2/hud/heal-text.ts +46 -0
- package/examples/battle-benchmark-separation2/hud/hp-bar.ts +38 -0
- package/examples/battle-benchmark-separation2/index.html +24 -0
- package/examples/battle-benchmark-separation2/index.ts +41 -0
- package/examples/battle-benchmark-separation2/objects/character.ts +195 -0
- package/examples/battle-benchmark-separation2/objects/hero.ts +110 -0
- package/examples/battle-benchmark-separation2/objects/orc.ts +213 -0
- package/examples/battle-benchmark-separation2/objects/potion.ts +27 -0
- package/examples/battle-benchmark-separation2/stage.ts +178 -0
- package/examples/collision-test/assets/cat.png +0 -0
- package/examples/collision-test/dist/game.js +2 -0
- package/examples/collision-test/dist/game.js.LICENSE.txt +35 -0
- package/examples/collision-test/index.html +24 -0
- package/examples/collision-test/index.ts +30 -0
- package/examples/dom-particle-test/assets/bird.png +0 -0
- package/examples/dom-particle-test/dist/game.js +2 -0
- package/examples/dom-particle-test/dist/game.js.LICENSE.txt +35 -0
- package/examples/dom-particle-test/index.html +24 -0
- package/examples/dom-particle-test/index.ts +27 -0
- package/examples/dom-sprite-test/assets/bird.png +0 -0
- package/examples/dom-sprite-test/assets/fire.png +0 -0
- package/examples/dom-sprite-test/assets/run.png +0 -0
- package/examples/dom-sprite-test/dist/game.js +2 -0
- package/examples/dom-sprite-test/dist/game.js.LICENSE.txt +35 -0
- package/examples/dom-sprite-test/index.html +24 -0
- package/examples/dom-sprite-test/index.ts +35 -0
- package/examples/dom-test/dist/game.js +2 -0
- package/examples/dom-test/dist/game.js.LICENSE.txt +35 -0
- package/examples/dom-test/index.html +24 -0
- package/examples/dom-test/index.ts +22 -0
- package/examples/particle-test/assets/bird.png +0 -0
- package/examples/particle-test/dist/game.js +2 -0
- package/examples/particle-test/dist/game.js.LICENSE.txt +35 -0
- package/examples/particle-test/index.html +24 -0
- package/examples/particle-test/index.ts +30 -0
- package/examples/renderer-test/dist/game.js +2 -0
- package/examples/renderer-test/dist/game.js.LICENSE.txt +35 -0
- package/examples/renderer-test/index.html +24 -0
- package/examples/renderer-test/index.ts +9 -0
- package/examples/simple-battle/assets/bgm/battle.mp3 +0 -0
- package/examples/simple-battle/assets/bitmap-fonts/white-peaberry.fnt +107 -0
- package/examples/simple-battle/assets/bitmap-fonts/white-peaberry.png +0 -0
- package/examples/simple-battle/assets/joystick/joystick.png +0 -0
- package/examples/simple-battle/assets/joystick/knob.png +0 -0
- package/examples/simple-battle/assets/sfx/hero/die/die.wav +0 -0
- package/examples/simple-battle/assets/sfx/hero/heal/heal.wav +0 -0
- package/examples/simple-battle/assets/sfx/hero/hit/hit1.wav +0 -0
- package/examples/simple-battle/assets/sfx/hero/hit/hit2.wav +0 -0
- package/examples/simple-battle/assets/sfx/hero/hit/hit3.wav +0 -0
- package/examples/simple-battle/assets/sfx/hero/miss/miss1.wav +0 -0
- package/examples/simple-battle/assets/sfx/hero/miss/miss2.wav +0 -0
- package/examples/simple-battle/assets/sfx/hero/miss/miss3.wav +0 -0
- package/examples/simple-battle/assets/sfx/orc/die/die.wav +0 -0
- package/examples/simple-battle/assets/sfx/orc/hit/hit1.wav +0 -0
- package/examples/simple-battle/assets/sfx/orc/hit/hit2.wav +0 -0
- package/examples/simple-battle/assets/sfx/orc/hit/hit3.wav +0 -0
- package/examples/simple-battle/assets/sfx/orc/miss/miss1.wav +0 -0
- package/examples/simple-battle/assets/sfx/orc/miss/miss2.wav +0 -0
- package/examples/simple-battle/assets/sfx/orc/miss/miss3.wav +0 -0
- package/examples/simple-battle/assets/spritesheets/hero-atlas.json +246 -0
- package/examples/simple-battle/assets/spritesheets/hero.png +0 -0
- package/examples/simple-battle/assets/spritesheets/orc-atlas.json +246 -0
- package/examples/simple-battle/assets/spritesheets/orc.png +0 -0
- package/examples/simple-battle/assets/spritesheets/potion-atlas.json +68 -0
- package/examples/simple-battle/assets/spritesheets/potion.png +0 -0
- package/examples/simple-battle/dist/game.js +2 -0
- package/examples/simple-battle/dist/game.js.LICENSE.txt +35 -0
- package/examples/simple-battle/hud/damage-text.ts +46 -0
- package/examples/simple-battle/hud/heal-text.ts +46 -0
- package/examples/simple-battle/hud/hp-bar.ts +38 -0
- package/examples/simple-battle/index.html +24 -0
- package/examples/simple-battle/index.ts +41 -0
- package/examples/simple-battle/objects/character.ts +95 -0
- package/examples/simple-battle/objects/hero.ts +111 -0
- package/examples/simple-battle/objects/orc.ts +107 -0
- package/examples/simple-battle/objects/potion.ts +27 -0
- package/examples/simple-battle/stage.ts +174 -0
- package/examples/spine-test/assets/spine/spineboy.atlas +95 -0
- package/examples/spine-test/assets/spine/spineboy.png +0 -0
- package/examples/spine-test/assets/spine/spineboy.skel +0 -0
- package/examples/spine-test/dist/game.js +2 -0
- package/examples/spine-test/dist/game.js.LICENSE.txt +35 -0
- package/examples/spine-test/index.html +24 -0
- package/examples/spine-test/index.ts +29 -0
- package/examples/sprite-test/assets/bird.png +0 -0
- package/examples/sprite-test/assets/fire.png +0 -0
- package/examples/sprite-test/dist/game.js +2 -0
- package/examples/sprite-test/dist/game.js.LICENSE.txt +35 -0
- package/examples/sprite-test/index.html +24 -0
- package/examples/sprite-test/index.ts +38 -0
- package/examples/tsconfig.json +2 -1
- package/examples/webpack.config.js +17 -3
- package/jest.config.ts +10 -0
- package/lib/asset/audio.js +47 -11
- package/lib/asset/audio.js.map +1 -1
- package/lib/asset/loaders/audio.js +7 -4
- package/lib/asset/loaders/audio.js.map +1 -1
- package/lib/asset/loaders/binary.js +7 -4
- package/lib/asset/loaders/binary.js.map +1 -1
- package/lib/asset/loaders/bitmap-font.js +74 -0
- package/lib/asset/loaders/bitmap-font.js.map +1 -0
- package/lib/asset/loaders/font.js +4 -1
- package/lib/asset/loaders/font.js.map +1 -1
- package/lib/asset/loaders/loader.js +17 -12
- package/lib/asset/loaders/loader.js.map +1 -1
- package/lib/asset/loaders/spritesheet.js +18 -8
- package/lib/asset/loaders/spritesheet.js.map +1 -1
- package/lib/asset/loaders/text.js +6 -3
- package/lib/asset/loaders/text.js.map +1 -1
- package/lib/asset/loaders/texture.js +22 -26
- package/lib/asset/loaders/texture.js.map +1 -1
- package/lib/asset/preload.js +60 -56
- package/lib/asset/preload.js.map +1 -1
- package/lib/collision/check-collision.js +804 -0
- package/lib/collision/check-collision.js.map +1 -0
- package/lib/collision/check-collision.test.js +300 -0
- package/lib/collision/check-collision.test.js.map +1 -0
- package/lib/collision/colliders.js +8 -0
- package/lib/collision/colliders.js.map +1 -0
- package/lib/debug.js.map +1 -0
- package/lib/dom/dom-animated-sprite.js +106 -0
- package/lib/dom/dom-animated-sprite.js.map +1 -0
- package/lib/dom/dom-game-object.js +108 -0
- package/lib/dom/dom-game-object.js.map +1 -0
- package/lib/dom/dom-particle.js +105 -0
- package/lib/dom/dom-particle.js.map +1 -0
- package/lib/dom/dom-preload.js +43 -0
- package/lib/dom/dom-preload.js.map +1 -0
- package/lib/dom/dom-sprite.js +40 -0
- package/lib/dom/dom-sprite.js.map +1 -0
- package/lib/dom/dom-texture-loader.js +36 -0
- package/lib/dom/dom-texture-loader.js.map +1 -0
- package/lib/dom/dom-utils.js +20 -0
- package/lib/dom/dom-utils.js.map +1 -0
- package/lib/index copy.js +16 -0
- package/lib/index copy.js.map +1 -0
- package/lib/index.js +36 -10
- package/lib/index.js.map +1 -1
- package/lib/input/joystick.js +262 -0
- package/lib/input/joystick.js.map +1 -0
- package/lib/node/core/dirty-number.js +19 -0
- package/lib/node/core/dirty-number.js.map +1 -0
- package/lib/node/core/game-node.js +63 -0
- package/lib/node/core/game-node.js.map +1 -0
- package/lib/node/core/game-object.js +8 -0
- package/lib/node/core/game-object.js.map +1 -0
- package/lib/node/core/renderable.js +59 -0
- package/lib/node/core/renderable.js.map +1 -0
- package/lib/node/core/transform.js +70 -0
- package/lib/node/core/transform.js.map +1 -0
- package/lib/node/core/transformable.js +85 -0
- package/lib/node/core/transformable.js.map +1 -0
- package/lib/node/ext/animated-sprite.js +77 -0
- package/lib/node/ext/animated-sprite.js.map +1 -0
- package/lib/node/ext/bitmap-text.js +93 -0
- package/lib/node/ext/bitmap-text.js.map +1 -0
- package/lib/node/ext/circle.js +43 -0
- package/lib/node/ext/circle.js.map +1 -0
- package/lib/node/ext/deplay.js +22 -0
- package/lib/node/ext/deplay.js.map +1 -0
- package/lib/node/ext/dom-container.js +51 -0
- package/lib/node/ext/dom-container.js.map +1 -0
- package/lib/node/ext/interval.js +22 -0
- package/lib/node/ext/interval.js.map +1 -0
- package/lib/node/ext/particle.js +98 -0
- package/lib/node/ext/particle.js.map +1 -0
- package/lib/node/ext/rectangle.js +52 -0
- package/lib/node/ext/rectangle.js.map +1 -0
- package/lib/node/ext/spine.js +272 -0
- package/lib/node/ext/spine.js.map +1 -0
- package/lib/node/ext/sprite.js +42 -0
- package/lib/node/ext/sprite.js.map +1 -0
- package/lib/node/physics/physics-object.js +92 -0
- package/lib/node/physics/physics-object.js.map +1 -0
- package/lib/node/physics/physics-world.js +29 -0
- package/lib/node/physics/physics-world.js.map +1 -0
- package/lib/node/physics/rigidbodies.js +7 -0
- package/lib/node/physics/rigidbodies.js.map +1 -0
- package/lib/renderer/camera.js +19 -0
- package/lib/renderer/camera.js.map +1 -0
- package/lib/renderer/container-manager.js +29 -0
- package/lib/renderer/container-manager.js.map +1 -0
- package/lib/renderer/fps-display.js +18 -0
- package/lib/renderer/fps-display.js.map +1 -0
- package/lib/renderer/layer.js +12 -0
- package/lib/renderer/layer.js.map +1 -0
- package/lib/renderer/renderer.js +146 -0
- package/lib/renderer/renderer.js.map +1 -0
- package/lib/renderer/ticker.js +56 -0
- package/lib/renderer/ticker.js.map +1 -0
- package/lib/renderer/ticker.test.js +241 -0
- package/lib/renderer/ticker.test.js.map +1 -0
- package/lib/types/animation-atlas.js +2 -0
- package/lib/types/animation-atlas.js.map +1 -0
- package/lib/types/asset/audio.d.ts +5 -4
- package/lib/types/asset/audio.d.ts.map +1 -1
- package/lib/types/asset/loaders/audio.d.ts +2 -1
- package/lib/types/asset/loaders/audio.d.ts.map +1 -1
- package/lib/types/asset/loaders/binary.d.ts +2 -1
- package/lib/types/asset/loaders/binary.d.ts.map +1 -1
- package/lib/types/asset/loaders/bitmap-font.d.ts +17 -0
- package/lib/types/asset/loaders/bitmap-font.d.ts.map +1 -0
- package/lib/types/asset/loaders/font.d.ts +2 -1
- package/lib/types/asset/loaders/font.d.ts.map +1 -1
- package/lib/types/asset/loaders/loader.d.ts +6 -6
- package/lib/types/asset/loaders/loader.d.ts.map +1 -1
- package/lib/types/asset/loaders/spritesheet.d.ts +14 -6
- package/lib/types/asset/loaders/spritesheet.d.ts.map +1 -1
- package/lib/types/asset/loaders/text.d.ts +2 -1
- package/lib/types/asset/loaders/text.d.ts.map +1 -1
- package/lib/types/asset/loaders/texture.d.ts +2 -2
- package/lib/types/asset/loaders/texture.d.ts.map +1 -1
- package/lib/types/asset/preload.d.ts +7 -5
- package/lib/types/asset/preload.d.ts.map +1 -1
- package/lib/types/atlas copy.js +2 -0
- package/lib/types/atlas copy.js.map +1 -0
- package/lib/types/atlas.js +2 -0
- package/lib/types/atlas.js.map +1 -0
- package/lib/types/bitmap-font.js +2 -0
- package/lib/types/bitmap-font.js.map +1 -0
- package/lib/types/collision/check-collision.d.ts +4 -0
- package/lib/types/collision/check-collision.d.ts.map +1 -0
- package/lib/types/collision/check-collision.test.d.ts +2 -0
- package/lib/types/collision/check-collision.test.d.ts.map +1 -0
- package/lib/types/collision/colliders.d.ts +34 -0
- package/lib/types/collision/colliders.d.ts.map +1 -0
- package/lib/types/debug.d.ts.map +1 -0
- package/lib/types/dom/dom-animated-sprite.d.ts +23 -0
- package/lib/types/dom/dom-animated-sprite.d.ts.map +1 -0
- package/lib/types/dom/dom-game-object.d.ts +44 -0
- package/lib/types/dom/dom-game-object.d.ts.map +1 -0
- package/lib/types/dom/dom-particle.d.ts +30 -0
- package/lib/types/dom/dom-particle.d.ts.map +1 -0
- package/lib/types/dom/dom-preload.d.ts +2 -0
- package/lib/types/dom/dom-preload.d.ts.map +1 -0
- package/lib/types/dom/dom-sprite.d.ts +13 -0
- package/lib/types/dom/dom-sprite.d.ts.map +1 -0
- package/lib/types/dom/dom-texture-loader.d.ts +8 -0
- package/lib/types/dom/dom-texture-loader.d.ts.map +1 -0
- package/lib/types/dom/dom-utils.d.ts +3 -0
- package/lib/types/dom/dom-utils.d.ts.map +1 -0
- package/lib/types/index copy.d.ts +16 -0
- package/lib/types/index copy.d.ts.map +1 -0
- package/lib/types/index.d.ts +26 -11
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/input/joystick.d.ts +28 -0
- package/lib/types/input/joystick.d.ts.map +1 -0
- package/lib/types/node/core/dirty-number.d.ts +9 -0
- package/lib/types/node/core/dirty-number.d.ts.map +1 -0
- package/lib/types/node/core/game-node.d.ts +16 -0
- package/lib/types/node/core/game-node.d.ts.map +1 -0
- package/lib/types/node/core/game-object.d.ts +8 -0
- package/lib/types/node/core/game-object.d.ts.map +1 -0
- package/lib/types/node/core/renderable.d.ts +23 -0
- package/lib/types/node/core/renderable.d.ts.map +1 -0
- package/lib/types/node/core/transform.d.ts +27 -0
- package/lib/types/node/core/transform.d.ts.map +1 -0
- package/lib/types/node/core/transformable.d.ts +44 -0
- package/lib/types/node/core/transformable.d.ts.map +1 -0
- package/lib/types/node/ext/animated-sprite.d.ts +22 -0
- package/lib/types/node/ext/animated-sprite.d.ts.map +1 -0
- package/lib/types/node/ext/bitmap-text.d.ts +14 -0
- package/lib/types/node/ext/bitmap-text.d.ts.map +1 -0
- package/lib/types/node/ext/circle.d.ts +19 -0
- package/lib/types/node/ext/circle.d.ts.map +1 -0
- package/lib/types/node/ext/deplay.d.ts +8 -0
- package/lib/types/node/ext/deplay.d.ts.map +1 -0
- package/lib/types/node/ext/dom-container.d.ts +12 -0
- package/lib/types/node/ext/dom-container.d.ts.map +1 -0
- package/lib/types/node/ext/interval.d.ts +9 -0
- package/lib/types/node/ext/interval.d.ts.map +1 -0
- package/lib/types/node/ext/particle.d.ts +30 -0
- package/lib/types/node/ext/particle.d.ts.map +1 -0
- package/lib/types/node/ext/rectangle.d.ts +22 -0
- package/lib/types/node/ext/rectangle.d.ts.map +1 -0
- package/lib/types/node/ext/spine.d.ts +36 -0
- package/lib/types/node/ext/spine.d.ts.map +1 -0
- package/lib/types/node/ext/sprite.d.ts +13 -0
- package/lib/types/node/ext/sprite.d.ts.map +1 -0
- package/lib/types/node/physics/physics-object.d.ts +38 -0
- package/lib/types/node/physics/physics-object.d.ts.map +1 -0
- package/lib/types/node/physics/physics-world.d.ts +18 -0
- package/lib/types/node/physics/physics-world.d.ts.map +1 -0
- package/lib/types/node/physics/rigidbodies.d.ts +23 -0
- package/lib/types/node/physics/rigidbodies.d.ts.map +1 -0
- package/lib/types/renderer/camera.d.ts +13 -0
- package/lib/types/renderer/camera.d.ts.map +1 -0
- package/lib/types/renderer/container-manager.d.ts +9 -0
- package/lib/types/renderer/container-manager.d.ts.map +1 -0
- package/lib/types/renderer/fps-display.d.ts +7 -0
- package/lib/types/renderer/fps-display.d.ts.map +1 -0
- package/lib/types/renderer/layer.d.ts +7 -0
- package/lib/types/renderer/layer.d.ts.map +1 -0
- package/lib/types/renderer/renderer.d.ts +40 -0
- package/lib/types/renderer/renderer.d.ts.map +1 -0
- package/lib/types/renderer/ticker.d.ts +6 -0
- package/lib/types/renderer/ticker.d.ts.map +1 -0
- package/lib/types/renderer/ticker.test.d.ts +40 -0
- package/lib/types/renderer/ticker.test.d.ts.map +1 -0
- package/lib/types/sprite-atlas.js +2 -0
- package/lib/types/sprite-atlas.js.map +1 -0
- package/lib/types/types/animation-atlas.d.ts +14 -0
- package/lib/types/types/animation-atlas.d.ts.map +1 -0
- package/lib/types/types/atlas copy.d.ts +12 -0
- package/lib/types/types/atlas copy.d.ts.map +1 -0
- package/lib/types/types/atlas.d.ts +16 -0
- package/lib/types/types/atlas.d.ts.map +1 -0
- package/lib/types/types/bitmap-font.d.ts +18 -0
- package/lib/types/types/bitmap-font.d.ts.map +1 -0
- package/lib/types/types/sprite-atlas.d.ts +13 -0
- package/lib/types/types/sprite-atlas.d.ts.map +1 -0
- package/lib/types/utils/device.d.ts +2 -0
- package/lib/types/utils/device.d.ts.map +1 -0
- package/lib/utils/device.js +2 -0
- package/lib/utils/device.js.map +1 -0
- package/package.json +8 -7
- package/src/asset/audio.ts +134 -90
- package/src/asset/loaders/audio.ts +23 -20
- package/src/asset/loaders/binary.ts +20 -16
- package/src/asset/loaders/bitmap-font.ts +91 -0
- package/src/asset/loaders/font.ts +18 -14
- package/src/asset/loaders/loader.ts +27 -23
- package/src/asset/loaders/spritesheet.ts +47 -36
- package/src/asset/loaders/text.ts +19 -15
- package/src/asset/loaders/texture.ts +30 -37
- package/src/asset/preload.ts +71 -64
- package/src/collision/check-collision.test.ts +349 -0
- package/src/collision/check-collision.ts +821 -0
- package/src/collision/colliders.ts +19 -0
- package/src/debug.ts +5 -0
- package/src/dom/dom-animated-sprite.ts +132 -0
- package/src/dom/dom-game-object.ts +134 -0
- package/src/dom/dom-particle.ts +151 -0
- package/src/dom/dom-preload.ts +54 -0
- package/src/dom/dom-sprite.ts +50 -0
- package/src/dom/dom-texture-loader.ts +44 -0
- package/src/dom/dom-utils.ts +19 -0
- package/src/index.ts +47 -13
- package/src/input/joystick.ts +316 -0
- package/src/node/core/dirty-number.ts +21 -0
- package/src/node/core/game-node.ts +74 -0
- package/src/node/core/game-object.ts +11 -0
- package/src/node/core/renderable.ts +72 -0
- package/src/node/core/transform.ts +82 -0
- package/src/node/core/transformable.ts +111 -0
- package/src/node/ext/animated-sprite.ts +103 -0
- package/src/node/ext/bitmap-text.ts +113 -0
- package/src/node/ext/circle.ts +55 -0
- package/src/node/ext/deplay.ts +25 -0
- package/src/node/ext/dom-container.ts +62 -0
- package/src/node/ext/interval.ts +25 -0
- package/src/node/ext/particle.ts +142 -0
- package/src/node/ext/rectangle.ts +71 -0
- package/src/node/ext/spine.ts +323 -0
- package/src/node/ext/sprite.ts +53 -0
- package/src/node/physics/physics-object.ts +127 -0
- package/src/node/physics/physics-world.ts +41 -0
- package/src/node/physics/rigidbodies.ts +14 -0
- package/src/renderer/camera.ts +25 -0
- package/src/renderer/container-manager.ts +36 -0
- package/src/renderer/fps-display.ts +21 -0
- package/src/renderer/layer.ts +15 -0
- package/src/renderer/renderer.ts +181 -0
- package/src/renderer/ticker.test.ts +325 -0
- package/src/renderer/ticker.ts +54 -0
- package/src/types/atlas.ts +17 -0
- package/src/types/bitmap-font.ts +19 -0
- package/src/utils/device.ts +1 -0
- package/examples/test-dom/index.ts +0 -21
- package/lib/game-object/game-object-physics.js +0 -188
- package/lib/game-object/game-object-physics.js.map +0 -1
- package/lib/game-object/game-object-rendering.js +0 -35
- package/lib/game-object/game-object-rendering.js.map +0 -1
- package/lib/game-object/game-object.js +0 -162
- package/lib/game-object/game-object.js.map +0 -1
- package/lib/game-object/transform.js +0 -118
- package/lib/game-object/transform.js.map +0 -1
- package/lib/game-object-ext/animated-sprite.js +0 -117
- package/lib/game-object-ext/animated-sprite.js.map +0 -1
- package/lib/game-object-ext/dom-container.js +0 -56
- package/lib/game-object-ext/dom-container.js.map +0 -1
- package/lib/game-object-ext/rect.js +0 -30
- package/lib/game-object-ext/rect.js.map +0 -1
- package/lib/game-object-ext/spine.js +0 -206
- package/lib/game-object-ext/spine.js.map +0 -1
- package/lib/game-object-ext/sprite.js +0 -46
- package/lib/game-object-ext/sprite.js.map +0 -1
- package/lib/game-object-ext/text.js +0 -68
- package/lib/game-object-ext/text.js.map +0 -1
- package/lib/game-object-ext/tiling-sprite.js +0 -64
- package/lib/game-object-ext/tiling-sprite.js.map +0 -1
- package/lib/types/game-object/game-object-physics.d.ts +0 -42
- package/lib/types/game-object/game-object-physics.d.ts.map +0 -1
- package/lib/types/game-object/game-object-rendering.d.ts +0 -15
- package/lib/types/game-object/game-object-rendering.d.ts.map +0 -1
- package/lib/types/game-object/game-object.d.ts +0 -81
- package/lib/types/game-object/game-object.d.ts.map +0 -1
- package/lib/types/game-object/transform.d.ts +0 -43
- package/lib/types/game-object/transform.d.ts.map +0 -1
- package/lib/types/game-object-ext/animated-sprite.d.ts +0 -29
- package/lib/types/game-object-ext/animated-sprite.d.ts.map +0 -1
- package/lib/types/game-object-ext/dom-container.d.ts +0 -16
- package/lib/types/game-object-ext/dom-container.d.ts.map +0 -1
- package/lib/types/game-object-ext/rect.d.ts +0 -17
- package/lib/types/game-object-ext/rect.d.ts.map +0 -1
- package/lib/types/game-object-ext/spine.d.ts +0 -35
- package/lib/types/game-object-ext/spine.d.ts.map +0 -1
- package/lib/types/game-object-ext/sprite.d.ts +0 -14
- package/lib/types/game-object-ext/sprite.d.ts.map +0 -1
- package/lib/types/game-object-ext/text.d.ts +0 -26
- package/lib/types/game-object-ext/text.d.ts.map +0 -1
- package/lib/types/game-object-ext/tiling-sprite.d.ts +0 -20
- package/lib/types/game-object-ext/tiling-sprite.d.ts.map +0 -1
- package/lib/types/utils/debug.d.ts.map +0 -1
- package/lib/types/utils/go.d.ts +0 -26
- package/lib/types/utils/go.d.ts.map +0 -1
- package/lib/types/world/world-debug.d.ts +0 -11
- package/lib/types/world/world-debug.d.ts.map +0 -1
- package/lib/types/world/world-physics.d.ts +0 -16
- package/lib/types/world/world-physics.d.ts.map +0 -1
- package/lib/types/world/world-rendering.d.ts +0 -28
- package/lib/types/world/world-rendering.d.ts.map +0 -1
- package/lib/types/world/world.d.ts +0 -38
- package/lib/types/world/world.d.ts.map +0 -1
- package/lib/utils/debug.js.map +0 -1
- package/lib/utils/go.js +0 -33
- package/lib/utils/go.js.map +0 -1
- package/lib/world/world-debug.js +0 -89
- package/lib/world/world-debug.js.map +0 -1
- package/lib/world/world-physics.js +0 -45
- package/lib/world/world-physics.js.map +0 -1
- package/lib/world/world-rendering.js +0 -123
- package/lib/world/world-rendering.js.map +0 -1
- package/lib/world/world.js +0 -147
- package/lib/world/world.js.map +0 -1
- package/src/game-object/game-object-physics.ts +0 -191
- package/src/game-object/game-object-rendering.ts +0 -27
- package/src/game-object/game-object.ts +0 -190
- package/src/game-object/transform.ts +0 -164
- package/src/game-object-ext/animated-sprite.ts +0 -140
- package/src/game-object-ext/dom-container.ts +0 -67
- package/src/game-object-ext/rect.ts +0 -40
- package/src/game-object-ext/spine.ts +0 -235
- package/src/game-object-ext/sprite.ts +0 -55
- package/src/game-object-ext/text.ts +0 -83
- package/src/game-object-ext/tiling-sprite.ts +0 -73
- package/src/utils/debug.ts +0 -5
- package/src/utils/go.ts +0 -53
- package/src/world/world-debug.ts +0 -114
- package/src/world/world-physics.ts +0 -52
- package/src/world/world-rendering.ts +0 -145
- package/src/world/world.ts +0 -171
- /package/examples/{test-dom → auto-battle}/index.html +0 -0
- /package/lib/{utils/debug.js → debug.js} +0 -0
- /package/lib/types/{utils/debug.d.ts → debug.d.ts} +0 -0
package/src/world/world-debug.ts
DELETED
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
import Matter from 'matter-js';
|
|
2
|
-
import Stats from 'stats.js';
|
|
3
|
-
import { debugMode } from '../utils/debug';
|
|
4
|
-
|
|
5
|
-
export class WorldDebug {
|
|
6
|
-
#container: HTMLElement;
|
|
7
|
-
#stats?: Stats;
|
|
8
|
-
#matterDebugRenderer?: Matter.Render;
|
|
9
|
-
|
|
10
|
-
constructor(container: HTMLElement) {
|
|
11
|
-
this.#container = container;
|
|
12
|
-
|
|
13
|
-
if (debugMode) {
|
|
14
|
-
const stats = new Stats();
|
|
15
|
-
stats.dom.style.position = 'absolute';
|
|
16
|
-
stats.showPanel(0);
|
|
17
|
-
container.appendChild(stats.dom);
|
|
18
|
-
this.#stats = stats;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
update() {
|
|
23
|
-
this.#stats?.update();
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
createMatterDebugRenderer(engine: Matter.Engine, width: number, height: number) {
|
|
27
|
-
if (debugMode) {
|
|
28
|
-
const matterDebugRenderer = Matter.Render.create({
|
|
29
|
-
element: this.#container,
|
|
30
|
-
engine,
|
|
31
|
-
options: {
|
|
32
|
-
width,
|
|
33
|
-
height,
|
|
34
|
-
background: 'transparent',
|
|
35
|
-
wireframes: false,
|
|
36
|
-
showCollisions: true,
|
|
37
|
-
pixelRatio: window.devicePixelRatio,
|
|
38
|
-
},
|
|
39
|
-
});
|
|
40
|
-
this.#matterDebugRenderer = matterDebugRenderer;
|
|
41
|
-
|
|
42
|
-
const debugCanvas = matterDebugRenderer.canvas;
|
|
43
|
-
debugCanvas.style.position = 'absolute';
|
|
44
|
-
debugCanvas.style.zIndex = '1';
|
|
45
|
-
debugCanvas.style.touchAction = 'auto';
|
|
46
|
-
Matter.Render.run(matterDebugRenderer);
|
|
47
|
-
|
|
48
|
-
if (this.#lastRect) this.setMatterDebugRendererSize(this.#lastRect, this.#lastWidth, this.#lastHeight, this.#lastCameraX, this.#lastCameraY);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
#lastRect?: DOMRectReadOnly;
|
|
53
|
-
#lastWidth = 0;
|
|
54
|
-
#lastHeight = 0;
|
|
55
|
-
#lastCameraX = 0;
|
|
56
|
-
#lastCameraY = 0;
|
|
57
|
-
|
|
58
|
-
setMatterDebugRendererSize(
|
|
59
|
-
rect: DOMRectReadOnly,
|
|
60
|
-
width: number,
|
|
61
|
-
height: number,
|
|
62
|
-
cameraX: number,
|
|
63
|
-
cameraY: number,
|
|
64
|
-
) {
|
|
65
|
-
this.#lastRect = rect;
|
|
66
|
-
this.#lastWidth = width;
|
|
67
|
-
this.#lastHeight = height;
|
|
68
|
-
this.#lastCameraX = cameraX;
|
|
69
|
-
this.#lastCameraY = cameraY;
|
|
70
|
-
|
|
71
|
-
if (!debugMode || !this.#matterDebugRenderer) return;
|
|
72
|
-
|
|
73
|
-
const r = this.#matterDebugRenderer;
|
|
74
|
-
const pr = window.devicePixelRatio || 1;
|
|
75
|
-
|
|
76
|
-
r.options.width = width;
|
|
77
|
-
r.options.height = height;
|
|
78
|
-
|
|
79
|
-
r.canvas.width = Math.max(1, Math.floor(width * pr));
|
|
80
|
-
r.canvas.height = Math.max(1, Math.floor(height * pr));
|
|
81
|
-
|
|
82
|
-
const scale = Math.min(rect.width / width, rect.height / height);
|
|
83
|
-
|
|
84
|
-
const displayW = width * scale;
|
|
85
|
-
const displayH = height * scale;
|
|
86
|
-
|
|
87
|
-
const left = (rect.width - displayW) / 2;
|
|
88
|
-
const top = (rect.height - displayH) / 2;
|
|
89
|
-
|
|
90
|
-
r.canvas.style.width = `${displayW}px`;
|
|
91
|
-
r.canvas.style.height = `${displayH}px`;
|
|
92
|
-
r.canvas.style.left = `${left}px`;
|
|
93
|
-
r.canvas.style.top = `${top}px`;
|
|
94
|
-
|
|
95
|
-
this.setMatterDebugRendererCamera(cameraX, cameraY);
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
setMatterDebugRendererCamera(cameraX: number, cameraY: number) {
|
|
99
|
-
if (this.#matterDebugRenderer) {
|
|
100
|
-
const r = this.#matterDebugRenderer;
|
|
101
|
-
const halfW = this.#lastWidth / 2;
|
|
102
|
-
const halfH = this.#lastHeight / 2;
|
|
103
|
-
|
|
104
|
-
r.bounds.min.x = cameraX - halfW;
|
|
105
|
-
r.bounds.min.y = cameraY - halfH;
|
|
106
|
-
r.bounds.max.x = cameraX + halfW;
|
|
107
|
-
r.bounds.max.y = cameraY + halfH;
|
|
108
|
-
|
|
109
|
-
Matter.Render.lookAt(r, r.bounds);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
destroy() { }
|
|
114
|
-
}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { EventEmitter } from '@webtaku/event-emitter';
|
|
2
|
-
import Matter from 'matter-js';
|
|
3
|
-
import { GameObject } from '../game-object/game-object';
|
|
4
|
-
|
|
5
|
-
export class WorldPhysics extends EventEmitter<{
|
|
6
|
-
engineCreated: (engine: Matter.Engine) => void;
|
|
7
|
-
collisionStart: (a: GameObject, b: GameObject) => void;
|
|
8
|
-
}> {
|
|
9
|
-
#engine?: Matter.Engine;
|
|
10
|
-
#gravity = 0;
|
|
11
|
-
|
|
12
|
-
get gravity() { return this.#gravity; }
|
|
13
|
-
set gravity(v: number) {
|
|
14
|
-
this.#gravity = v;
|
|
15
|
-
if (this.#engine) this.#engine.gravity.y = v;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
#createEngine() {
|
|
19
|
-
this.#engine = Matter.Engine.create();
|
|
20
|
-
this.#engine.gravity.y = this.#gravity;
|
|
21
|
-
|
|
22
|
-
Matter.Events.on(this.#engine, 'collisionStart', (event) => {
|
|
23
|
-
event.pairs.forEach((pair) => {
|
|
24
|
-
const { bodyA, bodyB } = pair;
|
|
25
|
-
this.emit('collisionStart', bodyA.plugin.owner, bodyB.plugin.owner);
|
|
26
|
-
});
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
this.emit('engineCreated', this.#engine);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
addBody(body: Matter.Body) {
|
|
33
|
-
if (!this.#engine) this.#createEngine();
|
|
34
|
-
Matter.World.add(this.#engine!.world, body);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
removeBody(body: Matter.Body) {
|
|
38
|
-
if (!this.#engine) return;
|
|
39
|
-
Matter.World.remove(this.#engine!.world, body);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
update(dt: number) {
|
|
43
|
-
if (!this.#engine) return;
|
|
44
|
-
const matterDt = dt * 1000;
|
|
45
|
-
Matter.Engine.update(this.#engine, matterDt > 16.666 ? 16.666 : matterDt);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
destroy() {
|
|
49
|
-
if (this.#engine) Matter.Engine.clear(this.#engine);
|
|
50
|
-
this.#engine = undefined;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
import { autoDetectRenderer, Container, EventEmitter, Renderer, Sprite } from "pixi.js";
|
|
2
|
-
import { textureLoader } from '../asset/loaders/texture';
|
|
3
|
-
|
|
4
|
-
export class WorldRendering extends EventEmitter<{
|
|
5
|
-
positionChanged: () => void;
|
|
6
|
-
}> {
|
|
7
|
-
#renderer?: Renderer;
|
|
8
|
-
#root = new Container();
|
|
9
|
-
#backgroundAlpha = 1;
|
|
10
|
-
|
|
11
|
-
#cameraX = 0;
|
|
12
|
-
#cameraY = 0;
|
|
13
|
-
|
|
14
|
-
centerX = 0;
|
|
15
|
-
centerY = 0;
|
|
16
|
-
renderWidth = 0;
|
|
17
|
-
renderHeight = 0;
|
|
18
|
-
renderScale = 1;
|
|
19
|
-
canvasLeft = 0;
|
|
20
|
-
canvasTop = 0;
|
|
21
|
-
|
|
22
|
-
#backgroundColor = 0x304C79;
|
|
23
|
-
get backgroundColor() { return this.#backgroundColor; }
|
|
24
|
-
set backgroundColor(v: number) {
|
|
25
|
-
this.#backgroundColor = v;
|
|
26
|
-
if (this.#renderer) this.#renderer.background.color = v;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
get backgroundAlpha() { return this.#backgroundAlpha; }
|
|
30
|
-
set backgroundAlpha(v: number) {
|
|
31
|
-
this.#backgroundAlpha = v;
|
|
32
|
-
if (this.#renderer) this.#renderer.background.alpha = v;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
async init(container: HTMLElement, width: number | undefined, height: number | undefined) {
|
|
36
|
-
const renderer = await autoDetectRenderer({
|
|
37
|
-
width,
|
|
38
|
-
height,
|
|
39
|
-
backgroundColor: this.#backgroundColor,
|
|
40
|
-
backgroundAlpha: this.#backgroundAlpha,
|
|
41
|
-
eventMode: 'none',
|
|
42
|
-
resolution: window.devicePixelRatio,
|
|
43
|
-
});
|
|
44
|
-
this.#renderer = renderer;
|
|
45
|
-
|
|
46
|
-
const canvas = renderer.canvas;
|
|
47
|
-
canvas.style.position = 'absolute';
|
|
48
|
-
canvas.style.touchAction = 'auto';
|
|
49
|
-
canvas.style.borderRadius = container.style.borderRadius;
|
|
50
|
-
container.appendChild(canvas);
|
|
51
|
-
|
|
52
|
-
if (this.#lastRect) this.setRendererSize(this.#lastRect, this.#lastWidth, this.#lastHeight);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
#applyPosition() {
|
|
56
|
-
this.#root.x = this.centerX - this.#cameraX;
|
|
57
|
-
this.#root.y = this.centerY - this.#cameraY;
|
|
58
|
-
|
|
59
|
-
if (this.#backgroundSprite) {
|
|
60
|
-
this.#backgroundSprite.x = this.#cameraX;
|
|
61
|
-
this.#backgroundSprite.y = this.#cameraY;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
this.emit('positionChanged');
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
#lastRect?: DOMRect;
|
|
68
|
-
#lastWidth = 0;
|
|
69
|
-
#lastHeight = 0;
|
|
70
|
-
|
|
71
|
-
setRendererSize(rect: DOMRect, width: number, height: number) {
|
|
72
|
-
this.#lastRect = rect;
|
|
73
|
-
this.#lastWidth = width;
|
|
74
|
-
this.#lastHeight = height;
|
|
75
|
-
|
|
76
|
-
this.centerX = width / 2;
|
|
77
|
-
this.centerY = height / 2;
|
|
78
|
-
this.#applyPosition();
|
|
79
|
-
|
|
80
|
-
this.renderWidth = width;
|
|
81
|
-
this.renderHeight = height;
|
|
82
|
-
|
|
83
|
-
const scale = Math.min(rect.width / width, rect.height / height);
|
|
84
|
-
this.renderScale = scale;
|
|
85
|
-
|
|
86
|
-
const displayW = width * scale;
|
|
87
|
-
const displayH = height * scale;
|
|
88
|
-
|
|
89
|
-
const left = (rect.width - displayW) / 2;
|
|
90
|
-
const top = (rect.height - displayH) / 2;
|
|
91
|
-
this.canvasLeft = left;
|
|
92
|
-
this.canvasTop = top;
|
|
93
|
-
|
|
94
|
-
if (!this.#renderer) return;
|
|
95
|
-
this.#renderer.resize(width, height);
|
|
96
|
-
|
|
97
|
-
const canvas = this.#renderer.canvas;
|
|
98
|
-
canvas.style.width = `${displayW}px`;
|
|
99
|
-
canvas.style.height = `${displayH}px`;
|
|
100
|
-
canvas.style.left = `${left}px`;
|
|
101
|
-
canvas.style.top = `${top}px`;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
update() {
|
|
105
|
-
this.#renderer?.render(this.#root);
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
get cameraX() { return this.#cameraX; }
|
|
109
|
-
set cameraX(value: number) { this.#cameraX = value; this.#applyPosition(); }
|
|
110
|
-
get cameraY() { return this.#cameraY; }
|
|
111
|
-
set cameraY(value: number) { this.#cameraY = value; this.#applyPosition(); }
|
|
112
|
-
|
|
113
|
-
addPixiChildToRoot(child: Container) {
|
|
114
|
-
this.#root.addChild(child);
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
destroy() {
|
|
118
|
-
this.#renderer?.destroy();
|
|
119
|
-
this.#renderer = undefined;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
#backgroundSprite?: Sprite;
|
|
123
|
-
setBackgroundImage(image: string | undefined) {
|
|
124
|
-
if (image) {
|
|
125
|
-
if (!textureLoader.checkLoaded(image)) {
|
|
126
|
-
console.info(`Background image not preloaded. Loading now: ${image}`);
|
|
127
|
-
}
|
|
128
|
-
textureLoader.load(image).then((texture) => {
|
|
129
|
-
if (texture) {
|
|
130
|
-
this.#backgroundSprite?.destroy();
|
|
131
|
-
this.#backgroundSprite = new Sprite({
|
|
132
|
-
x: this.#cameraX,
|
|
133
|
-
y: this.#cameraY,
|
|
134
|
-
texture,
|
|
135
|
-
anchor: { x: 0.5, y: 0.5 },
|
|
136
|
-
width: this.renderWidth,
|
|
137
|
-
height: this.renderHeight,
|
|
138
|
-
zIndex: -999999,
|
|
139
|
-
});
|
|
140
|
-
this.#root.addChild(this.#backgroundSprite);
|
|
141
|
-
}
|
|
142
|
-
});
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
}
|
package/src/world/world.ts
DELETED
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
import { GameObject, GameObjectOptions } from '../game-object/game-object';
|
|
2
|
-
import { WorldTransform } from '../game-object/transform';
|
|
3
|
-
import { debugMode } from '../utils/debug';
|
|
4
|
-
import { WorldDebug } from './world-debug';
|
|
5
|
-
import { WorldPhysics } from "./world-physics";
|
|
6
|
-
import { WorldRendering } from "./world-rendering";
|
|
7
|
-
|
|
8
|
-
export type WorldOptions = {
|
|
9
|
-
width?: number;
|
|
10
|
-
height?: number;
|
|
11
|
-
backgroundColor?: number;
|
|
12
|
-
backgroundAlpha?: number;
|
|
13
|
-
gravity?: number;
|
|
14
|
-
} & GameObjectOptions;
|
|
15
|
-
|
|
16
|
-
export class World extends GameObject<{
|
|
17
|
-
resize: (width: number, height: number) => void;
|
|
18
|
-
collisionStart: (a: GameObject, b: GameObject) => void;
|
|
19
|
-
}> {
|
|
20
|
-
container = document.createElement('div');
|
|
21
|
-
#containerResizeObserver: ResizeObserver;
|
|
22
|
-
|
|
23
|
-
_worldRendering = new WorldRendering();
|
|
24
|
-
_worldPhysics = new WorldPhysics();
|
|
25
|
-
#worldDebug = new WorldDebug(this.container);
|
|
26
|
-
|
|
27
|
-
#width?: number;
|
|
28
|
-
#height?: number;
|
|
29
|
-
|
|
30
|
-
#hasEverBeenConnected = false;
|
|
31
|
-
#destroyed = false;
|
|
32
|
-
|
|
33
|
-
#pt = new WorldTransform();
|
|
34
|
-
#update(dt: number) {
|
|
35
|
-
if (this.container.isConnected) {
|
|
36
|
-
if (!this.#hasEverBeenConnected) {
|
|
37
|
-
this.#hasEverBeenConnected = true;
|
|
38
|
-
this.#applySize();
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
this._worldPhysics.update(dt);
|
|
42
|
-
this._engineUpdate(dt, this.#pt);
|
|
43
|
-
this._worldRendering.update();
|
|
44
|
-
this.#worldDebug.update();
|
|
45
|
-
|
|
46
|
-
this._containerSizeDirty = false;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
else if (this.#hasEverBeenConnected) {
|
|
50
|
-
this.#destroy();
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
#lastContainerW = 0;
|
|
56
|
-
#lastContainerH = 0;
|
|
57
|
-
_containerSizeDirty = false;
|
|
58
|
-
|
|
59
|
-
#applySize() {
|
|
60
|
-
const rect = this.container.getBoundingClientRect();
|
|
61
|
-
|
|
62
|
-
if (rect.width === this.#lastContainerW && rect.height === this.#lastContainerH) return;
|
|
63
|
-
this.#lastContainerW = rect.width;
|
|
64
|
-
this.#lastContainerH = rect.height;
|
|
65
|
-
this._containerSizeDirty = true;
|
|
66
|
-
|
|
67
|
-
if (rect.width === 0 || rect.height === 0) return;
|
|
68
|
-
|
|
69
|
-
const canvasWidth = this.#width ?? rect.width;
|
|
70
|
-
const canvasHeight = this.#height ?? rect.height;
|
|
71
|
-
|
|
72
|
-
this._worldRendering.setRendererSize(rect, canvasWidth, canvasHeight);
|
|
73
|
-
this.#worldDebug.setMatterDebugRendererSize(rect, canvasWidth, canvasHeight, this.cameraX, this.cameraY);
|
|
74
|
-
|
|
75
|
-
this.emit('resize', this.width, this.height);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
#destroy() {
|
|
79
|
-
this.#containerResizeObserver.disconnect();
|
|
80
|
-
this._worldRendering.destroy();
|
|
81
|
-
this._worldPhysics.destroy();
|
|
82
|
-
this.#worldDebug.destroy();
|
|
83
|
-
|
|
84
|
-
this.#destroyed = true;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
async #init() {
|
|
88
|
-
await this._worldRendering.init(this.container, this.#width, this.#height);
|
|
89
|
-
this.#applySize();
|
|
90
|
-
|
|
91
|
-
let prevTime = 0;
|
|
92
|
-
let lagSeconds = 0;
|
|
93
|
-
let fpsCap: number | undefined;
|
|
94
|
-
|
|
95
|
-
const step = (timestamp: number) => {
|
|
96
|
-
if (this.#destroyed) return;
|
|
97
|
-
|
|
98
|
-
const dt = (timestamp - prevTime) / 1000;
|
|
99
|
-
if (dt > 0) {
|
|
100
|
-
if (fpsCap !== undefined && fpsCap > 0) {
|
|
101
|
-
lagSeconds += dt;
|
|
102
|
-
const fixedStep = 1 / fpsCap;
|
|
103
|
-
if (lagSeconds >= fixedStep) {
|
|
104
|
-
this.#update(fixedStep);
|
|
105
|
-
if (lagSeconds >= fixedStep * 2) { this.#update(dt); lagSeconds = 0; }
|
|
106
|
-
else { lagSeconds -= fixedStep; }
|
|
107
|
-
}
|
|
108
|
-
} else {
|
|
109
|
-
this.#update(dt);
|
|
110
|
-
}
|
|
111
|
-
prevTime = timestamp;
|
|
112
|
-
}
|
|
113
|
-
requestAnimationFrame(step);
|
|
114
|
-
};
|
|
115
|
-
requestAnimationFrame(step);
|
|
116
|
-
|
|
117
|
-
if (debugMode) {
|
|
118
|
-
if (!document.hasFocus()) fpsCap = 6;
|
|
119
|
-
window.addEventListener('blur', () => fpsCap = 6);
|
|
120
|
-
window.addEventListener('focus', () => fpsCap = undefined);
|
|
121
|
-
window.addEventListener('pageshow', (event) => { if (event.persisted) fpsCap = undefined; });
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
constructor(opts?: WorldOptions) {
|
|
126
|
-
super(opts);
|
|
127
|
-
this._setWorld(this);
|
|
128
|
-
this._worldRendering.addPixiChildToRoot(this._rendering._container);
|
|
129
|
-
|
|
130
|
-
this.#containerResizeObserver = new ResizeObserver(this.#applySize.bind(this));
|
|
131
|
-
this.#containerResizeObserver.observe(this.container);
|
|
132
|
-
|
|
133
|
-
this._worldRendering.on('positionChanged', () => this.#worldDebug.setMatterDebugRendererCamera(this.cameraX, this.cameraY));
|
|
134
|
-
this._worldPhysics.on('engineCreated', (engine) => this.#worldDebug.createMatterDebugRenderer(engine, this.width, this.height));
|
|
135
|
-
this._worldPhysics.on('collisionStart', (a, b) => this.emit('collisionStart', a, b));
|
|
136
|
-
``
|
|
137
|
-
if (opts) {
|
|
138
|
-
if (opts.width !== undefined) this.#width = opts.width;
|
|
139
|
-
if (opts.height !== undefined) this.#height = opts.height;
|
|
140
|
-
if (opts.backgroundColor !== undefined) this.backgroundColor = opts.backgroundColor;
|
|
141
|
-
if (opts.backgroundAlpha !== undefined) this.backgroundAlpha = opts.backgroundAlpha;
|
|
142
|
-
if (opts.gravity !== undefined) this.gravity = opts.gravity;
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
this.#init();
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
get width() { return this.#width ?? this._worldRendering.renderWidth; }
|
|
149
|
-
set width(v: number) { this.#width = v; this.#applySize(); }
|
|
150
|
-
get height() { return this.#height ?? this._worldRendering.renderHeight; }
|
|
151
|
-
set height(v: number) { this.#height = v; this.#applySize(); }
|
|
152
|
-
|
|
153
|
-
get backgroundColor() { return this._worldRendering.backgroundColor; }
|
|
154
|
-
set backgroundColor(v: number) { this._worldRendering.backgroundColor = v; }
|
|
155
|
-
get backgroundAlpha() { return this._worldRendering.backgroundAlpha; }
|
|
156
|
-
set backgroundAlpha(v: number) { this._worldRendering.backgroundAlpha = v; }
|
|
157
|
-
get gravity() { return this._worldPhysics.gravity; }
|
|
158
|
-
set gravity(v: number) { this._worldPhysics.gravity = v; }
|
|
159
|
-
|
|
160
|
-
get cameraX() { return this._worldRendering.cameraX; }
|
|
161
|
-
set cameraX(v: number) { this._worldRendering.cameraX = v; }
|
|
162
|
-
get cameraY() { return this._worldRendering.cameraY; }
|
|
163
|
-
set cameraY(v: number) { this._worldRendering.cameraY = v; }
|
|
164
|
-
|
|
165
|
-
#backgroundImage?: string;
|
|
166
|
-
get backgroundImage() { return this.#backgroundImage; }
|
|
167
|
-
set backgroundImage(image: string | undefined) {
|
|
168
|
-
this.#backgroundImage = image;
|
|
169
|
-
this._worldRendering.setBackgroundImage(image);
|
|
170
|
-
}
|
|
171
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|