melonjs 14.0.2 → 14.1.0
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.md +2 -0
- package/dist/melonjs.mjs/_virtual/_commonjsHelpers.js +10 -0
- package/dist/melonjs.mjs/_virtual/arraymultimap.js +10 -0
- package/dist/melonjs.mjs/_virtual/earcut.js +10 -0
- package/dist/melonjs.mjs/_virtual/howler.js +10 -0
- package/dist/melonjs.mjs/_virtual/index.js +10 -0
- package/dist/melonjs.mjs/_virtual/index2.js +10 -0
- package/dist/melonjs.mjs/_virtual/multimap.js +10 -0
- package/dist/melonjs.mjs/_virtual/setmultimap.js +10 -0
- package/dist/melonjs.mjs/application/application.js +240 -0
- package/dist/melonjs.mjs/audio/audio.js +536 -0
- package/dist/melonjs.mjs/camera/camera2d.js +732 -0
- package/dist/melonjs.mjs/entity/entity.js +248 -0
- package/dist/melonjs.mjs/game.js +29 -0
- package/dist/melonjs.mjs/geometries/ellipse.js +275 -0
- package/dist/melonjs.mjs/geometries/line.js +116 -0
- package/dist/melonjs.mjs/geometries/path2d.js +319 -0
- package/dist/melonjs.mjs/geometries/point.js +89 -0
- package/dist/melonjs.mjs/geometries/poly.js +500 -0
- package/dist/melonjs.mjs/geometries/rectangle.js +375 -0
- package/dist/melonjs.mjs/geometries/roundrect.js +168 -0
- package/dist/melonjs.mjs/index.js +248 -0
- package/dist/melonjs.mjs/input/gamepad.js +501 -0
- package/dist/melonjs.mjs/input/input.js +26 -0
- package/dist/melonjs.mjs/input/keyboard.js +470 -0
- package/dist/melonjs.mjs/input/pointer.js +393 -0
- package/dist/melonjs.mjs/input/pointerevent.js +818 -0
- package/dist/melonjs.mjs/lang/deprecated.js +157 -0
- package/dist/melonjs.mjs/level/level.js +297 -0
- package/dist/melonjs.mjs/level/tiled/TMXGroup.js +141 -0
- package/dist/melonjs.mjs/level/tiled/TMXLayer.js +448 -0
- package/dist/melonjs.mjs/level/tiled/TMXObject.js +355 -0
- package/dist/melonjs.mjs/level/tiled/TMXTile.js +194 -0
- package/dist/melonjs.mjs/level/tiled/TMXTileMap.js +639 -0
- package/dist/melonjs.mjs/level/tiled/TMXTileset.js +311 -0
- package/dist/melonjs.mjs/level/tiled/TMXTilesetGroup.js +83 -0
- package/dist/melonjs.mjs/level/tiled/TMXUtils.js +367 -0
- package/dist/melonjs.mjs/level/tiled/renderer/TMXHexagonalRenderer.js +506 -0
- package/dist/melonjs.mjs/level/tiled/renderer/TMXIsometricRenderer.js +220 -0
- package/dist/melonjs.mjs/level/tiled/renderer/TMXOrthogonalRenderer.js +157 -0
- package/dist/melonjs.mjs/level/tiled/renderer/TMXRenderer.js +125 -0
- package/dist/melonjs.mjs/level/tiled/renderer/TMXStaggeredRenderer.js +109 -0
- package/dist/melonjs.mjs/loader/loader.js +801 -0
- package/dist/melonjs.mjs/loader/loadingscreen.js +120 -0
- package/dist/melonjs.mjs/loader/melonjs_logo.png.js +11 -0
- package/dist/melonjs.mjs/math/color.js +618 -0
- package/dist/melonjs.mjs/math/math.js +218 -0
- package/dist/melonjs.mjs/math/matrix2.js +503 -0
- package/dist/melonjs.mjs/math/matrix3.js +681 -0
- package/dist/melonjs.mjs/math/observable_vector2.js +471 -0
- package/dist/melonjs.mjs/math/observable_vector3.js +561 -0
- package/dist/melonjs.mjs/math/vector2.js +528 -0
- package/dist/melonjs.mjs/math/vector3.js +569 -0
- package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/arraymultimap.js +73 -0
- package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/index.js +21 -0
- package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/multimap.js +324 -0
- package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/setmultimap.js +69 -0
- package/dist/melonjs.mjs/node_modules/earcut/src/earcut.js +691 -0
- package/dist/melonjs.mjs/node_modules/eventemitter3/index.js +350 -0
- package/dist/melonjs.mjs/node_modules/howler/dist/howler.js +3241 -0
- package/dist/melonjs.mjs/particles/emitter.js +267 -0
- package/dist/melonjs.mjs/particles/particle.js +188 -0
- package/dist/melonjs.mjs/particles/settings.js +319 -0
- package/dist/melonjs.mjs/physics/body.js +704 -0
- package/dist/melonjs.mjs/physics/bounds.js +460 -0
- package/dist/melonjs.mjs/physics/collision.js +132 -0
- package/dist/melonjs.mjs/physics/detector.js +194 -0
- package/dist/melonjs.mjs/physics/quadtree.js +391 -0
- package/dist/melonjs.mjs/physics/response.js +57 -0
- package/dist/melonjs.mjs/physics/sat.js +483 -0
- package/dist/melonjs.mjs/physics/world.js +221 -0
- package/dist/melonjs.mjs/plugin/plugin.js +141 -0
- package/dist/melonjs.mjs/renderable/collectable.js +62 -0
- package/dist/melonjs.mjs/renderable/colorlayer.js +80 -0
- package/dist/melonjs.mjs/renderable/container.js +1018 -0
- package/dist/melonjs.mjs/renderable/dragndrop.js +224 -0
- package/dist/melonjs.mjs/renderable/imagelayer.js +306 -0
- package/dist/melonjs.mjs/renderable/light2d.js +156 -0
- package/dist/melonjs.mjs/renderable/nineslicesprite.js +247 -0
- package/dist/melonjs.mjs/renderable/renderable.js +783 -0
- package/dist/melonjs.mjs/renderable/sprite.js +654 -0
- package/dist/melonjs.mjs/renderable/trigger.js +157 -0
- package/dist/melonjs.mjs/renderable/ui/uibaseelement.js +213 -0
- package/dist/melonjs.mjs/renderable/ui/uispriteelement.js +226 -0
- package/dist/melonjs.mjs/renderable/ui/uitextbutton.js +128 -0
- package/dist/melonjs.mjs/state/stage.js +237 -0
- package/dist/melonjs.mjs/state/state.js +596 -0
- package/dist/melonjs.mjs/system/device.js +909 -0
- package/dist/melonjs.mjs/system/dom.js +78 -0
- package/dist/melonjs.mjs/system/event.js +537 -0
- package/dist/melonjs.mjs/system/platform.js +41 -0
- package/dist/melonjs.mjs/system/pooling.js +209 -0
- package/dist/melonjs.mjs/system/save.js +157 -0
- package/dist/melonjs.mjs/system/timer.js +286 -0
- package/dist/melonjs.mjs/text/bitmaptext.js +364 -0
- package/dist/melonjs.mjs/text/bitmaptextdata.js +199 -0
- package/dist/melonjs.mjs/text/glyph.js +66 -0
- package/dist/melonjs.mjs/text/text.js +453 -0
- package/dist/melonjs.mjs/text/textmetrics.js +176 -0
- package/dist/melonjs.mjs/text/textstyle.js +23 -0
- package/dist/melonjs.mjs/tweens/easing.js +336 -0
- package/dist/melonjs.mjs/tweens/interpolation.js +112 -0
- package/dist/melonjs.mjs/tweens/tween.js +480 -0
- package/dist/melonjs.mjs/utils/agent.js +76 -0
- package/dist/melonjs.mjs/utils/array.js +63 -0
- package/dist/melonjs.mjs/utils/file.js +42 -0
- package/dist/melonjs.mjs/utils/function.js +70 -0
- package/dist/melonjs.mjs/utils/string.js +82 -0
- package/dist/melonjs.mjs/utils/utils.js +173 -0
- package/dist/melonjs.mjs/video/canvas/canvas_renderer.js +807 -0
- package/dist/melonjs.mjs/video/renderer.js +411 -0
- package/dist/melonjs.mjs/video/texture/atlas.js +519 -0
- package/dist/melonjs.mjs/video/texture/cache.js +143 -0
- package/dist/melonjs.mjs/video/texture/canvas_texture.js +144 -0
- package/dist/melonjs.mjs/video/video.js +462 -0
- package/dist/melonjs.mjs/video/webgl/buffer/vertex.js +143 -0
- package/dist/melonjs.mjs/video/webgl/glshader.js +168 -0
- package/dist/melonjs.mjs/video/webgl/shaders/primitive.frag.js +10 -0
- package/dist/melonjs.mjs/video/webgl/shaders/primitive.vert.js +10 -0
- package/dist/melonjs.mjs/video/webgl/shaders/quad.frag.js +10 -0
- package/dist/melonjs.mjs/video/webgl/shaders/quad.vert.js +10 -0
- package/dist/melonjs.mjs/video/webgl/utils/attributes.js +25 -0
- package/dist/melonjs.mjs/video/webgl/utils/precision.js +20 -0
- package/dist/melonjs.mjs/video/webgl/utils/program.js +67 -0
- package/dist/melonjs.mjs/video/webgl/utils/string.js +25 -0
- package/dist/melonjs.mjs/video/webgl/utils/uniforms.js +92 -0
- package/dist/melonjs.mjs/video/webgl/webgl_compositor.js +495 -0
- package/dist/melonjs.mjs/video/webgl/webgl_renderer.js +1036 -0
- package/dist/melonjs.module.d.ts +1163 -1163
- package/dist/melonjs.module.js +1903 -3274
- package/package.json +22 -17
- package/src/application/application.js +3 -3
- package/src/audio/audio.js +32 -32
- package/src/camera/camera2d.js +31 -31
- package/src/entity/entity.js +17 -17
- package/src/geometries/ellipse.js +16 -16
- package/src/geometries/line.js +5 -5
- package/src/geometries/path2d.js +32 -32
- package/src/geometries/poly.js +15 -15
- package/src/geometries/rectangle.js +18 -18
- package/src/geometries/roundrect.js +8 -8
- package/src/input/gamepad.js +15 -15
- package/src/input/keyboard.js +12 -12
- package/src/input/pointer.js +6 -6
- package/src/input/pointerevent.js +12 -12
- package/src/lang/deprecated.js +12 -12
- package/src/level/level.js +25 -25
- package/src/level/tiled/TMXLayer.js +22 -22
- package/src/level/tiled/TMXTile.js +5 -5
- package/src/level/tiled/TMXTileMap.js +6 -6
- package/src/level/tiled/TMXTileset.js +2 -2
- package/src/level/tiled/TMXUtils.js +5 -5
- package/src/level/tiled/renderer/TMXHexagonalRenderer.js +2 -2
- package/src/level/tiled/renderer/TMXIsometricRenderer.js +2 -2
- package/src/level/tiled/renderer/TMXOrthogonalRenderer.js +1 -1
- package/src/level/tiled/renderer/TMXRenderer.js +19 -19
- package/src/loader/loader.js +20 -20
- package/src/math/color.js +20 -20
- package/src/math/math.js +16 -16
- package/src/math/matrix2.js +16 -16
- package/src/math/matrix3.js +25 -25
- package/src/math/observable_vector2.js +14 -14
- package/src/math/observable_vector3.js +16 -16
- package/src/math/vector2.js +9 -9
- package/src/math/vector3.js +10 -10
- package/src/particles/emitter.js +6 -6
- package/src/particles/particle.js +2 -2
- package/src/physics/body.js +28 -28
- package/src/physics/bounds.js +8 -8
- package/src/physics/collision.js +2 -2
- package/src/physics/detector.js +6 -6
- package/src/physics/quadtree.js +11 -11
- package/src/physics/sat.js +31 -31
- package/src/physics/world.js +5 -5
- package/src/plugin/plugin.js +5 -5
- package/src/renderable/collectable.js +3 -3
- package/src/renderable/colorlayer.js +5 -5
- package/src/renderable/container.js +21 -21
- package/src/renderable/dragndrop.js +14 -14
- package/src/renderable/imagelayer.js +13 -13
- package/src/renderable/light2d.js +3 -3
- package/src/renderable/nineslicesprite.js +16 -16
- package/src/renderable/renderable.js +23 -23
- package/src/renderable/sprite.js +28 -28
- package/src/renderable/trigger.js +15 -15
- package/src/renderable/ui/uibaseelement.js +7 -7
- package/src/renderable/ui/uispriteelement.js +6 -6
- package/src/renderable/ui/uitextbutton.js +13 -13
- package/src/state/stage.js +7 -7
- package/src/state/state.js +17 -17
- package/src/system/device.js +11 -11
- package/src/system/event.js +10 -10
- package/src/system/pooling.js +9 -9
- package/src/system/save.js +2 -2
- package/src/system/timer.js +10 -10
- package/src/text/bitmaptext.js +18 -18
- package/src/text/bitmaptextdata.js +2 -2
- package/src/text/text.js +23 -23
- package/src/text/textmetrics.js +8 -8
- package/src/tweens/tween.js +19 -19
- package/src/utils/agent.js +5 -5
- package/src/utils/array.js +4 -4
- package/src/utils/file.js +2 -2
- package/src/utils/function.js +6 -6
- package/src/utils/string.js +5 -5
- package/src/utils/utils.js +4 -4
- package/src/video/canvas/canvas_renderer.js +70 -70
- package/src/video/renderer.js +26 -26
- package/src/video/texture/atlas.js +22 -22
- package/src/video/texture/canvas_texture.js +9 -9
- package/src/video/video.js +17 -17
- package/src/video/webgl/glshader.js +10 -10
- package/src/video/webgl/webgl_compositor.js +41 -41
- package/src/video/webgl/webgl_renderer.js +75 -75
package/README.md
CHANGED
|
@@ -161,6 +161,7 @@ melonJS 2 now only provides an ES6 Bundle :
|
|
|
161
161
|
| build | description |
|
|
162
162
|
| ------------------- | ----------- |
|
|
163
163
|
| `melonjs.module.js` | the ES6 Module (ESM) Bundle |
|
|
164
|
+
| `melonjs.mjs` | a tree-shakeable ES6 Module Directory |
|
|
164
165
|
| `melonjs.module.d.ts` | typescript declaration file for the ES6 Module (ESM) Bundle |
|
|
165
166
|
|
|
166
167
|
>Note: if you need your application to be compatible with ES5, refer to our [boilerplate](https://github.com/melonjs/es6-boilerplate) that provides automatic transpiling to ES5.
|
|
@@ -203,6 +204,7 @@ Then build the melonJS source by running:
|
|
|
203
204
|
|
|
204
205
|
The generated files will be available under the `build` directory :
|
|
205
206
|
- `melonjs.module.js` : plain ES6 module
|
|
207
|
+
- `melonjs.module.js` : a ES6 chunk directory used for tree-shaking
|
|
206
208
|
- `melonjs.module.d.ts` : typescript declaration for the ES6 Module
|
|
207
209
|
|
|
208
210
|
To run the melonJS test suite simply use the following:
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* melonJS Game Engine - v14.1.0
|
|
3
|
+
* http://www.melonjs.org
|
|
4
|
+
* melonjs is licensed under the MIT License.
|
|
5
|
+
* http://www.opensource.org/licenses/mit-license
|
|
6
|
+
* @copyright (C) 2011 - 2022 Olivier Biot (AltByte Pte Ltd)
|
|
7
|
+
*/
|
|
8
|
+
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
9
|
+
|
|
10
|
+
export { commonjsGlobal };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* melonJS Game Engine - v14.1.0
|
|
3
|
+
* http://www.melonjs.org
|
|
4
|
+
* melonjs is licensed under the MIT License.
|
|
5
|
+
* http://www.opensource.org/licenses/mit-license
|
|
6
|
+
* @copyright (C) 2011 - 2022 Olivier Biot (AltByte Pte Ltd)
|
|
7
|
+
*/
|
|
8
|
+
var arraymultimap = {};
|
|
9
|
+
|
|
10
|
+
export { arraymultimap as __exports };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* melonJS Game Engine - v14.1.0
|
|
3
|
+
* http://www.melonjs.org
|
|
4
|
+
* melonjs is licensed under the MIT License.
|
|
5
|
+
* http://www.opensource.org/licenses/mit-license
|
|
6
|
+
* @copyright (C) 2011 - 2022 Olivier Biot (AltByte Pte Ltd)
|
|
7
|
+
*/
|
|
8
|
+
var earcut = {exports: {}};
|
|
9
|
+
|
|
10
|
+
export { earcut as e };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* melonJS Game Engine - v14.1.0
|
|
3
|
+
* http://www.melonjs.org
|
|
4
|
+
* melonjs is licensed under the MIT License.
|
|
5
|
+
* http://www.opensource.org/licenses/mit-license
|
|
6
|
+
* @copyright (C) 2011 - 2022 Olivier Biot (AltByte Pte Ltd)
|
|
7
|
+
*/
|
|
8
|
+
var howler = {};
|
|
9
|
+
|
|
10
|
+
export { howler as __exports };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* melonJS Game Engine - v14.1.0
|
|
3
|
+
* http://www.melonjs.org
|
|
4
|
+
* melonjs is licensed under the MIT License.
|
|
5
|
+
* http://www.opensource.org/licenses/mit-license
|
|
6
|
+
* @copyright (C) 2011 - 2022 Olivier Biot (AltByte Pte Ltd)
|
|
7
|
+
*/
|
|
8
|
+
var src = {};
|
|
9
|
+
|
|
10
|
+
export { src as __exports };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* melonJS Game Engine - v14.1.0
|
|
3
|
+
* http://www.melonjs.org
|
|
4
|
+
* melonjs is licensed under the MIT License.
|
|
5
|
+
* http://www.opensource.org/licenses/mit-license
|
|
6
|
+
* @copyright (C) 2011 - 2022 Olivier Biot (AltByte Pte Ltd)
|
|
7
|
+
*/
|
|
8
|
+
var eventemitter3 = {exports: {}};
|
|
9
|
+
|
|
10
|
+
export { eventemitter3 as e };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* melonJS Game Engine - v14.1.0
|
|
3
|
+
* http://www.melonjs.org
|
|
4
|
+
* melonjs is licensed under the MIT License.
|
|
5
|
+
* http://www.opensource.org/licenses/mit-license
|
|
6
|
+
* @copyright (C) 2011 - 2022 Olivier Biot (AltByte Pte Ltd)
|
|
7
|
+
*/
|
|
8
|
+
var multimap = {};
|
|
9
|
+
|
|
10
|
+
export { multimap as __exports };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* melonJS Game Engine - v14.1.0
|
|
3
|
+
* http://www.melonjs.org
|
|
4
|
+
* melonjs is licensed under the MIT License.
|
|
5
|
+
* http://www.opensource.org/licenses/mit-license
|
|
6
|
+
* @copyright (C) 2011 - 2022 Olivier Biot (AltByte Pte Ltd)
|
|
7
|
+
*/
|
|
8
|
+
var setmultimap = {};
|
|
9
|
+
|
|
10
|
+
export { setmultimap as __exports };
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* melonJS Game Engine - v14.1.0
|
|
3
|
+
* http://www.melonjs.org
|
|
4
|
+
* melonjs is licensed under the MIT License.
|
|
5
|
+
* http://www.opensource.org/licenses/mit-license
|
|
6
|
+
* @copyright (C) 2011 - 2022 Olivier Biot (AltByte Pte Ltd)
|
|
7
|
+
*/
|
|
8
|
+
import { renderer } from '../video/video.js';
|
|
9
|
+
import { emit, GAME_INIT, GAME_RESET, GAME_BEFORE_UPDATE, GAME_UPDATE, GAME_AFTER_UPDATE, GAME_BEFORE_DRAW, GAME_AFTER_DRAW } from '../system/event.js';
|
|
10
|
+
import timer from '../system/timer.js';
|
|
11
|
+
import state from '../state/state.js';
|
|
12
|
+
import World from '../physics/world.js';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @classdesc
|
|
16
|
+
* An Application represents a single melonJS game.
|
|
17
|
+
* An Application is responsible for updating (each frame) all the related object status and draw them.
|
|
18
|
+
* @see game
|
|
19
|
+
*/
|
|
20
|
+
class Application {
|
|
21
|
+
constructor() {
|
|
22
|
+
/**
|
|
23
|
+
* a reference to the current active stage "default" camera
|
|
24
|
+
* @public
|
|
25
|
+
* @type {Camera2d}
|
|
26
|
+
*/
|
|
27
|
+
this.viewport = undefined;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* a reference to the game world, <br>
|
|
31
|
+
* a world is a virtual environment containing all the game objects
|
|
32
|
+
* @public
|
|
33
|
+
* @type {World}
|
|
34
|
+
*/
|
|
35
|
+
this.world = undefined;
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* when true, all objects will be added under the root world container.<br>
|
|
39
|
+
* When false, a `me.Container` object will be created for each corresponding groups
|
|
40
|
+
* @public
|
|
41
|
+
* @type {boolean}
|
|
42
|
+
* @default true
|
|
43
|
+
*/
|
|
44
|
+
this.mergeGroup = true;
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Specify the property to be used when sorting renderables.
|
|
48
|
+
* Accepted values : "x", "y", "z"
|
|
49
|
+
* @public
|
|
50
|
+
* @type {string}
|
|
51
|
+
* @default "z"
|
|
52
|
+
*/
|
|
53
|
+
this.sortOn = "z";
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Last time the game update loop was executed. <br>
|
|
57
|
+
* Use this value to implement frame prediction in drawing events,
|
|
58
|
+
* for creating smooth motion while running game update logic at
|
|
59
|
+
* a lower fps.
|
|
60
|
+
* @public
|
|
61
|
+
* @type {DOMHighResTimeStamp}
|
|
62
|
+
* @name lastUpdate
|
|
63
|
+
* @memberof Application
|
|
64
|
+
*/
|
|
65
|
+
this.lastUpdate = 0;
|
|
66
|
+
|
|
67
|
+
// to know when we have to refresh the display
|
|
68
|
+
this.isDirty = true;
|
|
69
|
+
|
|
70
|
+
// always refresh the display when updatesPerSecond are lower than fps
|
|
71
|
+
this.isAlwaysDirty = false;
|
|
72
|
+
|
|
73
|
+
// frame counter for frameSkipping
|
|
74
|
+
// reset the frame counter
|
|
75
|
+
this.frameCounter = 0;
|
|
76
|
+
this.frameRate = 1;
|
|
77
|
+
|
|
78
|
+
// time accumulation for multiple update calls
|
|
79
|
+
this.accumulator = 0.0;
|
|
80
|
+
this.accumulatorMax = 0.0;
|
|
81
|
+
this.accumulatorUpdateDelta = 0;
|
|
82
|
+
|
|
83
|
+
// min update step size
|
|
84
|
+
this.stepSize = 1000 / 60;
|
|
85
|
+
this.updateDelta = 0;
|
|
86
|
+
this.lastUpdateStart = null;
|
|
87
|
+
this.updateAverageDelta = 0;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* init the game instance (create a physic world, update starting time, etc..)
|
|
92
|
+
*/
|
|
93
|
+
init() {
|
|
94
|
+
// create a new physic world
|
|
95
|
+
this.world = new World();
|
|
96
|
+
// set the reference to this application instance
|
|
97
|
+
this.world.app = this;
|
|
98
|
+
this.lastUpdate = globalThis.performance.now();
|
|
99
|
+
emit(GAME_INIT, this);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* reset the game Object manager
|
|
104
|
+
* destroy all current objects
|
|
105
|
+
*/
|
|
106
|
+
reset() {
|
|
107
|
+
// point to the current active stage "default" camera
|
|
108
|
+
var current = state.get();
|
|
109
|
+
if (typeof current !== "undefined") {
|
|
110
|
+
this.viewport = current.cameras.get("default");
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// publish reset notification
|
|
114
|
+
emit(GAME_RESET);
|
|
115
|
+
|
|
116
|
+
// Refresh internal variables for framerate limiting
|
|
117
|
+
this.updateFrameRate();
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Fired when a level is fully loaded and all renderable instantiated. <br>
|
|
122
|
+
* Additionnaly the level id will also be passed to the called function.
|
|
123
|
+
* @example
|
|
124
|
+
* // call myFunction () everytime a level is loaded
|
|
125
|
+
* me.game.onLevelLoaded = this.myFunction.bind(this);
|
|
126
|
+
*/
|
|
127
|
+
onLevelLoaded() {}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Update the renderer framerate using the system config variables.
|
|
131
|
+
* @see timer.maxfps
|
|
132
|
+
* @see World.fps
|
|
133
|
+
*/
|
|
134
|
+
updateFrameRate() {
|
|
135
|
+
// reset the frame counter
|
|
136
|
+
this.frameCounter = 0;
|
|
137
|
+
this.frameRate = ~~(0.5 + 60 / timer.maxfps);
|
|
138
|
+
|
|
139
|
+
// set step size based on the updatesPerSecond
|
|
140
|
+
this.stepSize = (1000 / this.world.fps);
|
|
141
|
+
this.accumulator = 0.0;
|
|
142
|
+
this.accumulatorMax = this.stepSize * 10;
|
|
143
|
+
|
|
144
|
+
// display should always re-draw when update speed doesn't match fps
|
|
145
|
+
// this means the user intends to write position prediction drawing logic
|
|
146
|
+
this.isAlwaysDirty = (timer.maxfps > this.world.fps);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Returns the parent container of the specified Child in the game world
|
|
151
|
+
* @param {Renderable} child
|
|
152
|
+
* @returns {Container}
|
|
153
|
+
*/
|
|
154
|
+
getParentContainer(child) {
|
|
155
|
+
return child.ancestor;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* force the redraw (not update) of all objects
|
|
160
|
+
*/
|
|
161
|
+
repaint() {
|
|
162
|
+
this.isDirty = true;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* update all objects related to this game active scene/stage
|
|
167
|
+
* @param {number} time - current timestamp as provided by the RAF callback
|
|
168
|
+
* @param {Stage} stage - the current stage
|
|
169
|
+
*/
|
|
170
|
+
update(time, stage) {
|
|
171
|
+
// handle frame skipping if required
|
|
172
|
+
if ((++this.frameCounter % this.frameRate) === 0) {
|
|
173
|
+
// reset the frame counter
|
|
174
|
+
this.frameCounter = 0;
|
|
175
|
+
|
|
176
|
+
// publish notification
|
|
177
|
+
emit(GAME_BEFORE_UPDATE, time);
|
|
178
|
+
|
|
179
|
+
this.accumulator += timer.getDelta();
|
|
180
|
+
this.accumulator = Math.min(this.accumulator, this.accumulatorMax);
|
|
181
|
+
|
|
182
|
+
this.updateDelta = (timer.interpolation) ? timer.getDelta() : this.stepSize;
|
|
183
|
+
this.accumulatorUpdateDelta = (timer.interpolation) ? this.updateDelta : Math.max(this.updateDelta, this.updateAverageDelta);
|
|
184
|
+
|
|
185
|
+
while (this.accumulator >= this.accumulatorUpdateDelta || timer.interpolation) {
|
|
186
|
+
this.lastUpdateStart = globalThis.performance.now();
|
|
187
|
+
|
|
188
|
+
// game update event
|
|
189
|
+
if (state.isPaused() !== true) {
|
|
190
|
+
emit(GAME_UPDATE, time);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
// update all objects (and pass the elapsed time since last frame)
|
|
194
|
+
this.isDirty = stage.update(this.updateDelta) || this.isDirty;
|
|
195
|
+
|
|
196
|
+
this.lastUpdate = globalThis.performance.now();
|
|
197
|
+
this.updateAverageDelta = this.lastUpdate - this.lastUpdateStart;
|
|
198
|
+
|
|
199
|
+
this.accumulator -= this.accumulatorUpdateDelta;
|
|
200
|
+
if (timer.interpolation) {
|
|
201
|
+
this.accumulator = 0;
|
|
202
|
+
break;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
// publish notification
|
|
207
|
+
emit(GAME_AFTER_UPDATE, this.lastUpdate);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* draw the active scene/stage associated to this game
|
|
213
|
+
* @param {Stage} stage - the current stage
|
|
214
|
+
*/
|
|
215
|
+
draw(stage) {
|
|
216
|
+
if (renderer.isContextValid === true && (this.isDirty || this.isAlwaysDirty)) {
|
|
217
|
+
// publish notification
|
|
218
|
+
emit(GAME_BEFORE_DRAW, globalThis.performance.now());
|
|
219
|
+
|
|
220
|
+
// prepare renderer to draw a new frame
|
|
221
|
+
renderer.clear();
|
|
222
|
+
|
|
223
|
+
// render the stage
|
|
224
|
+
stage.draw(renderer);
|
|
225
|
+
|
|
226
|
+
// set back to flag
|
|
227
|
+
this.isDirty = false;
|
|
228
|
+
|
|
229
|
+
// flush/render our frame
|
|
230
|
+
renderer.flush();
|
|
231
|
+
|
|
232
|
+
// publish notification
|
|
233
|
+
emit(GAME_AFTER_DRAW, globalThis.performance.now());
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
var Application$1 = Application;
|
|
239
|
+
|
|
240
|
+
export { Application$1 as default };
|