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/lib/utils/go.js
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { AnimatedSpriteObject } from '../game-object-ext/animated-sprite';
|
|
2
|
-
import { DomContainerObject } from '../game-object-ext/dom-container';
|
|
3
|
-
import { RectangleObject } from '../game-object-ext/rect';
|
|
4
|
-
import { SpineObject } from '../game-object-ext/spine';
|
|
5
|
-
import { SpriteObject } from '../game-object-ext/sprite';
|
|
6
|
-
import { TextObject } from '../game-object-ext/text';
|
|
7
|
-
import { TilingSpriteObject } from '../game-object-ext/tiling-sprite';
|
|
8
|
-
import { GameObject } from '../game-object/game-object';
|
|
9
|
-
const GameObjectClassMap = {
|
|
10
|
-
'go': GameObject,
|
|
11
|
-
'sprite': SpriteObject,
|
|
12
|
-
'animated-sprite': AnimatedSpriteObject,
|
|
13
|
-
'tiling-sprite': TilingSpriteObject,
|
|
14
|
-
'spine': SpineObject,
|
|
15
|
-
'dom': DomContainerObject,
|
|
16
|
-
'text': TextObject,
|
|
17
|
-
'rect': RectangleObject,
|
|
18
|
-
};
|
|
19
|
-
function go(name = '', ...args) {
|
|
20
|
-
const go = new GameObjectClassMap[(name || 'go')]();
|
|
21
|
-
for (const arg of args) {
|
|
22
|
-
if (arg instanceof GameObject)
|
|
23
|
-
go.add(arg);
|
|
24
|
-
else if (arg) {
|
|
25
|
-
for (const key in arg) {
|
|
26
|
-
go[key] = arg[key];
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
return go;
|
|
31
|
-
}
|
|
32
|
-
export { go };
|
|
33
|
-
//# sourceMappingURL=go.js.map
|
package/lib/utils/go.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"go.js","sourceRoot":"","sources":["../../src/utils/go.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD,MAAM,kBAAkB,GAAG;IACzB,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE,YAAY;IACtB,iBAAiB,EAAE,oBAAoB;IACvC,eAAe,EAAE,kBAAkB;IACnC,OAAO,EAAE,WAAW;IACpB,KAAK,EAAE,kBAAkB;IACzB,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,eAAe;CACf,CAAC;AAgBX,SAAS,EAAE,CACT,OAAU,EAAO,EACjB,GAAG,IAA4D;IAE/D,MAAM,EAAE,GAAG,IAAI,kBAAkB,CAAC,CAAC,IAAI,IAAI,IAAI,CAA4B,CAAC,EAAE,CAAC;IAE/E,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,YAAY,UAAU;YAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;aACtC,IAAI,GAAG,EAAE,CAAC;YACb,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;gBACrB,EAAU,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAyB,CAAC;AACnC,CAAC;AAED,OAAO,EAAE,EAAE,EAAE,CAAC","sourcesContent":["import { AnimatedSpriteObject } from '../game-object-ext/animated-sprite';\nimport { DomContainerObject } from '../game-object-ext/dom-container';\nimport { RectangleObject } from '../game-object-ext/rect';\nimport { SpineObject } from '../game-object-ext/spine';\nimport { SpriteObject } from '../game-object-ext/sprite';\nimport { TextObject } from '../game-object-ext/text';\nimport { TilingSpriteObject } from '../game-object-ext/tiling-sprite';\nimport { GameObject } from '../game-object/game-object';\n\nconst GameObjectClassMap = {\n 'go': GameObject,\n 'sprite': SpriteObject,\n 'animated-sprite': AnimatedSpriteObject,\n 'tiling-sprite': TilingSpriteObject,\n 'spine': SpineObject,\n 'dom': DomContainerObject,\n 'text': TextObject,\n 'rect': RectangleObject,\n} as const;\n\ntype GameObjectNameMap = {\n [K in keyof typeof GameObjectClassMap]: InstanceType<(typeof GameObjectClassMap)[K]>;\n};\n\ntype Name = '' | keyof GameObjectNameMap;\n\ntype GameObjectByName<T extends Name> = (\n T extends '' ? GameObject\n : (\n T extends keyof GameObjectNameMap ? GameObjectNameMap[T]\n : GameObject\n )\n);\n\nfunction go<T extends Name>(\n name: T = '' as T,\n ...args: (GameObjectByName<T> | Partial<GameObjectByName<T>>)[]\n): GameObjectByName<T> {\n const go = new GameObjectClassMap[(name || 'go') as keyof GameObjectNameMap]();\n\n for (const arg of args) {\n if (arg instanceof GameObject) go.add(arg);\n else if (arg) {\n for (const key in arg) {\n (go as any)[key] = arg[key];\n }\n }\n }\n\n return go as GameObjectByName<T>;\n}\n\nexport { go };\n"]}
|
package/lib/world/world-debug.js
DELETED
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
import Matter from 'matter-js';
|
|
2
|
-
import Stats from 'stats.js';
|
|
3
|
-
import { debugMode } from '../utils/debug';
|
|
4
|
-
export class WorldDebug {
|
|
5
|
-
#container;
|
|
6
|
-
#stats;
|
|
7
|
-
#matterDebugRenderer;
|
|
8
|
-
constructor(container) {
|
|
9
|
-
this.#container = container;
|
|
10
|
-
if (debugMode) {
|
|
11
|
-
const stats = new Stats();
|
|
12
|
-
stats.dom.style.position = 'absolute';
|
|
13
|
-
stats.showPanel(0);
|
|
14
|
-
container.appendChild(stats.dom);
|
|
15
|
-
this.#stats = stats;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
update() {
|
|
19
|
-
this.#stats?.update();
|
|
20
|
-
}
|
|
21
|
-
createMatterDebugRenderer(engine, width, height) {
|
|
22
|
-
if (debugMode) {
|
|
23
|
-
const matterDebugRenderer = Matter.Render.create({
|
|
24
|
-
element: this.#container,
|
|
25
|
-
engine,
|
|
26
|
-
options: {
|
|
27
|
-
width,
|
|
28
|
-
height,
|
|
29
|
-
background: 'transparent',
|
|
30
|
-
wireframes: false,
|
|
31
|
-
showCollisions: true,
|
|
32
|
-
pixelRatio: window.devicePixelRatio,
|
|
33
|
-
},
|
|
34
|
-
});
|
|
35
|
-
this.#matterDebugRenderer = matterDebugRenderer;
|
|
36
|
-
const debugCanvas = matterDebugRenderer.canvas;
|
|
37
|
-
debugCanvas.style.position = 'absolute';
|
|
38
|
-
debugCanvas.style.zIndex = '1';
|
|
39
|
-
debugCanvas.style.touchAction = 'auto';
|
|
40
|
-
Matter.Render.run(matterDebugRenderer);
|
|
41
|
-
if (this.#lastRect)
|
|
42
|
-
this.setMatterDebugRendererSize(this.#lastRect, this.#lastWidth, this.#lastHeight, this.#lastCameraX, this.#lastCameraY);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
#lastRect;
|
|
46
|
-
#lastWidth = 0;
|
|
47
|
-
#lastHeight = 0;
|
|
48
|
-
#lastCameraX = 0;
|
|
49
|
-
#lastCameraY = 0;
|
|
50
|
-
setMatterDebugRendererSize(rect, width, height, cameraX, cameraY) {
|
|
51
|
-
this.#lastRect = rect;
|
|
52
|
-
this.#lastWidth = width;
|
|
53
|
-
this.#lastHeight = height;
|
|
54
|
-
this.#lastCameraX = cameraX;
|
|
55
|
-
this.#lastCameraY = cameraY;
|
|
56
|
-
if (!debugMode || !this.#matterDebugRenderer)
|
|
57
|
-
return;
|
|
58
|
-
const r = this.#matterDebugRenderer;
|
|
59
|
-
const pr = window.devicePixelRatio || 1;
|
|
60
|
-
r.options.width = width;
|
|
61
|
-
r.options.height = height;
|
|
62
|
-
r.canvas.width = Math.max(1, Math.floor(width * pr));
|
|
63
|
-
r.canvas.height = Math.max(1, Math.floor(height * pr));
|
|
64
|
-
const scale = Math.min(rect.width / width, rect.height / height);
|
|
65
|
-
const displayW = width * scale;
|
|
66
|
-
const displayH = height * scale;
|
|
67
|
-
const left = (rect.width - displayW) / 2;
|
|
68
|
-
const top = (rect.height - displayH) / 2;
|
|
69
|
-
r.canvas.style.width = `${displayW}px`;
|
|
70
|
-
r.canvas.style.height = `${displayH}px`;
|
|
71
|
-
r.canvas.style.left = `${left}px`;
|
|
72
|
-
r.canvas.style.top = `${top}px`;
|
|
73
|
-
this.setMatterDebugRendererCamera(cameraX, cameraY);
|
|
74
|
-
}
|
|
75
|
-
setMatterDebugRendererCamera(cameraX, cameraY) {
|
|
76
|
-
if (this.#matterDebugRenderer) {
|
|
77
|
-
const r = this.#matterDebugRenderer;
|
|
78
|
-
const halfW = this.#lastWidth / 2;
|
|
79
|
-
const halfH = this.#lastHeight / 2;
|
|
80
|
-
r.bounds.min.x = cameraX - halfW;
|
|
81
|
-
r.bounds.min.y = cameraY - halfH;
|
|
82
|
-
r.bounds.max.x = cameraX + halfW;
|
|
83
|
-
r.bounds.max.y = cameraY + halfH;
|
|
84
|
-
Matter.Render.lookAt(r, r.bounds);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
destroy() { }
|
|
88
|
-
}
|
|
89
|
-
//# sourceMappingURL=world-debug.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"world-debug.js","sourceRoot":"","sources":["../../src/world/world-debug.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,OAAO,KAAK,MAAM,UAAU,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,OAAO,UAAU;IACrB,UAAU,CAAc;IACxB,MAAM,CAAS;IACf,oBAAoB,CAAiB;IAErC,YAAY,SAAsB;QAChC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAE5B,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;YAC1B,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;YACtC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACnB,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACtB,CAAC;IACH,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IACxB,CAAC;IAED,yBAAyB,CAAC,MAAqB,EAAE,KAAa,EAAE,MAAc;QAC5E,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;gBAC/C,OAAO,EAAE,IAAI,CAAC,UAAU;gBACxB,MAAM;gBACN,OAAO,EAAE;oBACP,KAAK;oBACL,MAAM;oBACN,UAAU,EAAE,aAAa;oBACzB,UAAU,EAAE,KAAK;oBACjB,cAAc,EAAE,IAAI;oBACpB,UAAU,EAAE,MAAM,CAAC,gBAAgB;iBACpC;aACF,CAAC,CAAC;YACH,IAAI,CAAC,oBAAoB,GAAG,mBAAmB,CAAC;YAEhD,MAAM,WAAW,GAAG,mBAAmB,CAAC,MAAM,CAAC;YAC/C,WAAW,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;YACxC,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;YAC/B,WAAW,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;YAEvC,IAAI,IAAI,CAAC,SAAS;gBAAE,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC/I,CAAC;IACH,CAAC;IAED,SAAS,CAAmB;IAC5B,UAAU,GAAG,CAAC,CAAC;IACf,WAAW,GAAG,CAAC,CAAC;IAChB,YAAY,GAAG,CAAC,CAAC;IACjB,YAAY,GAAG,CAAC,CAAC;IAEjB,0BAA0B,CACxB,IAAqB,EACrB,KAAa,EACb,MAAc,EACd,OAAe,EACf,OAAe;QAEf,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;QAC1B,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;QAC5B,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;QAE5B,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,oBAAoB;YAAE,OAAO;QAErD,MAAM,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC;QACpC,MAAM,EAAE,GAAG,MAAM,CAAC,gBAAgB,IAAI,CAAC,CAAC;QAExC,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;QACxB,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;QAE1B,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC;QACrD,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC;QAEvD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;QAEjE,MAAM,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAC;QAC/B,MAAM,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;QAEhC,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAEzC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,QAAQ,IAAI,CAAC;QACvC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,QAAQ,IAAI,CAAC;QACxC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,IAAI,IAAI,CAAC;QAClC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;QAEhC,IAAI,CAAC,4BAA4B,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAED,4BAA4B,CAAC,OAAe,EAAE,OAAe;QAC3D,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC;YACpC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;YAClC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;YAEnC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,GAAG,KAAK,CAAC;YACjC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,GAAG,KAAK,CAAC;YACjC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,GAAG,KAAK,CAAC;YACjC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,GAAG,KAAK,CAAC;YAEjC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;CACd","sourcesContent":["import Matter from 'matter-js';\nimport Stats from 'stats.js';\nimport { debugMode } from '../utils/debug';\n\nexport class WorldDebug {\n #container: HTMLElement;\n #stats?: Stats;\n #matterDebugRenderer?: Matter.Render;\n\n constructor(container: HTMLElement) {\n this.#container = container;\n\n if (debugMode) {\n const stats = new Stats();\n stats.dom.style.position = 'absolute';\n stats.showPanel(0);\n container.appendChild(stats.dom);\n this.#stats = stats;\n }\n }\n\n update() {\n this.#stats?.update();\n }\n\n createMatterDebugRenderer(engine: Matter.Engine, width: number, height: number) {\n if (debugMode) {\n const matterDebugRenderer = Matter.Render.create({\n element: this.#container,\n engine,\n options: {\n width,\n height,\n background: 'transparent',\n wireframes: false,\n showCollisions: true,\n pixelRatio: window.devicePixelRatio,\n },\n });\n this.#matterDebugRenderer = matterDebugRenderer;\n\n const debugCanvas = matterDebugRenderer.canvas;\n debugCanvas.style.position = 'absolute';\n debugCanvas.style.zIndex = '1';\n debugCanvas.style.touchAction = 'auto';\n Matter.Render.run(matterDebugRenderer);\n\n if (this.#lastRect) this.setMatterDebugRendererSize(this.#lastRect, this.#lastWidth, this.#lastHeight, this.#lastCameraX, this.#lastCameraY);\n }\n }\n\n #lastRect?: DOMRectReadOnly;\n #lastWidth = 0;\n #lastHeight = 0;\n #lastCameraX = 0;\n #lastCameraY = 0;\n\n setMatterDebugRendererSize(\n rect: DOMRectReadOnly,\n width: number,\n height: number,\n cameraX: number,\n cameraY: number,\n ) {\n this.#lastRect = rect;\n this.#lastWidth = width;\n this.#lastHeight = height;\n this.#lastCameraX = cameraX;\n this.#lastCameraY = cameraY;\n\n if (!debugMode || !this.#matterDebugRenderer) return;\n\n const r = this.#matterDebugRenderer;\n const pr = window.devicePixelRatio || 1;\n\n r.options.width = width;\n r.options.height = height;\n\n r.canvas.width = Math.max(1, Math.floor(width * pr));\n r.canvas.height = Math.max(1, Math.floor(height * pr));\n\n const scale = Math.min(rect.width / width, rect.height / height);\n\n const displayW = width * scale;\n const displayH = height * scale;\n\n const left = (rect.width - displayW) / 2;\n const top = (rect.height - displayH) / 2;\n\n r.canvas.style.width = `${displayW}px`;\n r.canvas.style.height = `${displayH}px`;\n r.canvas.style.left = `${left}px`;\n r.canvas.style.top = `${top}px`;\n\n this.setMatterDebugRendererCamera(cameraX, cameraY);\n }\n\n setMatterDebugRendererCamera(cameraX: number, cameraY: number) {\n if (this.#matterDebugRenderer) {\n const r = this.#matterDebugRenderer;\n const halfW = this.#lastWidth / 2;\n const halfH = this.#lastHeight / 2;\n\n r.bounds.min.x = cameraX - halfW;\n r.bounds.min.y = cameraY - halfH;\n r.bounds.max.x = cameraX + halfW;\n r.bounds.max.y = cameraY + halfH;\n\n Matter.Render.lookAt(r, r.bounds);\n }\n }\n\n destroy() { }\n}\n"]}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { EventEmitter } from '@webtaku/event-emitter';
|
|
2
|
-
import Matter from 'matter-js';
|
|
3
|
-
export class WorldPhysics extends EventEmitter {
|
|
4
|
-
#engine;
|
|
5
|
-
#gravity = 0;
|
|
6
|
-
get gravity() { return this.#gravity; }
|
|
7
|
-
set gravity(v) {
|
|
8
|
-
this.#gravity = v;
|
|
9
|
-
if (this.#engine)
|
|
10
|
-
this.#engine.gravity.y = v;
|
|
11
|
-
}
|
|
12
|
-
#createEngine() {
|
|
13
|
-
this.#engine = Matter.Engine.create();
|
|
14
|
-
this.#engine.gravity.y = this.#gravity;
|
|
15
|
-
Matter.Events.on(this.#engine, 'collisionStart', (event) => {
|
|
16
|
-
event.pairs.forEach((pair) => {
|
|
17
|
-
const { bodyA, bodyB } = pair;
|
|
18
|
-
this.emit('collisionStart', bodyA.plugin.owner, bodyB.plugin.owner);
|
|
19
|
-
});
|
|
20
|
-
});
|
|
21
|
-
this.emit('engineCreated', this.#engine);
|
|
22
|
-
}
|
|
23
|
-
addBody(body) {
|
|
24
|
-
if (!this.#engine)
|
|
25
|
-
this.#createEngine();
|
|
26
|
-
Matter.World.add(this.#engine.world, body);
|
|
27
|
-
}
|
|
28
|
-
removeBody(body) {
|
|
29
|
-
if (!this.#engine)
|
|
30
|
-
return;
|
|
31
|
-
Matter.World.remove(this.#engine.world, body);
|
|
32
|
-
}
|
|
33
|
-
update(dt) {
|
|
34
|
-
if (!this.#engine)
|
|
35
|
-
return;
|
|
36
|
-
const matterDt = dt * 1000;
|
|
37
|
-
Matter.Engine.update(this.#engine, matterDt > 16.666 ? 16.666 : matterDt);
|
|
38
|
-
}
|
|
39
|
-
destroy() {
|
|
40
|
-
if (this.#engine)
|
|
41
|
-
Matter.Engine.clear(this.#engine);
|
|
42
|
-
this.#engine = undefined;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=world-physics.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"world-physics.js","sourceRoot":"","sources":["../../src/world/world-physics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,MAAM,MAAM,WAAW,CAAC;AAG/B,MAAM,OAAO,YAAa,SAAQ,YAGhC;IACA,OAAO,CAAiB;IACxB,QAAQ,GAAG,CAAC,CAAC;IAEb,IAAI,OAAO,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvC,IAAI,OAAO,CAAC,CAAS;QACnB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,IAAI,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;IAC/C,CAAC;IAED,aAAa;QACX,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACtC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QAEvC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,EAAE,CAAC,KAAK,EAAE,EAAE;YACzD,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC3B,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;gBAC9B,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACtE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,CAAC,IAAiB;QACvB,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,aAAa,EAAE,CAAC;QACxC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,UAAU,CAAC,IAAiB;QAC1B,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,CAAC,EAAU;QACf,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,MAAM,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC;QAC3B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,OAAO;YAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;IAC3B,CAAC;CACF","sourcesContent":["import { EventEmitter } from '@webtaku/event-emitter';\nimport Matter from 'matter-js';\nimport { GameObject } from '../game-object/game-object';\n\nexport class WorldPhysics extends EventEmitter<{\n engineCreated: (engine: Matter.Engine) => void;\n collisionStart: (a: GameObject, b: GameObject) => void;\n}> {\n #engine?: Matter.Engine;\n #gravity = 0;\n\n get gravity() { return this.#gravity; }\n set gravity(v: number) {\n this.#gravity = v;\n if (this.#engine) this.#engine.gravity.y = v;\n }\n\n #createEngine() {\n this.#engine = Matter.Engine.create();\n this.#engine.gravity.y = this.#gravity;\n\n Matter.Events.on(this.#engine, 'collisionStart', (event) => {\n event.pairs.forEach((pair) => {\n const { bodyA, bodyB } = pair;\n this.emit('collisionStart', bodyA.plugin.owner, bodyB.plugin.owner);\n });\n });\n\n this.emit('engineCreated', this.#engine);\n }\n\n addBody(body: Matter.Body) {\n if (!this.#engine) this.#createEngine();\n Matter.World.add(this.#engine!.world, body);\n }\n\n removeBody(body: Matter.Body) {\n if (!this.#engine) return;\n Matter.World.remove(this.#engine!.world, body);\n }\n\n update(dt: number) {\n if (!this.#engine) return;\n const matterDt = dt * 1000;\n Matter.Engine.update(this.#engine, matterDt > 16.666 ? 16.666 : matterDt);\n }\n\n destroy() {\n if (this.#engine) Matter.Engine.clear(this.#engine);\n this.#engine = undefined;\n }\n}\n"]}
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
import { autoDetectRenderer, Container, EventEmitter, Sprite } from "pixi.js";
|
|
2
|
-
import { textureLoader } from '../asset/loaders/texture';
|
|
3
|
-
export class WorldRendering extends EventEmitter {
|
|
4
|
-
#renderer;
|
|
5
|
-
#root = new Container();
|
|
6
|
-
#backgroundAlpha = 1;
|
|
7
|
-
#cameraX = 0;
|
|
8
|
-
#cameraY = 0;
|
|
9
|
-
centerX = 0;
|
|
10
|
-
centerY = 0;
|
|
11
|
-
renderWidth = 0;
|
|
12
|
-
renderHeight = 0;
|
|
13
|
-
renderScale = 1;
|
|
14
|
-
canvasLeft = 0;
|
|
15
|
-
canvasTop = 0;
|
|
16
|
-
#backgroundColor = 0x304C79;
|
|
17
|
-
get backgroundColor() { return this.#backgroundColor; }
|
|
18
|
-
set backgroundColor(v) {
|
|
19
|
-
this.#backgroundColor = v;
|
|
20
|
-
if (this.#renderer)
|
|
21
|
-
this.#renderer.background.color = v;
|
|
22
|
-
}
|
|
23
|
-
get backgroundAlpha() { return this.#backgroundAlpha; }
|
|
24
|
-
set backgroundAlpha(v) {
|
|
25
|
-
this.#backgroundAlpha = v;
|
|
26
|
-
if (this.#renderer)
|
|
27
|
-
this.#renderer.background.alpha = v;
|
|
28
|
-
}
|
|
29
|
-
async init(container, width, height) {
|
|
30
|
-
const renderer = await autoDetectRenderer({
|
|
31
|
-
width,
|
|
32
|
-
height,
|
|
33
|
-
backgroundColor: this.#backgroundColor,
|
|
34
|
-
backgroundAlpha: this.#backgroundAlpha,
|
|
35
|
-
eventMode: 'none',
|
|
36
|
-
resolution: window.devicePixelRatio,
|
|
37
|
-
});
|
|
38
|
-
this.#renderer = renderer;
|
|
39
|
-
const canvas = renderer.canvas;
|
|
40
|
-
canvas.style.position = 'absolute';
|
|
41
|
-
canvas.style.touchAction = 'auto';
|
|
42
|
-
canvas.style.borderRadius = container.style.borderRadius;
|
|
43
|
-
container.appendChild(canvas);
|
|
44
|
-
if (this.#lastRect)
|
|
45
|
-
this.setRendererSize(this.#lastRect, this.#lastWidth, this.#lastHeight);
|
|
46
|
-
}
|
|
47
|
-
#applyPosition() {
|
|
48
|
-
this.#root.x = this.centerX - this.#cameraX;
|
|
49
|
-
this.#root.y = this.centerY - this.#cameraY;
|
|
50
|
-
if (this.#backgroundSprite) {
|
|
51
|
-
this.#backgroundSprite.x = this.#cameraX;
|
|
52
|
-
this.#backgroundSprite.y = this.#cameraY;
|
|
53
|
-
}
|
|
54
|
-
this.emit('positionChanged');
|
|
55
|
-
}
|
|
56
|
-
#lastRect;
|
|
57
|
-
#lastWidth = 0;
|
|
58
|
-
#lastHeight = 0;
|
|
59
|
-
setRendererSize(rect, width, height) {
|
|
60
|
-
this.#lastRect = rect;
|
|
61
|
-
this.#lastWidth = width;
|
|
62
|
-
this.#lastHeight = height;
|
|
63
|
-
this.centerX = width / 2;
|
|
64
|
-
this.centerY = height / 2;
|
|
65
|
-
this.#applyPosition();
|
|
66
|
-
this.renderWidth = width;
|
|
67
|
-
this.renderHeight = height;
|
|
68
|
-
const scale = Math.min(rect.width / width, rect.height / height);
|
|
69
|
-
this.renderScale = scale;
|
|
70
|
-
const displayW = width * scale;
|
|
71
|
-
const displayH = height * scale;
|
|
72
|
-
const left = (rect.width - displayW) / 2;
|
|
73
|
-
const top = (rect.height - displayH) / 2;
|
|
74
|
-
this.canvasLeft = left;
|
|
75
|
-
this.canvasTop = top;
|
|
76
|
-
if (!this.#renderer)
|
|
77
|
-
return;
|
|
78
|
-
this.#renderer.resize(width, height);
|
|
79
|
-
const canvas = this.#renderer.canvas;
|
|
80
|
-
canvas.style.width = `${displayW}px`;
|
|
81
|
-
canvas.style.height = `${displayH}px`;
|
|
82
|
-
canvas.style.left = `${left}px`;
|
|
83
|
-
canvas.style.top = `${top}px`;
|
|
84
|
-
}
|
|
85
|
-
update() {
|
|
86
|
-
this.#renderer?.render(this.#root);
|
|
87
|
-
}
|
|
88
|
-
get cameraX() { return this.#cameraX; }
|
|
89
|
-
set cameraX(value) { this.#cameraX = value; this.#applyPosition(); }
|
|
90
|
-
get cameraY() { return this.#cameraY; }
|
|
91
|
-
set cameraY(value) { this.#cameraY = value; this.#applyPosition(); }
|
|
92
|
-
addPixiChildToRoot(child) {
|
|
93
|
-
this.#root.addChild(child);
|
|
94
|
-
}
|
|
95
|
-
destroy() {
|
|
96
|
-
this.#renderer?.destroy();
|
|
97
|
-
this.#renderer = undefined;
|
|
98
|
-
}
|
|
99
|
-
#backgroundSprite;
|
|
100
|
-
setBackgroundImage(image) {
|
|
101
|
-
if (image) {
|
|
102
|
-
if (!textureLoader.checkLoaded(image)) {
|
|
103
|
-
console.info(`Background image not preloaded. Loading now: ${image}`);
|
|
104
|
-
}
|
|
105
|
-
textureLoader.load(image).then((texture) => {
|
|
106
|
-
if (texture) {
|
|
107
|
-
this.#backgroundSprite?.destroy();
|
|
108
|
-
this.#backgroundSprite = new Sprite({
|
|
109
|
-
x: this.#cameraX,
|
|
110
|
-
y: this.#cameraY,
|
|
111
|
-
texture,
|
|
112
|
-
anchor: { x: 0.5, y: 0.5 },
|
|
113
|
-
width: this.renderWidth,
|
|
114
|
-
height: this.renderHeight,
|
|
115
|
-
zIndex: -999999,
|
|
116
|
-
});
|
|
117
|
-
this.#root.addChild(this.#backgroundSprite);
|
|
118
|
-
}
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
//# sourceMappingURL=world-rendering.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"world-rendering.js","sourceRoot":"","sources":["../../src/world/world-rendering.ts"],"names":[],"mappings":"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","sourcesContent":["import { autoDetectRenderer, Container, EventEmitter, Renderer, Sprite } from \"pixi.js\";\nimport { textureLoader } from '../asset/loaders/texture';\n\nexport class WorldRendering extends EventEmitter<{\n positionChanged: () => void;\n}> {\n #renderer?: Renderer;\n #root = new Container();\n #backgroundAlpha = 1;\n\n #cameraX = 0;\n #cameraY = 0;\n\n centerX = 0;\n centerY = 0;\n renderWidth = 0;\n renderHeight = 0;\n renderScale = 1;\n canvasLeft = 0;\n canvasTop = 0;\n\n #backgroundColor = 0x304C79;\n get backgroundColor() { return this.#backgroundColor; }\n set backgroundColor(v: number) {\n this.#backgroundColor = v;\n if (this.#renderer) this.#renderer.background.color = v;\n }\n\n get backgroundAlpha() { return this.#backgroundAlpha; }\n set backgroundAlpha(v: number) {\n this.#backgroundAlpha = v;\n if (this.#renderer) this.#renderer.background.alpha = v;\n }\n\n async init(container: HTMLElement, width: number | undefined, height: number | undefined) {\n const renderer = await autoDetectRenderer({\n width,\n height,\n backgroundColor: this.#backgroundColor,\n backgroundAlpha: this.#backgroundAlpha,\n eventMode: 'none',\n resolution: window.devicePixelRatio,\n });\n this.#renderer = renderer;\n\n const canvas = renderer.canvas;\n canvas.style.position = 'absolute';\n canvas.style.touchAction = 'auto';\n canvas.style.borderRadius = container.style.borderRadius;\n container.appendChild(canvas);\n\n if (this.#lastRect) this.setRendererSize(this.#lastRect, this.#lastWidth, this.#lastHeight);\n }\n\n #applyPosition() {\n this.#root.x = this.centerX - this.#cameraX;\n this.#root.y = this.centerY - this.#cameraY;\n\n if (this.#backgroundSprite) {\n this.#backgroundSprite.x = this.#cameraX;\n this.#backgroundSprite.y = this.#cameraY;\n }\n\n this.emit('positionChanged');\n }\n\n #lastRect?: DOMRect;\n #lastWidth = 0;\n #lastHeight = 0;\n\n setRendererSize(rect: DOMRect, width: number, height: number) {\n this.#lastRect = rect;\n this.#lastWidth = width;\n this.#lastHeight = height;\n\n this.centerX = width / 2;\n this.centerY = height / 2;\n this.#applyPosition();\n\n this.renderWidth = width;\n this.renderHeight = height;\n\n const scale = Math.min(rect.width / width, rect.height / height);\n this.renderScale = scale;\n\n const displayW = width * scale;\n const displayH = height * scale;\n\n const left = (rect.width - displayW) / 2;\n const top = (rect.height - displayH) / 2;\n this.canvasLeft = left;\n this.canvasTop = top;\n\n if (!this.#renderer) return;\n this.#renderer.resize(width, height);\n\n const canvas = this.#renderer.canvas;\n canvas.style.width = `${displayW}px`;\n canvas.style.height = `${displayH}px`;\n canvas.style.left = `${left}px`;\n canvas.style.top = `${top}px`;\n }\n\n update() {\n this.#renderer?.render(this.#root);\n }\n\n get cameraX() { return this.#cameraX; }\n set cameraX(value: number) { this.#cameraX = value; this.#applyPosition(); }\n get cameraY() { return this.#cameraY; }\n set cameraY(value: number) { this.#cameraY = value; this.#applyPosition(); }\n\n addPixiChildToRoot(child: Container) {\n this.#root.addChild(child);\n }\n\n destroy() {\n this.#renderer?.destroy();\n this.#renderer = undefined;\n }\n\n #backgroundSprite?: Sprite;\n setBackgroundImage(image: string | undefined) {\n if (image) {\n if (!textureLoader.checkLoaded(image)) {\n console.info(`Background image not preloaded. Loading now: ${image}`);\n }\n textureLoader.load(image).then((texture) => {\n if (texture) {\n this.#backgroundSprite?.destroy();\n this.#backgroundSprite = new Sprite({\n x: this.#cameraX,\n y: this.#cameraY,\n texture,\n anchor: { x: 0.5, y: 0.5 },\n width: this.renderWidth,\n height: this.renderHeight,\n zIndex: -999999,\n });\n this.#root.addChild(this.#backgroundSprite);\n }\n });\n }\n }\n}\n"]}
|
package/lib/world/world.js
DELETED
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
import { GameObject } from '../game-object/game-object';
|
|
2
|
-
import { WorldTransform } from '../game-object/transform';
|
|
3
|
-
import { debugMode } from '../utils/debug';
|
|
4
|
-
import { WorldDebug } from './world-debug';
|
|
5
|
-
import { WorldPhysics } from "./world-physics";
|
|
6
|
-
import { WorldRendering } from "./world-rendering";
|
|
7
|
-
export class World extends GameObject {
|
|
8
|
-
container = document.createElement('div');
|
|
9
|
-
#containerResizeObserver;
|
|
10
|
-
_worldRendering = new WorldRendering();
|
|
11
|
-
_worldPhysics = new WorldPhysics();
|
|
12
|
-
#worldDebug = new WorldDebug(this.container);
|
|
13
|
-
#width;
|
|
14
|
-
#height;
|
|
15
|
-
#hasEverBeenConnected = false;
|
|
16
|
-
#destroyed = false;
|
|
17
|
-
#pt = new WorldTransform();
|
|
18
|
-
#update(dt) {
|
|
19
|
-
if (this.container.isConnected) {
|
|
20
|
-
if (!this.#hasEverBeenConnected) {
|
|
21
|
-
this.#hasEverBeenConnected = true;
|
|
22
|
-
this.#applySize();
|
|
23
|
-
}
|
|
24
|
-
this._worldPhysics.update(dt);
|
|
25
|
-
this._engineUpdate(dt, this.#pt);
|
|
26
|
-
this._worldRendering.update();
|
|
27
|
-
this.#worldDebug.update();
|
|
28
|
-
this._containerSizeDirty = false;
|
|
29
|
-
}
|
|
30
|
-
else if (this.#hasEverBeenConnected) {
|
|
31
|
-
this.#destroy();
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
#lastContainerW = 0;
|
|
36
|
-
#lastContainerH = 0;
|
|
37
|
-
_containerSizeDirty = false;
|
|
38
|
-
#applySize() {
|
|
39
|
-
const rect = this.container.getBoundingClientRect();
|
|
40
|
-
if (rect.width === this.#lastContainerW && rect.height === this.#lastContainerH)
|
|
41
|
-
return;
|
|
42
|
-
this.#lastContainerW = rect.width;
|
|
43
|
-
this.#lastContainerH = rect.height;
|
|
44
|
-
this._containerSizeDirty = true;
|
|
45
|
-
if (rect.width === 0 || rect.height === 0)
|
|
46
|
-
return;
|
|
47
|
-
const canvasWidth = this.#width ?? rect.width;
|
|
48
|
-
const canvasHeight = this.#height ?? rect.height;
|
|
49
|
-
this._worldRendering.setRendererSize(rect, canvasWidth, canvasHeight);
|
|
50
|
-
this.#worldDebug.setMatterDebugRendererSize(rect, canvasWidth, canvasHeight, this.cameraX, this.cameraY);
|
|
51
|
-
this.emit('resize', this.width, this.height);
|
|
52
|
-
}
|
|
53
|
-
#destroy() {
|
|
54
|
-
this.#containerResizeObserver.disconnect();
|
|
55
|
-
this._worldRendering.destroy();
|
|
56
|
-
this._worldPhysics.destroy();
|
|
57
|
-
this.#worldDebug.destroy();
|
|
58
|
-
this.#destroyed = true;
|
|
59
|
-
}
|
|
60
|
-
async #init() {
|
|
61
|
-
await this._worldRendering.init(this.container, this.#width, this.#height);
|
|
62
|
-
this.#applySize();
|
|
63
|
-
let prevTime = 0;
|
|
64
|
-
let lagSeconds = 0;
|
|
65
|
-
let fpsCap;
|
|
66
|
-
const step = (timestamp) => {
|
|
67
|
-
if (this.#destroyed)
|
|
68
|
-
return;
|
|
69
|
-
const dt = (timestamp - prevTime) / 1000;
|
|
70
|
-
if (dt > 0) {
|
|
71
|
-
if (fpsCap !== undefined && fpsCap > 0) {
|
|
72
|
-
lagSeconds += dt;
|
|
73
|
-
const fixedStep = 1 / fpsCap;
|
|
74
|
-
if (lagSeconds >= fixedStep) {
|
|
75
|
-
this.#update(fixedStep);
|
|
76
|
-
if (lagSeconds >= fixedStep * 2) {
|
|
77
|
-
this.#update(dt);
|
|
78
|
-
lagSeconds = 0;
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
lagSeconds -= fixedStep;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
this.#update(dt);
|
|
87
|
-
}
|
|
88
|
-
prevTime = timestamp;
|
|
89
|
-
}
|
|
90
|
-
requestAnimationFrame(step);
|
|
91
|
-
};
|
|
92
|
-
requestAnimationFrame(step);
|
|
93
|
-
if (debugMode) {
|
|
94
|
-
if (!document.hasFocus())
|
|
95
|
-
fpsCap = 6;
|
|
96
|
-
window.addEventListener('blur', () => fpsCap = 6);
|
|
97
|
-
window.addEventListener('focus', () => fpsCap = undefined);
|
|
98
|
-
window.addEventListener('pageshow', (event) => { if (event.persisted)
|
|
99
|
-
fpsCap = undefined; });
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
constructor(opts) {
|
|
103
|
-
super(opts);
|
|
104
|
-
this._setWorld(this);
|
|
105
|
-
this._worldRendering.addPixiChildToRoot(this._rendering._container);
|
|
106
|
-
this.#containerResizeObserver = new ResizeObserver(this.#applySize.bind(this));
|
|
107
|
-
this.#containerResizeObserver.observe(this.container);
|
|
108
|
-
this._worldRendering.on('positionChanged', () => this.#worldDebug.setMatterDebugRendererCamera(this.cameraX, this.cameraY));
|
|
109
|
-
this._worldPhysics.on('engineCreated', (engine) => this.#worldDebug.createMatterDebugRenderer(engine, this.width, this.height));
|
|
110
|
-
this._worldPhysics.on('collisionStart', (a, b) => this.emit('collisionStart', a, b));
|
|
111
|
-
``;
|
|
112
|
-
if (opts) {
|
|
113
|
-
if (opts.width !== undefined)
|
|
114
|
-
this.#width = opts.width;
|
|
115
|
-
if (opts.height !== undefined)
|
|
116
|
-
this.#height = opts.height;
|
|
117
|
-
if (opts.backgroundColor !== undefined)
|
|
118
|
-
this.backgroundColor = opts.backgroundColor;
|
|
119
|
-
if (opts.backgroundAlpha !== undefined)
|
|
120
|
-
this.backgroundAlpha = opts.backgroundAlpha;
|
|
121
|
-
if (opts.gravity !== undefined)
|
|
122
|
-
this.gravity = opts.gravity;
|
|
123
|
-
}
|
|
124
|
-
this.#init();
|
|
125
|
-
}
|
|
126
|
-
get width() { return this.#width ?? this._worldRendering.renderWidth; }
|
|
127
|
-
set width(v) { this.#width = v; this.#applySize(); }
|
|
128
|
-
get height() { return this.#height ?? this._worldRendering.renderHeight; }
|
|
129
|
-
set height(v) { this.#height = v; this.#applySize(); }
|
|
130
|
-
get backgroundColor() { return this._worldRendering.backgroundColor; }
|
|
131
|
-
set backgroundColor(v) { this._worldRendering.backgroundColor = v; }
|
|
132
|
-
get backgroundAlpha() { return this._worldRendering.backgroundAlpha; }
|
|
133
|
-
set backgroundAlpha(v) { this._worldRendering.backgroundAlpha = v; }
|
|
134
|
-
get gravity() { return this._worldPhysics.gravity; }
|
|
135
|
-
set gravity(v) { this._worldPhysics.gravity = v; }
|
|
136
|
-
get cameraX() { return this._worldRendering.cameraX; }
|
|
137
|
-
set cameraX(v) { this._worldRendering.cameraX = v; }
|
|
138
|
-
get cameraY() { return this._worldRendering.cameraY; }
|
|
139
|
-
set cameraY(v) { this._worldRendering.cameraY = v; }
|
|
140
|
-
#backgroundImage;
|
|
141
|
-
get backgroundImage() { return this.#backgroundImage; }
|
|
142
|
-
set backgroundImage(image) {
|
|
143
|
-
this.#backgroundImage = image;
|
|
144
|
-
this._worldRendering.setBackgroundImage(image);
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
//# sourceMappingURL=world.js.map
|
package/lib/world/world.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"world.js","sourceRoot":"","sources":["../../src/world/world.ts"],"names":[],"mappings":"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","sourcesContent":["import { GameObject, GameObjectOptions } from '../game-object/game-object';\nimport { WorldTransform } from '../game-object/transform';\nimport { debugMode } from '../utils/debug';\nimport { WorldDebug } from './world-debug';\nimport { WorldPhysics } from \"./world-physics\";\nimport { WorldRendering } from \"./world-rendering\";\n\nexport type WorldOptions = {\n width?: number;\n height?: number;\n backgroundColor?: number;\n backgroundAlpha?: number;\n gravity?: number;\n} & GameObjectOptions;\n\nexport class World extends GameObject<{\n resize: (width: number, height: number) => void;\n collisionStart: (a: GameObject, b: GameObject) => void;\n}> {\n container = document.createElement('div');\n #containerResizeObserver: ResizeObserver;\n\n _worldRendering = new WorldRendering();\n _worldPhysics = new WorldPhysics();\n #worldDebug = new WorldDebug(this.container);\n\n #width?: number;\n #height?: number;\n\n #hasEverBeenConnected = false;\n #destroyed = false;\n\n #pt = new WorldTransform();\n #update(dt: number) {\n if (this.container.isConnected) {\n if (!this.#hasEverBeenConnected) {\n this.#hasEverBeenConnected = true;\n this.#applySize();\n }\n\n this._worldPhysics.update(dt);\n this._engineUpdate(dt, this.#pt);\n this._worldRendering.update();\n this.#worldDebug.update();\n\n this._containerSizeDirty = false;\n }\n\n else if (this.#hasEverBeenConnected) {\n this.#destroy();\n return;\n }\n }\n\n #lastContainerW = 0;\n #lastContainerH = 0;\n _containerSizeDirty = false;\n\n #applySize() {\n const rect = this.container.getBoundingClientRect();\n\n if (rect.width === this.#lastContainerW && rect.height === this.#lastContainerH) return;\n this.#lastContainerW = rect.width;\n this.#lastContainerH = rect.height;\n this._containerSizeDirty = true;\n\n if (rect.width === 0 || rect.height === 0) return;\n\n const canvasWidth = this.#width ?? rect.width;\n const canvasHeight = this.#height ?? rect.height;\n\n this._worldRendering.setRendererSize(rect, canvasWidth, canvasHeight);\n this.#worldDebug.setMatterDebugRendererSize(rect, canvasWidth, canvasHeight, this.cameraX, this.cameraY);\n\n this.emit('resize', this.width, this.height);\n }\n\n #destroy() {\n this.#containerResizeObserver.disconnect();\n this._worldRendering.destroy();\n this._worldPhysics.destroy();\n this.#worldDebug.destroy();\n\n this.#destroyed = true;\n }\n\n async #init() {\n await this._worldRendering.init(this.container, this.#width, this.#height);\n this.#applySize();\n\n let prevTime = 0;\n let lagSeconds = 0;\n let fpsCap: number | undefined;\n\n const step = (timestamp: number) => {\n if (this.#destroyed) return;\n\n const dt = (timestamp - prevTime) / 1000;\n if (dt > 0) {\n if (fpsCap !== undefined && fpsCap > 0) {\n lagSeconds += dt;\n const fixedStep = 1 / fpsCap;\n if (lagSeconds >= fixedStep) {\n this.#update(fixedStep);\n if (lagSeconds >= fixedStep * 2) { this.#update(dt); lagSeconds = 0; }\n else { lagSeconds -= fixedStep; }\n }\n } else {\n this.#update(dt);\n }\n prevTime = timestamp;\n }\n requestAnimationFrame(step);\n };\n requestAnimationFrame(step);\n\n if (debugMode) {\n if (!document.hasFocus()) fpsCap = 6;\n window.addEventListener('blur', () => fpsCap = 6);\n window.addEventListener('focus', () => fpsCap = undefined);\n window.addEventListener('pageshow', (event) => { if (event.persisted) fpsCap = undefined; });\n }\n }\n\n constructor(opts?: WorldOptions) {\n super(opts);\n this._setWorld(this);\n this._worldRendering.addPixiChildToRoot(this._rendering._container);\n\n this.#containerResizeObserver = new ResizeObserver(this.#applySize.bind(this));\n this.#containerResizeObserver.observe(this.container);\n\n this._worldRendering.on('positionChanged', () => this.#worldDebug.setMatterDebugRendererCamera(this.cameraX, this.cameraY));\n this._worldPhysics.on('engineCreated', (engine) => this.#worldDebug.createMatterDebugRenderer(engine, this.width, this.height));\n this._worldPhysics.on('collisionStart', (a, b) => this.emit('collisionStart', a, b));\n ``\n if (opts) {\n if (opts.width !== undefined) this.#width = opts.width;\n if (opts.height !== undefined) this.#height = opts.height;\n if (opts.backgroundColor !== undefined) this.backgroundColor = opts.backgroundColor;\n if (opts.backgroundAlpha !== undefined) this.backgroundAlpha = opts.backgroundAlpha;\n if (opts.gravity !== undefined) this.gravity = opts.gravity;\n }\n\n this.#init();\n }\n\n get width() { return this.#width ?? this._worldRendering.renderWidth; }\n set width(v: number) { this.#width = v; this.#applySize(); }\n get height() { return this.#height ?? this._worldRendering.renderHeight; }\n set height(v: number) { this.#height = v; this.#applySize(); }\n\n get backgroundColor() { return this._worldRendering.backgroundColor; }\n set backgroundColor(v: number) { this._worldRendering.backgroundColor = v; }\n get backgroundAlpha() { return this._worldRendering.backgroundAlpha; }\n set backgroundAlpha(v: number) { this._worldRendering.backgroundAlpha = v; }\n get gravity() { return this._worldPhysics.gravity; }\n set gravity(v: number) { this._worldPhysics.gravity = v; }\n\n get cameraX() { return this._worldRendering.cameraX; }\n set cameraX(v: number) { this._worldRendering.cameraX = v; }\n get cameraY() { return this._worldRendering.cameraY; }\n set cameraY(v: number) { this._worldRendering.cameraY = v; }\n\n #backgroundImage?: string;\n get backgroundImage() { return this.#backgroundImage; }\n set backgroundImage(image: string | undefined) {\n this.#backgroundImage = image;\n this._worldRendering.setBackgroundImage(image);\n }\n}\n"]}
|