mirror of
https://github.com/photonstorm/phaser
synced 2024-11-21 20:23:19 +00:00
v3.86.0 release
This commit is contained in:
parent
c3581595c7
commit
f1c4b0fef2
12 changed files with 302605 additions and 302311 deletions
|
@ -6,6 +6,7 @@ Please select a version to read that specific change log:
|
|||
|
||||
| Version | Name | Release Date |
|
||||
| ------- | ---- | ------------ |
|
||||
| [3.86](changelog/3.86/CHANGELOG-v3.80.md) | Aoi | 11th October 2024 |
|
||||
| [3.85.2](changelog/3.85.2/CHANGELOG-v3.85.2.md) | Itsuki | 17th September 2024 |
|
||||
| [3.85.0](changelog/3.85/CHANGELOG-v3.85.md) | Itsuki | 5th September 2024 |
|
||||
| [3.80.1](changelog/3.80.1/CHANGELOG-v3.80.1.md) | Nino | 27th February 2024 |
|
||||
|
|
16
README.md
16
README.md
|
@ -57,15 +57,15 @@ npm install phaser
|
|||
[Phaser is on jsDelivr](https://www.jsdelivr.com/package/npm/phaser) which is a "super-fast CDN for developers". Include _either_ of the following in your html:
|
||||
|
||||
```html
|
||||
<script src="//cdn.jsdelivr.net/npm/phaser@3.85.2/dist/phaser.js"></script>
|
||||
<script src="//cdn.jsdelivr.net/npm/phaser@3.85.2/dist/phaser.min.js"></script>
|
||||
<script src="//cdn.jsdelivr.net/npm/phaser@3.86.0/dist/phaser.js"></script>
|
||||
<script src="//cdn.jsdelivr.net/npm/phaser@3.86.0/dist/phaser.min.js"></script>
|
||||
```
|
||||
|
||||
It is also available from Cloudflare's [cdnjs](https://cdnjs.com/libraries/phaser):
|
||||
|
||||
```html
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/phaser/3.85.2/phaser.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/phaser/3.85.2/phaser.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/phaser/3.86.0/phaser.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/phaser/3.86.0/phaser.min.js"></script>
|
||||
```
|
||||
|
||||
## Phaser TypeScript Definitions
|
||||
|
@ -115,7 +115,7 @@ Register for a free Phaser account to [download the book](https://phaser.io/news
|
|||
|
||||
We have created hundreds of examples and they are all available with full source code and assets.
|
||||
|
||||
Browse the examples on the [Phaser 3 Labs](https://labs.phaser.io)
|
||||
Browse our brand new [Phaser Examples site](https://phaser.io/examples).
|
||||
|
||||
## Phaser 3 Plugins
|
||||
|
||||
|
@ -137,8 +137,8 @@ Read more about [Phaser Compressor](https://phaser.io/news/2024/05/phaser-compre
|
|||
|
||||
We meticulously keep track of new features, updates and bug fixes in our change logs. Each version of Phaser has its own change log:
|
||||
|
||||
* [v3.85.2 Change Log](changelog/3.85.2/CHANGELOG-v3.85.2.md)
|
||||
* [v3.0.0 to v3.85.0 Change Logs](CHANGELOG.md)
|
||||
* [v3.86 Change Log](changelog/3.86/CHANGELOG-v3.86.md)
|
||||
* [v3.0.0 to v3.85.2 Change Logs](CHANGELOG.md)
|
||||
|
||||
## Have fun!
|
||||
|
||||
|
@ -158,7 +158,7 @@ Cheers,
|
|||
**Play** some [amazing games](https://phaser.io/games)<br />
|
||||
**Learn** By browsing our [API Docs](https://newdocs.phaser.io), [Support Forum](https://phaser.discourse.group/) and [StackOverflow](https://stackoverflow.com/questions/tagged/phaser-framework)<br />
|
||||
**Code Examples?** We've over 2000 [Examples](https://phaser.io/examples) to learn from<br />
|
||||
**Read** the weekly [Phaser World](https://phaser.io/newsletter/2024) Newsletter<br />
|
||||
**Read** the weekly [Phaser World](https://phaser.world) Newsletter<br />
|
||||
**Be Social:** Join us on [Discord](https://discord.gg/phaser) and [Reddit](https://phaser.io/community/reddit) or follow us on [Twitter](https://twitter.com/phaser_)<br />
|
||||
|
||||
Powered by coffee, anime, pixels and love.
|
||||
|
|
202
dist/phaser-arcade-physics.js
vendored
202
dist/phaser-arcade-physics.js
vendored
|
@ -8863,6 +8863,22 @@ var BaseCamera = new Class({
|
|||
* @since 3.60.0
|
||||
*/
|
||||
this.isSceneCamera = true;
|
||||
|
||||
/**
|
||||
* Can this Camera render rounded pixel values?
|
||||
*
|
||||
* This property is updated during the `preRender` method and should not be
|
||||
* set directly. It is set based on the `roundPixels` property of the Camera
|
||||
* combined with the zoom level. If the zoom is an integer then the WebGL
|
||||
* Renderer can apply rounding during rendering.
|
||||
*
|
||||
* @name Phaser.Cameras.Scene2D.BaseCamera#renderRoundPixels
|
||||
* @type {boolean}
|
||||
* @readonly
|
||||
* @default true
|
||||
* @since 3.86.0
|
||||
*/
|
||||
this.renderRoundPixels = true;
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -10799,6 +10815,8 @@ var Camera = new Class({
|
|||
var zoomY = this.zoomY;
|
||||
var matrix = this.matrix;
|
||||
|
||||
this.renderRoundPixels = (this.roundPixels && Number.isInteger(zoomX) && Number.isInteger(zoomY));
|
||||
|
||||
var originX = width * this.originX;
|
||||
var originY = height * this.originY;
|
||||
|
||||
|
@ -10887,7 +10905,8 @@ var Camera = new Class({
|
|||
Math.floor(this.x + originX + 0.5),
|
||||
Math.floor(this.y + originY + 0.5),
|
||||
this.rotation,
|
||||
zoomX, zoomY);
|
||||
zoomX, zoomY
|
||||
);
|
||||
|
||||
matrix.translate(-originX, -originY);
|
||||
|
||||
|
@ -15645,7 +15664,7 @@ var CONST = {
|
|||
* @type {string}
|
||||
* @since 3.0.0
|
||||
*/
|
||||
VERSION: '3.85.2',
|
||||
VERSION: '3.86.0',
|
||||
|
||||
BlendModes: __webpack_require__(10312),
|
||||
|
||||
|
@ -47643,6 +47662,8 @@ var Render = __webpack_require__(29959);
|
|||
var Union = __webpack_require__(36899);
|
||||
var Vector2 = __webpack_require__(26099);
|
||||
|
||||
var tempTransformMatrix = new Components.TransformMatrix();
|
||||
|
||||
/**
|
||||
* @classdesc
|
||||
* A Container Game Object.
|
||||
|
@ -47787,16 +47808,6 @@ var Container = new Class({
|
|||
*/
|
||||
this.localTransform = new Components.TransformMatrix();
|
||||
|
||||
/**
|
||||
* Internal temporary Transform Matrix used to avoid object creation.
|
||||
*
|
||||
* @name Phaser.GameObjects.Container#tempTransformMatrix
|
||||
* @type {Phaser.GameObjects.Components.TransformMatrix}
|
||||
* @private
|
||||
* @since 3.4.0
|
||||
*/
|
||||
this.tempTransformMatrix = new Components.TransformMatrix();
|
||||
|
||||
/**
|
||||
* The property key to sort by.
|
||||
*
|
||||
|
@ -48131,7 +48142,7 @@ var Container = new Class({
|
|||
output.y = source.y;
|
||||
}
|
||||
|
||||
var tempMatrix = this.tempTransformMatrix;
|
||||
var tempMatrix = tempTransformMatrix;
|
||||
|
||||
// No need to loadIdentity because applyITRS overwrites every value anyway
|
||||
tempMatrix.applyITRS(this.x, this.y, this.rotation, this.scaleX, this.scaleY);
|
||||
|
@ -48155,7 +48166,7 @@ var Container = new Class({
|
|||
*/
|
||||
getBoundsTransformMatrix: function ()
|
||||
{
|
||||
return this.getWorldTransformMatrix(this.tempTransformMatrix, this.localTransform);
|
||||
return this.getWorldTransformMatrix(tempTransformMatrix, this.localTransform);
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -49078,7 +49089,6 @@ var Container = new Class({
|
|||
this.removeAll(!!this.exclusive);
|
||||
|
||||
this.localTransform.destroy();
|
||||
this.tempTransformMatrix.destroy();
|
||||
|
||||
this.list = [];
|
||||
},
|
||||
|
@ -55043,7 +55053,7 @@ var Group = new Class({
|
|||
},
|
||||
|
||||
/**
|
||||
* {@link Phaser.GameObjects.Components.Animation#play Plays} an animation for all members of this group.
|
||||
* {@link Phaser.Animations.AnimationState#play Plays} an animation for all members of this group.
|
||||
*
|
||||
* @method Phaser.GameObjects.Group#playAnimation
|
||||
* @since 3.0.0
|
||||
|
@ -65546,7 +65556,7 @@ var ParticleEmitter = new Class({
|
|||
* or any object with a suitable {@link Phaser.Types.GameObjects.Particles.EdgeZoneSourceCallback getPoints} method.
|
||||
*
|
||||
* A {@link Phaser.Types.GameObjects.Particles.ParticleEmitterRandomZoneConfig RandomZone} places the particles randomly within its interior.
|
||||
* Its {@link RandomZoneSource source} can be a Circle, Ellipse, Line, Polygon, Rectangle, or Triangle; or any object with a suitable {@link Phaser.Types.GameObjects.Particles.RandomZoneSourceCallback getRandomPoint} method.
|
||||
* Its {@link Phaser.GameObjects.Particles.Zones.RandomZone#source source} can be a Circle, Ellipse, Line, Polygon, Rectangle, or Triangle; or any object with a suitable {@link Phaser.Types.GameObjects.Particles.RandomZoneSourceCallback getRandomPoint} method.
|
||||
*
|
||||
* An Emission Zone can only exist once within this Emitter.
|
||||
*
|
||||
|
@ -81098,16 +81108,29 @@ var GetTextSize = function (text, size, lines)
|
|||
style.syncFont(canvas, context);
|
||||
|
||||
// Text Width
|
||||
var letterSpacing = text.letterSpacing;
|
||||
|
||||
for (var i = 0; i < drawnLines; i++)
|
||||
{
|
||||
var lineWidth = style.strokeThickness;
|
||||
|
||||
lineWidth += context.measureText(lines[i]).width;
|
||||
|
||||
if (lines[i].length > 1)
|
||||
if (letterSpacing === 0)
|
||||
{
|
||||
lineWidth += text.letterSpacing * (lines[i].length - 1);
|
||||
lineWidth += context.measureText(lines[i]).width;
|
||||
}
|
||||
else
|
||||
{
|
||||
var line = lines[i];
|
||||
|
||||
for (var j = 0; j < line.length; j++)
|
||||
{
|
||||
lineWidth += context.measureText(line[j]).width;
|
||||
}
|
||||
|
||||
if (line.length > 1)
|
||||
{
|
||||
lineWidth += letterSpacing * (line.length - 1);
|
||||
}
|
||||
}
|
||||
|
||||
// Adjust for wrapped text
|
||||
|
@ -118323,7 +118346,7 @@ File.createObjectURL = function (image, blob, defaultType)
|
|||
|
||||
/**
|
||||
* Static method for releasing an existing object URL which was previously created
|
||||
* by calling {@link File#createObjectURL} method.
|
||||
* by calling {@link Phaser.Loader.File.createObjectURL} method.
|
||||
*
|
||||
* @method Phaser.Loader.File.revokeObjectURL
|
||||
* @static
|
||||
|
@ -155660,6 +155683,12 @@ var CanvasRenderer = new Class({
|
|||
var gx = sprite.x;
|
||||
var gy = sprite.y;
|
||||
|
||||
if (camera.roundPixels)
|
||||
{
|
||||
gx = Math.floor(gx);
|
||||
gy = Math.floor(gy);
|
||||
}
|
||||
|
||||
spriteMatrix.applyITRS(gx, gy, sprite.rotation, sprite.scaleX * flipX, sprite.scaleY * flipY);
|
||||
|
||||
camMatrix.copyFrom(camera.matrix);
|
||||
|
@ -155682,10 +155711,10 @@ var CanvasRenderer = new Class({
|
|||
// Multiply by the Sprite matrix
|
||||
camMatrix.multiply(spriteMatrix);
|
||||
|
||||
if (camera.roundPixels)
|
||||
if (camera.renderRoundPixels)
|
||||
{
|
||||
camMatrix.e = Math.round(camMatrix.e);
|
||||
camMatrix.f = Math.round(camMatrix.f);
|
||||
camMatrix.e = Math.floor(camMatrix.e + 0.5);
|
||||
camMatrix.f = Math.floor(camMatrix.f + 0.5);
|
||||
}
|
||||
|
||||
ctx.save();
|
||||
|
@ -155705,26 +155734,24 @@ var CanvasRenderer = new Class({
|
|||
|
||||
if (frameWidth > 0 && frameHeight > 0)
|
||||
{
|
||||
var fw = frameWidth / res;
|
||||
var fh = frameHeight / res;
|
||||
|
||||
if (camera.roundPixels)
|
||||
{
|
||||
ctx.drawImage(
|
||||
frame.source.image,
|
||||
frameX, frameY,
|
||||
frameWidth, frameHeight,
|
||||
Math.round(x), Math.round(y),
|
||||
Math.round(frameWidth / res), Math.round(frameHeight / res)
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
ctx.drawImage(
|
||||
frame.source.image,
|
||||
frameX, frameY,
|
||||
frameWidth, frameHeight,
|
||||
x, y,
|
||||
frameWidth / res, frameHeight / res
|
||||
);
|
||||
x = Math.floor(x + 0.5);
|
||||
y = Math.floor(y + 0.5);
|
||||
fw += 0.5;
|
||||
fh += 0.5;
|
||||
}
|
||||
|
||||
ctx.drawImage(
|
||||
frame.source.image,
|
||||
frameX, frameY,
|
||||
frameWidth, frameHeight,
|
||||
x, y,
|
||||
fw, fh
|
||||
);
|
||||
}
|
||||
|
||||
if (sprite.mask)
|
||||
|
@ -158069,7 +158096,7 @@ var RenderTarget = new Class({
|
|||
*/
|
||||
this.forceClamp = forceClamp;
|
||||
|
||||
this.resize(width, height);
|
||||
this.init(width, height);
|
||||
|
||||
if (autoResize)
|
||||
{
|
||||
|
@ -158082,6 +158109,28 @@ var RenderTarget = new Class({
|
|||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Sets up this Render Target to the given width and height, creating a new
|
||||
* frame buffer and texture. This method is called automatically by the constructor
|
||||
* and at no other time.
|
||||
*
|
||||
* @method Phaser.Renderer.WebGL.RenderTarget#init
|
||||
* @since 3.86.0
|
||||
*
|
||||
* @param {number} width - The new width of this Render Target.
|
||||
* @param {number} height - The new height of this Render Target.
|
||||
*/
|
||||
init: function (width, height)
|
||||
{
|
||||
var renderer = this.renderer;
|
||||
|
||||
this.texture = renderer.createTextureFromSource(null, width, height, this.minFilter, this.forceClamp);
|
||||
this.framebuffer = renderer.createFramebuffer(width, height, this.texture, this.hasDepthBuffer);
|
||||
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
},
|
||||
|
||||
/**
|
||||
* Sets if this Render Target should automatically resize when the WebGL Renderer
|
||||
* emits a resize event.
|
||||
|
@ -158119,9 +158168,6 @@ var RenderTarget = new Class({
|
|||
* them using the new sizes.
|
||||
*
|
||||
* This method is called automatically by the pipeline during its resize handler.
|
||||
*
|
||||
* Previous to Phaser v3.85 this method would only run if `autoResize` was `true`,
|
||||
* it will now run regardless.
|
||||
*
|
||||
* @method Phaser.Renderer.WebGL.RenderTarget#resize
|
||||
* @since 3.50.0
|
||||
|
@ -158133,7 +158179,7 @@ var RenderTarget = new Class({
|
|||
*/
|
||||
resize: function (width, height)
|
||||
{
|
||||
if (this.willResize(width, height))
|
||||
if (this.autoResize && this.willResize(width, height))
|
||||
{
|
||||
var renderer = this.renderer;
|
||||
|
||||
|
@ -158165,19 +158211,17 @@ var RenderTarget = new Class({
|
|||
*/
|
||||
willResize: function (width, height)
|
||||
{
|
||||
if (typeof width !== 'number' || typeof height !== 'number')
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
width = Math.round(width * this.scale);
|
||||
height = Math.round(height * this.scale);
|
||||
|
||||
if (width <= 0)
|
||||
{
|
||||
width = 1;
|
||||
}
|
||||
|
||||
if (height <= 0)
|
||||
{
|
||||
height = 1;
|
||||
}
|
||||
|
||||
width = Math.max(width, 1);
|
||||
height = Math.max(height, 1);
|
||||
|
||||
return (width !== this.width || height !== this.height);
|
||||
},
|
||||
|
||||
|
@ -167845,7 +167889,7 @@ var MultiPipeline = new Class({
|
|||
// Multiply by the Sprite matrix, store result in calcMatrix
|
||||
camMatrix.multiply(spriteMatrix, calcMatrix);
|
||||
|
||||
var quad = calcMatrix.setQuad(x, y, x + frameWidth, y + frameHeight, camera.roundPixels);
|
||||
var quad = calcMatrix.setQuad(x, y, x + frameWidth, y + frameHeight, camera.renderRoundPixels);
|
||||
|
||||
var getTint = Utils.getTintAppendFloatAlpha;
|
||||
var cameraAlpha = camera.alpha;
|
||||
|
@ -168029,7 +168073,7 @@ var MultiPipeline = new Class({
|
|||
// Multiply by the Sprite matrix, store result in calcMatrix
|
||||
camMatrix.multiply(spriteMatrix, calcMatrix);
|
||||
|
||||
var quad = calcMatrix.setQuad(x, y, x + width, y + height, camera.roundPixels);
|
||||
var quad = calcMatrix.setQuad(x, y, x + width, y + height, camera.renderRoundPixels);
|
||||
|
||||
if (textureUnit === undefined || textureUnit === null)
|
||||
{
|
||||
|
@ -176236,12 +176280,14 @@ var ScaleManager = new Class({
|
|||
|
||||
this.fullscreen = game.device.fullscreen;
|
||||
|
||||
if ((this.scaleMode !== CONST.SCALE_MODE.RESIZE) && (this.scaleMode !== CONST.SCALE_MODE.EXPAND))
|
||||
var scaleMode = this.scaleMode;
|
||||
|
||||
if (scaleMode !== CONST.SCALE_MODE.RESIZE && scaleMode !== CONST.SCALE_MODE.EXPAND)
|
||||
{
|
||||
this.displaySize.setAspectMode(this.scaleMode);
|
||||
this.displaySize.setAspectMode(scaleMode);
|
||||
}
|
||||
|
||||
if (this.scaleMode === CONST.SCALE_MODE.NONE)
|
||||
if (scaleMode === CONST.SCALE_MODE.NONE)
|
||||
{
|
||||
this.resize(this.width, this.height);
|
||||
}
|
||||
|
@ -176909,18 +176955,16 @@ var ScaleManager = new Class({
|
|||
style.width = styleWidth + 'px';
|
||||
style.height = styleHeight + 'px';
|
||||
|
||||
|
||||
// Expand canvas size to fit game size's width or height
|
||||
|
||||
var scaleX = this.parentSize.width / baseWidth;
|
||||
|
||||
var scaleY = this.parentSize.height / baseHeight;
|
||||
|
||||
if (scaleX < scaleY)
|
||||
if (scaleX < scaleY && scaleX !== 0)
|
||||
{
|
||||
this.baseSize.setSize(baseWidth, this.parentSize.height / scaleX);
|
||||
}
|
||||
else
|
||||
else if (scaleY !== 0)
|
||||
{
|
||||
this.baseSize.setSize(this.displaySize.width / scaleY, baseHeight);
|
||||
}
|
||||
|
@ -209946,15 +209990,17 @@ var HexagonalTileToWorldXY = function (tileX, tileY, point, camera, layer)
|
|||
|
||||
var x;
|
||||
var y;
|
||||
var staggerAxis = layer.staggerAxis;
|
||||
var staggerIndex = layer.staggerIndex;
|
||||
|
||||
if (layer.staggerAxis === 'y')
|
||||
if (staggerAxis === 'y')
|
||||
{
|
||||
x = worldX + (tileWidth * tileX) + tileWidth;
|
||||
y = worldY + ((1.5 * tileY) * tileHeightHalf) + tileHeightHalf;
|
||||
|
||||
if (tileY % 2 === 0)
|
||||
{
|
||||
if (this.staggerIndex === 'odd')
|
||||
if (staggerIndex === 'odd')
|
||||
{
|
||||
x -= tileWidthHalf;
|
||||
}
|
||||
|
@ -209964,14 +210010,14 @@ var HexagonalTileToWorldXY = function (tileX, tileY, point, camera, layer)
|
|||
}
|
||||
}
|
||||
}
|
||||
else if ((this.staggerAxis === 'x') && (this.staggerIndex === 'odd'))
|
||||
else if ((staggerAxis === 'x') && (staggerIndex === 'odd'))
|
||||
{
|
||||
x = worldX + ((1.5 * tileX) * tileWidthHalf) + tileWidthHalf;
|
||||
y = worldY + (tileHeight * tileX) + tileHeight;
|
||||
|
||||
if (tileX % 2 === 0)
|
||||
{
|
||||
if (this.staggerIndex === 'odd')
|
||||
if (staggerIndex === 'odd')
|
||||
{
|
||||
y -= tileHeightHalf;
|
||||
}
|
||||
|
@ -225443,19 +225489,15 @@ var MoveAbove = function (array, item1, item2)
|
|||
return array;
|
||||
}
|
||||
|
||||
// Remove
|
||||
// Remove item1 from its current position
|
||||
array.splice(currentIndex, 1);
|
||||
|
||||
// Add in new location
|
||||
if (baseIndex === array.length - 1)
|
||||
{
|
||||
array.push(item1);
|
||||
}
|
||||
else
|
||||
{
|
||||
array.splice(baseIndex, 0, item1);
|
||||
}
|
||||
// Recalculate baseIndex after removal
|
||||
baseIndex = array.indexOf(item2);
|
||||
|
||||
// Insert item1 immediately after item2
|
||||
array.splice(baseIndex + 1, 0, item1);
|
||||
|
||||
return array;
|
||||
};
|
||||
|
||||
|
|
2
dist/phaser-arcade-physics.min.js
vendored
2
dist/phaser-arcade-physics.min.js
vendored
File diff suppressed because one or more lines are too long
202
dist/phaser-ie9.js
vendored
202
dist/phaser-ie9.js
vendored
|
@ -8863,6 +8863,22 @@ var BaseCamera = new Class({
|
|||
* @since 3.60.0
|
||||
*/
|
||||
this.isSceneCamera = true;
|
||||
|
||||
/**
|
||||
* Can this Camera render rounded pixel values?
|
||||
*
|
||||
* This property is updated during the `preRender` method and should not be
|
||||
* set directly. It is set based on the `roundPixels` property of the Camera
|
||||
* combined with the zoom level. If the zoom is an integer then the WebGL
|
||||
* Renderer can apply rounding during rendering.
|
||||
*
|
||||
* @name Phaser.Cameras.Scene2D.BaseCamera#renderRoundPixels
|
||||
* @type {boolean}
|
||||
* @readonly
|
||||
* @default true
|
||||
* @since 3.86.0
|
||||
*/
|
||||
this.renderRoundPixels = true;
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -10799,6 +10815,8 @@ var Camera = new Class({
|
|||
var zoomY = this.zoomY;
|
||||
var matrix = this.matrix;
|
||||
|
||||
this.renderRoundPixels = (this.roundPixels && Number.isInteger(zoomX) && Number.isInteger(zoomY));
|
||||
|
||||
var originX = width * this.originX;
|
||||
var originY = height * this.originY;
|
||||
|
||||
|
@ -10887,7 +10905,8 @@ var Camera = new Class({
|
|||
Math.floor(this.x + originX + 0.5),
|
||||
Math.floor(this.y + originY + 0.5),
|
||||
this.rotation,
|
||||
zoomX, zoomY);
|
||||
zoomX, zoomY
|
||||
);
|
||||
|
||||
matrix.translate(-originX, -originY);
|
||||
|
||||
|
@ -15645,7 +15664,7 @@ var CONST = {
|
|||
* @type {string}
|
||||
* @since 3.0.0
|
||||
*/
|
||||
VERSION: '3.85.2',
|
||||
VERSION: '3.86.0',
|
||||
|
||||
BlendModes: __webpack_require__(10312),
|
||||
|
||||
|
@ -47643,6 +47662,8 @@ var Render = __webpack_require__(29959);
|
|||
var Union = __webpack_require__(36899);
|
||||
var Vector2 = __webpack_require__(26099);
|
||||
|
||||
var tempTransformMatrix = new Components.TransformMatrix();
|
||||
|
||||
/**
|
||||
* @classdesc
|
||||
* A Container Game Object.
|
||||
|
@ -47787,16 +47808,6 @@ var Container = new Class({
|
|||
*/
|
||||
this.localTransform = new Components.TransformMatrix();
|
||||
|
||||
/**
|
||||
* Internal temporary Transform Matrix used to avoid object creation.
|
||||
*
|
||||
* @name Phaser.GameObjects.Container#tempTransformMatrix
|
||||
* @type {Phaser.GameObjects.Components.TransformMatrix}
|
||||
* @private
|
||||
* @since 3.4.0
|
||||
*/
|
||||
this.tempTransformMatrix = new Components.TransformMatrix();
|
||||
|
||||
/**
|
||||
* The property key to sort by.
|
||||
*
|
||||
|
@ -48131,7 +48142,7 @@ var Container = new Class({
|
|||
output.y = source.y;
|
||||
}
|
||||
|
||||
var tempMatrix = this.tempTransformMatrix;
|
||||
var tempMatrix = tempTransformMatrix;
|
||||
|
||||
// No need to loadIdentity because applyITRS overwrites every value anyway
|
||||
tempMatrix.applyITRS(this.x, this.y, this.rotation, this.scaleX, this.scaleY);
|
||||
|
@ -48155,7 +48166,7 @@ var Container = new Class({
|
|||
*/
|
||||
getBoundsTransformMatrix: function ()
|
||||
{
|
||||
return this.getWorldTransformMatrix(this.tempTransformMatrix, this.localTransform);
|
||||
return this.getWorldTransformMatrix(tempTransformMatrix, this.localTransform);
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -49078,7 +49089,6 @@ var Container = new Class({
|
|||
this.removeAll(!!this.exclusive);
|
||||
|
||||
this.localTransform.destroy();
|
||||
this.tempTransformMatrix.destroy();
|
||||
|
||||
this.list = [];
|
||||
},
|
||||
|
@ -55043,7 +55053,7 @@ var Group = new Class({
|
|||
},
|
||||
|
||||
/**
|
||||
* {@link Phaser.GameObjects.Components.Animation#play Plays} an animation for all members of this group.
|
||||
* {@link Phaser.Animations.AnimationState#play Plays} an animation for all members of this group.
|
||||
*
|
||||
* @method Phaser.GameObjects.Group#playAnimation
|
||||
* @since 3.0.0
|
||||
|
@ -65546,7 +65556,7 @@ var ParticleEmitter = new Class({
|
|||
* or any object with a suitable {@link Phaser.Types.GameObjects.Particles.EdgeZoneSourceCallback getPoints} method.
|
||||
*
|
||||
* A {@link Phaser.Types.GameObjects.Particles.ParticleEmitterRandomZoneConfig RandomZone} places the particles randomly within its interior.
|
||||
* Its {@link RandomZoneSource source} can be a Circle, Ellipse, Line, Polygon, Rectangle, or Triangle; or any object with a suitable {@link Phaser.Types.GameObjects.Particles.RandomZoneSourceCallback getRandomPoint} method.
|
||||
* Its {@link Phaser.GameObjects.Particles.Zones.RandomZone#source source} can be a Circle, Ellipse, Line, Polygon, Rectangle, or Triangle; or any object with a suitable {@link Phaser.Types.GameObjects.Particles.RandomZoneSourceCallback getRandomPoint} method.
|
||||
*
|
||||
* An Emission Zone can only exist once within this Emitter.
|
||||
*
|
||||
|
@ -81098,16 +81108,29 @@ var GetTextSize = function (text, size, lines)
|
|||
style.syncFont(canvas, context);
|
||||
|
||||
// Text Width
|
||||
var letterSpacing = text.letterSpacing;
|
||||
|
||||
for (var i = 0; i < drawnLines; i++)
|
||||
{
|
||||
var lineWidth = style.strokeThickness;
|
||||
|
||||
lineWidth += context.measureText(lines[i]).width;
|
||||
|
||||
if (lines[i].length > 1)
|
||||
if (letterSpacing === 0)
|
||||
{
|
||||
lineWidth += text.letterSpacing * (lines[i].length - 1);
|
||||
lineWidth += context.measureText(lines[i]).width;
|
||||
}
|
||||
else
|
||||
{
|
||||
var line = lines[i];
|
||||
|
||||
for (var j = 0; j < line.length; j++)
|
||||
{
|
||||
lineWidth += context.measureText(line[j]).width;
|
||||
}
|
||||
|
||||
if (line.length > 1)
|
||||
{
|
||||
lineWidth += letterSpacing * (line.length - 1);
|
||||
}
|
||||
}
|
||||
|
||||
// Adjust for wrapped text
|
||||
|
@ -118323,7 +118346,7 @@ File.createObjectURL = function (image, blob, defaultType)
|
|||
|
||||
/**
|
||||
* Static method for releasing an existing object URL which was previously created
|
||||
* by calling {@link File#createObjectURL} method.
|
||||
* by calling {@link Phaser.Loader.File.createObjectURL} method.
|
||||
*
|
||||
* @method Phaser.Loader.File.revokeObjectURL
|
||||
* @static
|
||||
|
@ -174206,6 +174229,12 @@ var CanvasRenderer = new Class({
|
|||
var gx = sprite.x;
|
||||
var gy = sprite.y;
|
||||
|
||||
if (camera.roundPixels)
|
||||
{
|
||||
gx = Math.floor(gx);
|
||||
gy = Math.floor(gy);
|
||||
}
|
||||
|
||||
spriteMatrix.applyITRS(gx, gy, sprite.rotation, sprite.scaleX * flipX, sprite.scaleY * flipY);
|
||||
|
||||
camMatrix.copyFrom(camera.matrix);
|
||||
|
@ -174228,10 +174257,10 @@ var CanvasRenderer = new Class({
|
|||
// Multiply by the Sprite matrix
|
||||
camMatrix.multiply(spriteMatrix);
|
||||
|
||||
if (camera.roundPixels)
|
||||
if (camera.renderRoundPixels)
|
||||
{
|
||||
camMatrix.e = Math.round(camMatrix.e);
|
||||
camMatrix.f = Math.round(camMatrix.f);
|
||||
camMatrix.e = Math.floor(camMatrix.e + 0.5);
|
||||
camMatrix.f = Math.floor(camMatrix.f + 0.5);
|
||||
}
|
||||
|
||||
ctx.save();
|
||||
|
@ -174251,26 +174280,24 @@ var CanvasRenderer = new Class({
|
|||
|
||||
if (frameWidth > 0 && frameHeight > 0)
|
||||
{
|
||||
var fw = frameWidth / res;
|
||||
var fh = frameHeight / res;
|
||||
|
||||
if (camera.roundPixels)
|
||||
{
|
||||
ctx.drawImage(
|
||||
frame.source.image,
|
||||
frameX, frameY,
|
||||
frameWidth, frameHeight,
|
||||
Math.round(x), Math.round(y),
|
||||
Math.round(frameWidth / res), Math.round(frameHeight / res)
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
ctx.drawImage(
|
||||
frame.source.image,
|
||||
frameX, frameY,
|
||||
frameWidth, frameHeight,
|
||||
x, y,
|
||||
frameWidth / res, frameHeight / res
|
||||
);
|
||||
x = Math.floor(x + 0.5);
|
||||
y = Math.floor(y + 0.5);
|
||||
fw += 0.5;
|
||||
fh += 0.5;
|
||||
}
|
||||
|
||||
ctx.drawImage(
|
||||
frame.source.image,
|
||||
frameX, frameY,
|
||||
frameWidth, frameHeight,
|
||||
x, y,
|
||||
fw, fh
|
||||
);
|
||||
}
|
||||
|
||||
if (sprite.mask)
|
||||
|
@ -176615,7 +176642,7 @@ var RenderTarget = new Class({
|
|||
*/
|
||||
this.forceClamp = forceClamp;
|
||||
|
||||
this.resize(width, height);
|
||||
this.init(width, height);
|
||||
|
||||
if (autoResize)
|
||||
{
|
||||
|
@ -176628,6 +176655,28 @@ var RenderTarget = new Class({
|
|||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Sets up this Render Target to the given width and height, creating a new
|
||||
* frame buffer and texture. This method is called automatically by the constructor
|
||||
* and at no other time.
|
||||
*
|
||||
* @method Phaser.Renderer.WebGL.RenderTarget#init
|
||||
* @since 3.86.0
|
||||
*
|
||||
* @param {number} width - The new width of this Render Target.
|
||||
* @param {number} height - The new height of this Render Target.
|
||||
*/
|
||||
init: function (width, height)
|
||||
{
|
||||
var renderer = this.renderer;
|
||||
|
||||
this.texture = renderer.createTextureFromSource(null, width, height, this.minFilter, this.forceClamp);
|
||||
this.framebuffer = renderer.createFramebuffer(width, height, this.texture, this.hasDepthBuffer);
|
||||
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
},
|
||||
|
||||
/**
|
||||
* Sets if this Render Target should automatically resize when the WebGL Renderer
|
||||
* emits a resize event.
|
||||
|
@ -176665,9 +176714,6 @@ var RenderTarget = new Class({
|
|||
* them using the new sizes.
|
||||
*
|
||||
* This method is called automatically by the pipeline during its resize handler.
|
||||
*
|
||||
* Previous to Phaser v3.85 this method would only run if `autoResize` was `true`,
|
||||
* it will now run regardless.
|
||||
*
|
||||
* @method Phaser.Renderer.WebGL.RenderTarget#resize
|
||||
* @since 3.50.0
|
||||
|
@ -176679,7 +176725,7 @@ var RenderTarget = new Class({
|
|||
*/
|
||||
resize: function (width, height)
|
||||
{
|
||||
if (this.willResize(width, height))
|
||||
if (this.autoResize && this.willResize(width, height))
|
||||
{
|
||||
var renderer = this.renderer;
|
||||
|
||||
|
@ -176711,19 +176757,17 @@ var RenderTarget = new Class({
|
|||
*/
|
||||
willResize: function (width, height)
|
||||
{
|
||||
if (typeof width !== 'number' || typeof height !== 'number')
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
width = Math.round(width * this.scale);
|
||||
height = Math.round(height * this.scale);
|
||||
|
||||
if (width <= 0)
|
||||
{
|
||||
width = 1;
|
||||
}
|
||||
|
||||
if (height <= 0)
|
||||
{
|
||||
height = 1;
|
||||
}
|
||||
|
||||
width = Math.max(width, 1);
|
||||
height = Math.max(height, 1);
|
||||
|
||||
return (width !== this.width || height !== this.height);
|
||||
},
|
||||
|
||||
|
@ -186391,7 +186435,7 @@ var MultiPipeline = new Class({
|
|||
// Multiply by the Sprite matrix, store result in calcMatrix
|
||||
camMatrix.multiply(spriteMatrix, calcMatrix);
|
||||
|
||||
var quad = calcMatrix.setQuad(x, y, x + frameWidth, y + frameHeight, camera.roundPixels);
|
||||
var quad = calcMatrix.setQuad(x, y, x + frameWidth, y + frameHeight, camera.renderRoundPixels);
|
||||
|
||||
var getTint = Utils.getTintAppendFloatAlpha;
|
||||
var cameraAlpha = camera.alpha;
|
||||
|
@ -186575,7 +186619,7 @@ var MultiPipeline = new Class({
|
|||
// Multiply by the Sprite matrix, store result in calcMatrix
|
||||
camMatrix.multiply(spriteMatrix, calcMatrix);
|
||||
|
||||
var quad = calcMatrix.setQuad(x, y, x + width, y + height, camera.roundPixels);
|
||||
var quad = calcMatrix.setQuad(x, y, x + width, y + height, camera.renderRoundPixels);
|
||||
|
||||
if (textureUnit === undefined || textureUnit === null)
|
||||
{
|
||||
|
@ -194782,12 +194826,14 @@ var ScaleManager = new Class({
|
|||
|
||||
this.fullscreen = game.device.fullscreen;
|
||||
|
||||
if ((this.scaleMode !== CONST.SCALE_MODE.RESIZE) && (this.scaleMode !== CONST.SCALE_MODE.EXPAND))
|
||||
var scaleMode = this.scaleMode;
|
||||
|
||||
if (scaleMode !== CONST.SCALE_MODE.RESIZE && scaleMode !== CONST.SCALE_MODE.EXPAND)
|
||||
{
|
||||
this.displaySize.setAspectMode(this.scaleMode);
|
||||
this.displaySize.setAspectMode(scaleMode);
|
||||
}
|
||||
|
||||
if (this.scaleMode === CONST.SCALE_MODE.NONE)
|
||||
if (scaleMode === CONST.SCALE_MODE.NONE)
|
||||
{
|
||||
this.resize(this.width, this.height);
|
||||
}
|
||||
|
@ -195455,18 +195501,16 @@ var ScaleManager = new Class({
|
|||
style.width = styleWidth + 'px';
|
||||
style.height = styleHeight + 'px';
|
||||
|
||||
|
||||
// Expand canvas size to fit game size's width or height
|
||||
|
||||
var scaleX = this.parentSize.width / baseWidth;
|
||||
|
||||
var scaleY = this.parentSize.height / baseHeight;
|
||||
|
||||
if (scaleX < scaleY)
|
||||
if (scaleX < scaleY && scaleX !== 0)
|
||||
{
|
||||
this.baseSize.setSize(baseWidth, this.parentSize.height / scaleX);
|
||||
}
|
||||
else
|
||||
else if (scaleY !== 0)
|
||||
{
|
||||
this.baseSize.setSize(this.displaySize.width / scaleY, baseHeight);
|
||||
}
|
||||
|
@ -228492,15 +228536,17 @@ var HexagonalTileToWorldXY = function (tileX, tileY, point, camera, layer)
|
|||
|
||||
var x;
|
||||
var y;
|
||||
var staggerAxis = layer.staggerAxis;
|
||||
var staggerIndex = layer.staggerIndex;
|
||||
|
||||
if (layer.staggerAxis === 'y')
|
||||
if (staggerAxis === 'y')
|
||||
{
|
||||
x = worldX + (tileWidth * tileX) + tileWidth;
|
||||
y = worldY + ((1.5 * tileY) * tileHeightHalf) + tileHeightHalf;
|
||||
|
||||
if (tileY % 2 === 0)
|
||||
{
|
||||
if (this.staggerIndex === 'odd')
|
||||
if (staggerIndex === 'odd')
|
||||
{
|
||||
x -= tileWidthHalf;
|
||||
}
|
||||
|
@ -228510,14 +228556,14 @@ var HexagonalTileToWorldXY = function (tileX, tileY, point, camera, layer)
|
|||
}
|
||||
}
|
||||
}
|
||||
else if ((this.staggerAxis === 'x') && (this.staggerIndex === 'odd'))
|
||||
else if ((staggerAxis === 'x') && (staggerIndex === 'odd'))
|
||||
{
|
||||
x = worldX + ((1.5 * tileX) * tileWidthHalf) + tileWidthHalf;
|
||||
y = worldY + (tileHeight * tileX) + tileHeight;
|
||||
|
||||
if (tileX % 2 === 0)
|
||||
{
|
||||
if (this.staggerIndex === 'odd')
|
||||
if (staggerIndex === 'odd')
|
||||
{
|
||||
y -= tileHeightHalf;
|
||||
}
|
||||
|
@ -243989,19 +244035,15 @@ var MoveAbove = function (array, item1, item2)
|
|||
return array;
|
||||
}
|
||||
|
||||
// Remove
|
||||
// Remove item1 from its current position
|
||||
array.splice(currentIndex, 1);
|
||||
|
||||
// Add in new location
|
||||
if (baseIndex === array.length - 1)
|
||||
{
|
||||
array.push(item1);
|
||||
}
|
||||
else
|
||||
{
|
||||
array.splice(baseIndex, 0, item1);
|
||||
}
|
||||
// Recalculate baseIndex after removal
|
||||
baseIndex = array.indexOf(item2);
|
||||
|
||||
// Insert item1 immediately after item2
|
||||
array.splice(baseIndex + 1, 0, item1);
|
||||
|
||||
return array;
|
||||
};
|
||||
|
||||
|
|
2
dist/phaser-ie9.min.js
vendored
2
dist/phaser-ie9.min.js
vendored
File diff suppressed because one or more lines are too long
202
dist/phaser.esm.js
vendored
202
dist/phaser.esm.js
vendored
|
@ -8851,6 +8851,22 @@ var BaseCamera = new Class({
|
|||
* @since 3.60.0
|
||||
*/
|
||||
this.isSceneCamera = true;
|
||||
|
||||
/**
|
||||
* Can this Camera render rounded pixel values?
|
||||
*
|
||||
* This property is updated during the `preRender` method and should not be
|
||||
* set directly. It is set based on the `roundPixels` property of the Camera
|
||||
* combined with the zoom level. If the zoom is an integer then the WebGL
|
||||
* Renderer can apply rounding during rendering.
|
||||
*
|
||||
* @name Phaser.Cameras.Scene2D.BaseCamera#renderRoundPixels
|
||||
* @type {boolean}
|
||||
* @readonly
|
||||
* @default true
|
||||
* @since 3.86.0
|
||||
*/
|
||||
this.renderRoundPixels = true;
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -10787,6 +10803,8 @@ var Camera = new Class({
|
|||
var zoomY = this.zoomY;
|
||||
var matrix = this.matrix;
|
||||
|
||||
this.renderRoundPixels = (this.roundPixels && Number.isInteger(zoomX) && Number.isInteger(zoomY));
|
||||
|
||||
var originX = width * this.originX;
|
||||
var originY = height * this.originY;
|
||||
|
||||
|
@ -10875,7 +10893,8 @@ var Camera = new Class({
|
|||
Math.floor(this.x + originX + 0.5),
|
||||
Math.floor(this.y + originY + 0.5),
|
||||
this.rotation,
|
||||
zoomX, zoomY);
|
||||
zoomX, zoomY
|
||||
);
|
||||
|
||||
matrix.translate(-originX, -originY);
|
||||
|
||||
|
@ -15633,7 +15652,7 @@ var CONST = {
|
|||
* @type {string}
|
||||
* @since 3.0.0
|
||||
*/
|
||||
VERSION: '3.85.2',
|
||||
VERSION: '3.86.0',
|
||||
|
||||
BlendModes: __webpack_require__(10312),
|
||||
|
||||
|
@ -47631,6 +47650,8 @@ var Render = __webpack_require__(29959);
|
|||
var Union = __webpack_require__(36899);
|
||||
var Vector2 = __webpack_require__(26099);
|
||||
|
||||
var tempTransformMatrix = new Components.TransformMatrix();
|
||||
|
||||
/**
|
||||
* @classdesc
|
||||
* A Container Game Object.
|
||||
|
@ -47775,16 +47796,6 @@ var Container = new Class({
|
|||
*/
|
||||
this.localTransform = new Components.TransformMatrix();
|
||||
|
||||
/**
|
||||
* Internal temporary Transform Matrix used to avoid object creation.
|
||||
*
|
||||
* @name Phaser.GameObjects.Container#tempTransformMatrix
|
||||
* @type {Phaser.GameObjects.Components.TransformMatrix}
|
||||
* @private
|
||||
* @since 3.4.0
|
||||
*/
|
||||
this.tempTransformMatrix = new Components.TransformMatrix();
|
||||
|
||||
/**
|
||||
* The property key to sort by.
|
||||
*
|
||||
|
@ -48119,7 +48130,7 @@ var Container = new Class({
|
|||
output.y = source.y;
|
||||
}
|
||||
|
||||
var tempMatrix = this.tempTransformMatrix;
|
||||
var tempMatrix = tempTransformMatrix;
|
||||
|
||||
// No need to loadIdentity because applyITRS overwrites every value anyway
|
||||
tempMatrix.applyITRS(this.x, this.y, this.rotation, this.scaleX, this.scaleY);
|
||||
|
@ -48143,7 +48154,7 @@ var Container = new Class({
|
|||
*/
|
||||
getBoundsTransformMatrix: function ()
|
||||
{
|
||||
return this.getWorldTransformMatrix(this.tempTransformMatrix, this.localTransform);
|
||||
return this.getWorldTransformMatrix(tempTransformMatrix, this.localTransform);
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -49066,7 +49077,6 @@ var Container = new Class({
|
|||
this.removeAll(!!this.exclusive);
|
||||
|
||||
this.localTransform.destroy();
|
||||
this.tempTransformMatrix.destroy();
|
||||
|
||||
this.list = [];
|
||||
},
|
||||
|
@ -55031,7 +55041,7 @@ var Group = new Class({
|
|||
},
|
||||
|
||||
/**
|
||||
* {@link Phaser.GameObjects.Components.Animation#play Plays} an animation for all members of this group.
|
||||
* {@link Phaser.Animations.AnimationState#play Plays} an animation for all members of this group.
|
||||
*
|
||||
* @method Phaser.GameObjects.Group#playAnimation
|
||||
* @since 3.0.0
|
||||
|
@ -65534,7 +65544,7 @@ var ParticleEmitter = new Class({
|
|||
* or any object with a suitable {@link Phaser.Types.GameObjects.Particles.EdgeZoneSourceCallback getPoints} method.
|
||||
*
|
||||
* A {@link Phaser.Types.GameObjects.Particles.ParticleEmitterRandomZoneConfig RandomZone} places the particles randomly within its interior.
|
||||
* Its {@link RandomZoneSource source} can be a Circle, Ellipse, Line, Polygon, Rectangle, or Triangle; or any object with a suitable {@link Phaser.Types.GameObjects.Particles.RandomZoneSourceCallback getRandomPoint} method.
|
||||
* Its {@link Phaser.GameObjects.Particles.Zones.RandomZone#source source} can be a Circle, Ellipse, Line, Polygon, Rectangle, or Triangle; or any object with a suitable {@link Phaser.Types.GameObjects.Particles.RandomZoneSourceCallback getRandomPoint} method.
|
||||
*
|
||||
* An Emission Zone can only exist once within this Emitter.
|
||||
*
|
||||
|
@ -81086,16 +81096,29 @@ var GetTextSize = function (text, size, lines)
|
|||
style.syncFont(canvas, context);
|
||||
|
||||
// Text Width
|
||||
var letterSpacing = text.letterSpacing;
|
||||
|
||||
for (var i = 0; i < drawnLines; i++)
|
||||
{
|
||||
var lineWidth = style.strokeThickness;
|
||||
|
||||
lineWidth += context.measureText(lines[i]).width;
|
||||
|
||||
if (lines[i].length > 1)
|
||||
if (letterSpacing === 0)
|
||||
{
|
||||
lineWidth += text.letterSpacing * (lines[i].length - 1);
|
||||
lineWidth += context.measureText(lines[i]).width;
|
||||
}
|
||||
else
|
||||
{
|
||||
var line = lines[i];
|
||||
|
||||
for (var j = 0; j < line.length; j++)
|
||||
{
|
||||
lineWidth += context.measureText(line[j]).width;
|
||||
}
|
||||
|
||||
if (line.length > 1)
|
||||
{
|
||||
lineWidth += letterSpacing * (line.length - 1);
|
||||
}
|
||||
}
|
||||
|
||||
// Adjust for wrapped text
|
||||
|
@ -118310,7 +118333,7 @@ File.createObjectURL = function (image, blob, defaultType)
|
|||
|
||||
/**
|
||||
* Static method for releasing an existing object URL which was previously created
|
||||
* by calling {@link File#createObjectURL} method.
|
||||
* by calling {@link Phaser.Loader.File.createObjectURL} method.
|
||||
*
|
||||
* @method Phaser.Loader.File.revokeObjectURL
|
||||
* @static
|
||||
|
@ -173656,6 +173679,12 @@ var CanvasRenderer = new Class({
|
|||
var gx = sprite.x;
|
||||
var gy = sprite.y;
|
||||
|
||||
if (camera.roundPixels)
|
||||
{
|
||||
gx = Math.floor(gx);
|
||||
gy = Math.floor(gy);
|
||||
}
|
||||
|
||||
spriteMatrix.applyITRS(gx, gy, sprite.rotation, sprite.scaleX * flipX, sprite.scaleY * flipY);
|
||||
|
||||
camMatrix.copyFrom(camera.matrix);
|
||||
|
@ -173678,10 +173707,10 @@ var CanvasRenderer = new Class({
|
|||
// Multiply by the Sprite matrix
|
||||
camMatrix.multiply(spriteMatrix);
|
||||
|
||||
if (camera.roundPixels)
|
||||
if (camera.renderRoundPixels)
|
||||
{
|
||||
camMatrix.e = Math.round(camMatrix.e);
|
||||
camMatrix.f = Math.round(camMatrix.f);
|
||||
camMatrix.e = Math.floor(camMatrix.e + 0.5);
|
||||
camMatrix.f = Math.floor(camMatrix.f + 0.5);
|
||||
}
|
||||
|
||||
ctx.save();
|
||||
|
@ -173701,26 +173730,24 @@ var CanvasRenderer = new Class({
|
|||
|
||||
if (frameWidth > 0 && frameHeight > 0)
|
||||
{
|
||||
var fw = frameWidth / res;
|
||||
var fh = frameHeight / res;
|
||||
|
||||
if (camera.roundPixels)
|
||||
{
|
||||
ctx.drawImage(
|
||||
frame.source.image,
|
||||
frameX, frameY,
|
||||
frameWidth, frameHeight,
|
||||
Math.round(x), Math.round(y),
|
||||
Math.round(frameWidth / res), Math.round(frameHeight / res)
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
ctx.drawImage(
|
||||
frame.source.image,
|
||||
frameX, frameY,
|
||||
frameWidth, frameHeight,
|
||||
x, y,
|
||||
frameWidth / res, frameHeight / res
|
||||
);
|
||||
x = Math.floor(x + 0.5);
|
||||
y = Math.floor(y + 0.5);
|
||||
fw += 0.5;
|
||||
fh += 0.5;
|
||||
}
|
||||
|
||||
ctx.drawImage(
|
||||
frame.source.image,
|
||||
frameX, frameY,
|
||||
frameWidth, frameHeight,
|
||||
x, y,
|
||||
fw, fh
|
||||
);
|
||||
}
|
||||
|
||||
if (sprite.mask)
|
||||
|
@ -176065,7 +176092,7 @@ var RenderTarget = new Class({
|
|||
*/
|
||||
this.forceClamp = forceClamp;
|
||||
|
||||
this.resize(width, height);
|
||||
this.init(width, height);
|
||||
|
||||
if (autoResize)
|
||||
{
|
||||
|
@ -176078,6 +176105,28 @@ var RenderTarget = new Class({
|
|||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Sets up this Render Target to the given width and height, creating a new
|
||||
* frame buffer and texture. This method is called automatically by the constructor
|
||||
* and at no other time.
|
||||
*
|
||||
* @method Phaser.Renderer.WebGL.RenderTarget#init
|
||||
* @since 3.86.0
|
||||
*
|
||||
* @param {number} width - The new width of this Render Target.
|
||||
* @param {number} height - The new height of this Render Target.
|
||||
*/
|
||||
init: function (width, height)
|
||||
{
|
||||
var renderer = this.renderer;
|
||||
|
||||
this.texture = renderer.createTextureFromSource(null, width, height, this.minFilter, this.forceClamp);
|
||||
this.framebuffer = renderer.createFramebuffer(width, height, this.texture, this.hasDepthBuffer);
|
||||
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
},
|
||||
|
||||
/**
|
||||
* Sets if this Render Target should automatically resize when the WebGL Renderer
|
||||
* emits a resize event.
|
||||
|
@ -176115,9 +176164,6 @@ var RenderTarget = new Class({
|
|||
* them using the new sizes.
|
||||
*
|
||||
* This method is called automatically by the pipeline during its resize handler.
|
||||
*
|
||||
* Previous to Phaser v3.85 this method would only run if `autoResize` was `true`,
|
||||
* it will now run regardless.
|
||||
*
|
||||
* @method Phaser.Renderer.WebGL.RenderTarget#resize
|
||||
* @since 3.50.0
|
||||
|
@ -176129,7 +176175,7 @@ var RenderTarget = new Class({
|
|||
*/
|
||||
resize: function (width, height)
|
||||
{
|
||||
if (this.willResize(width, height))
|
||||
if (this.autoResize && this.willResize(width, height))
|
||||
{
|
||||
var renderer = this.renderer;
|
||||
|
||||
|
@ -176161,19 +176207,17 @@ var RenderTarget = new Class({
|
|||
*/
|
||||
willResize: function (width, height)
|
||||
{
|
||||
if (typeof width !== 'number' || typeof height !== 'number')
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
width = Math.round(width * this.scale);
|
||||
height = Math.round(height * this.scale);
|
||||
|
||||
if (width <= 0)
|
||||
{
|
||||
width = 1;
|
||||
}
|
||||
|
||||
if (height <= 0)
|
||||
{
|
||||
height = 1;
|
||||
}
|
||||
|
||||
width = Math.max(width, 1);
|
||||
height = Math.max(height, 1);
|
||||
|
||||
return (width !== this.width || height !== this.height);
|
||||
},
|
||||
|
||||
|
@ -185841,7 +185885,7 @@ var MultiPipeline = new Class({
|
|||
// Multiply by the Sprite matrix, store result in calcMatrix
|
||||
camMatrix.multiply(spriteMatrix, calcMatrix);
|
||||
|
||||
var quad = calcMatrix.setQuad(x, y, x + frameWidth, y + frameHeight, camera.roundPixels);
|
||||
var quad = calcMatrix.setQuad(x, y, x + frameWidth, y + frameHeight, camera.renderRoundPixels);
|
||||
|
||||
var getTint = Utils.getTintAppendFloatAlpha;
|
||||
var cameraAlpha = camera.alpha;
|
||||
|
@ -186025,7 +186069,7 @@ var MultiPipeline = new Class({
|
|||
// Multiply by the Sprite matrix, store result in calcMatrix
|
||||
camMatrix.multiply(spriteMatrix, calcMatrix);
|
||||
|
||||
var quad = calcMatrix.setQuad(x, y, x + width, y + height, camera.roundPixels);
|
||||
var quad = calcMatrix.setQuad(x, y, x + width, y + height, camera.renderRoundPixels);
|
||||
|
||||
if (textureUnit === undefined || textureUnit === null)
|
||||
{
|
||||
|
@ -194232,12 +194276,14 @@ var ScaleManager = new Class({
|
|||
|
||||
this.fullscreen = game.device.fullscreen;
|
||||
|
||||
if ((this.scaleMode !== CONST.SCALE_MODE.RESIZE) && (this.scaleMode !== CONST.SCALE_MODE.EXPAND))
|
||||
var scaleMode = this.scaleMode;
|
||||
|
||||
if (scaleMode !== CONST.SCALE_MODE.RESIZE && scaleMode !== CONST.SCALE_MODE.EXPAND)
|
||||
{
|
||||
this.displaySize.setAspectMode(this.scaleMode);
|
||||
this.displaySize.setAspectMode(scaleMode);
|
||||
}
|
||||
|
||||
if (this.scaleMode === CONST.SCALE_MODE.NONE)
|
||||
if (scaleMode === CONST.SCALE_MODE.NONE)
|
||||
{
|
||||
this.resize(this.width, this.height);
|
||||
}
|
||||
|
@ -194905,18 +194951,16 @@ var ScaleManager = new Class({
|
|||
style.width = styleWidth + 'px';
|
||||
style.height = styleHeight + 'px';
|
||||
|
||||
|
||||
// Expand canvas size to fit game size's width or height
|
||||
|
||||
var scaleX = this.parentSize.width / baseWidth;
|
||||
|
||||
var scaleY = this.parentSize.height / baseHeight;
|
||||
|
||||
if (scaleX < scaleY)
|
||||
if (scaleX < scaleY && scaleX !== 0)
|
||||
{
|
||||
this.baseSize.setSize(baseWidth, this.parentSize.height / scaleX);
|
||||
}
|
||||
else
|
||||
else if (scaleY !== 0)
|
||||
{
|
||||
this.baseSize.setSize(this.displaySize.width / scaleY, baseHeight);
|
||||
}
|
||||
|
@ -227942,15 +227986,17 @@ var HexagonalTileToWorldXY = function (tileX, tileY, point, camera, layer)
|
|||
|
||||
var x;
|
||||
var y;
|
||||
var staggerAxis = layer.staggerAxis;
|
||||
var staggerIndex = layer.staggerIndex;
|
||||
|
||||
if (layer.staggerAxis === 'y')
|
||||
if (staggerAxis === 'y')
|
||||
{
|
||||
x = worldX + (tileWidth * tileX) + tileWidth;
|
||||
y = worldY + ((1.5 * tileY) * tileHeightHalf) + tileHeightHalf;
|
||||
|
||||
if (tileY % 2 === 0)
|
||||
{
|
||||
if (this.staggerIndex === 'odd')
|
||||
if (staggerIndex === 'odd')
|
||||
{
|
||||
x -= tileWidthHalf;
|
||||
}
|
||||
|
@ -227960,14 +228006,14 @@ var HexagonalTileToWorldXY = function (tileX, tileY, point, camera, layer)
|
|||
}
|
||||
}
|
||||
}
|
||||
else if ((this.staggerAxis === 'x') && (this.staggerIndex === 'odd'))
|
||||
else if ((staggerAxis === 'x') && (staggerIndex === 'odd'))
|
||||
{
|
||||
x = worldX + ((1.5 * tileX) * tileWidthHalf) + tileWidthHalf;
|
||||
y = worldY + (tileHeight * tileX) + tileHeight;
|
||||
|
||||
if (tileX % 2 === 0)
|
||||
{
|
||||
if (this.staggerIndex === 'odd')
|
||||
if (staggerIndex === 'odd')
|
||||
{
|
||||
y -= tileHeightHalf;
|
||||
}
|
||||
|
@ -243439,19 +243485,15 @@ var MoveAbove = function (array, item1, item2)
|
|||
return array;
|
||||
}
|
||||
|
||||
// Remove
|
||||
// Remove item1 from its current position
|
||||
array.splice(currentIndex, 1);
|
||||
|
||||
// Add in new location
|
||||
if (baseIndex === array.length - 1)
|
||||
{
|
||||
array.push(item1);
|
||||
}
|
||||
else
|
||||
{
|
||||
array.splice(baseIndex, 0, item1);
|
||||
}
|
||||
// Recalculate baseIndex after removal
|
||||
baseIndex = array.indexOf(item2);
|
||||
|
||||
// Insert item1 immediately after item2
|
||||
array.splice(baseIndex + 1, 0, item1);
|
||||
|
||||
return array;
|
||||
};
|
||||
|
||||
|
|
2
dist/phaser.esm.min.js
vendored
2
dist/phaser.esm.min.js
vendored
File diff suppressed because one or more lines are too long
202
dist/phaser.js
vendored
202
dist/phaser.js
vendored
|
@ -8863,6 +8863,22 @@ var BaseCamera = new Class({
|
|||
* @since 3.60.0
|
||||
*/
|
||||
this.isSceneCamera = true;
|
||||
|
||||
/**
|
||||
* Can this Camera render rounded pixel values?
|
||||
*
|
||||
* This property is updated during the `preRender` method and should not be
|
||||
* set directly. It is set based on the `roundPixels` property of the Camera
|
||||
* combined with the zoom level. If the zoom is an integer then the WebGL
|
||||
* Renderer can apply rounding during rendering.
|
||||
*
|
||||
* @name Phaser.Cameras.Scene2D.BaseCamera#renderRoundPixels
|
||||
* @type {boolean}
|
||||
* @readonly
|
||||
* @default true
|
||||
* @since 3.86.0
|
||||
*/
|
||||
this.renderRoundPixels = true;
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -10799,6 +10815,8 @@ var Camera = new Class({
|
|||
var zoomY = this.zoomY;
|
||||
var matrix = this.matrix;
|
||||
|
||||
this.renderRoundPixels = (this.roundPixels && Number.isInteger(zoomX) && Number.isInteger(zoomY));
|
||||
|
||||
var originX = width * this.originX;
|
||||
var originY = height * this.originY;
|
||||
|
||||
|
@ -10887,7 +10905,8 @@ var Camera = new Class({
|
|||
Math.floor(this.x + originX + 0.5),
|
||||
Math.floor(this.y + originY + 0.5),
|
||||
this.rotation,
|
||||
zoomX, zoomY);
|
||||
zoomX, zoomY
|
||||
);
|
||||
|
||||
matrix.translate(-originX, -originY);
|
||||
|
||||
|
@ -15645,7 +15664,7 @@ var CONST = {
|
|||
* @type {string}
|
||||
* @since 3.0.0
|
||||
*/
|
||||
VERSION: '3.85.2',
|
||||
VERSION: '3.86.0',
|
||||
|
||||
BlendModes: __webpack_require__(10312),
|
||||
|
||||
|
@ -47643,6 +47662,8 @@ var Render = __webpack_require__(29959);
|
|||
var Union = __webpack_require__(36899);
|
||||
var Vector2 = __webpack_require__(26099);
|
||||
|
||||
var tempTransformMatrix = new Components.TransformMatrix();
|
||||
|
||||
/**
|
||||
* @classdesc
|
||||
* A Container Game Object.
|
||||
|
@ -47787,16 +47808,6 @@ var Container = new Class({
|
|||
*/
|
||||
this.localTransform = new Components.TransformMatrix();
|
||||
|
||||
/**
|
||||
* Internal temporary Transform Matrix used to avoid object creation.
|
||||
*
|
||||
* @name Phaser.GameObjects.Container#tempTransformMatrix
|
||||
* @type {Phaser.GameObjects.Components.TransformMatrix}
|
||||
* @private
|
||||
* @since 3.4.0
|
||||
*/
|
||||
this.tempTransformMatrix = new Components.TransformMatrix();
|
||||
|
||||
/**
|
||||
* The property key to sort by.
|
||||
*
|
||||
|
@ -48131,7 +48142,7 @@ var Container = new Class({
|
|||
output.y = source.y;
|
||||
}
|
||||
|
||||
var tempMatrix = this.tempTransformMatrix;
|
||||
var tempMatrix = tempTransformMatrix;
|
||||
|
||||
// No need to loadIdentity because applyITRS overwrites every value anyway
|
||||
tempMatrix.applyITRS(this.x, this.y, this.rotation, this.scaleX, this.scaleY);
|
||||
|
@ -48155,7 +48166,7 @@ var Container = new Class({
|
|||
*/
|
||||
getBoundsTransformMatrix: function ()
|
||||
{
|
||||
return this.getWorldTransformMatrix(this.tempTransformMatrix, this.localTransform);
|
||||
return this.getWorldTransformMatrix(tempTransformMatrix, this.localTransform);
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -49078,7 +49089,6 @@ var Container = new Class({
|
|||
this.removeAll(!!this.exclusive);
|
||||
|
||||
this.localTransform.destroy();
|
||||
this.tempTransformMatrix.destroy();
|
||||
|
||||
this.list = [];
|
||||
},
|
||||
|
@ -55043,7 +55053,7 @@ var Group = new Class({
|
|||
},
|
||||
|
||||
/**
|
||||
* {@link Phaser.GameObjects.Components.Animation#play Plays} an animation for all members of this group.
|
||||
* {@link Phaser.Animations.AnimationState#play Plays} an animation for all members of this group.
|
||||
*
|
||||
* @method Phaser.GameObjects.Group#playAnimation
|
||||
* @since 3.0.0
|
||||
|
@ -65546,7 +65556,7 @@ var ParticleEmitter = new Class({
|
|||
* or any object with a suitable {@link Phaser.Types.GameObjects.Particles.EdgeZoneSourceCallback getPoints} method.
|
||||
*
|
||||
* A {@link Phaser.Types.GameObjects.Particles.ParticleEmitterRandomZoneConfig RandomZone} places the particles randomly within its interior.
|
||||
* Its {@link RandomZoneSource source} can be a Circle, Ellipse, Line, Polygon, Rectangle, or Triangle; or any object with a suitable {@link Phaser.Types.GameObjects.Particles.RandomZoneSourceCallback getRandomPoint} method.
|
||||
* Its {@link Phaser.GameObjects.Particles.Zones.RandomZone#source source} can be a Circle, Ellipse, Line, Polygon, Rectangle, or Triangle; or any object with a suitable {@link Phaser.Types.GameObjects.Particles.RandomZoneSourceCallback getRandomPoint} method.
|
||||
*
|
||||
* An Emission Zone can only exist once within this Emitter.
|
||||
*
|
||||
|
@ -81098,16 +81108,29 @@ var GetTextSize = function (text, size, lines)
|
|||
style.syncFont(canvas, context);
|
||||
|
||||
// Text Width
|
||||
var letterSpacing = text.letterSpacing;
|
||||
|
||||
for (var i = 0; i < drawnLines; i++)
|
||||
{
|
||||
var lineWidth = style.strokeThickness;
|
||||
|
||||
lineWidth += context.measureText(lines[i]).width;
|
||||
|
||||
if (lines[i].length > 1)
|
||||
if (letterSpacing === 0)
|
||||
{
|
||||
lineWidth += text.letterSpacing * (lines[i].length - 1);
|
||||
lineWidth += context.measureText(lines[i]).width;
|
||||
}
|
||||
else
|
||||
{
|
||||
var line = lines[i];
|
||||
|
||||
for (var j = 0; j < line.length; j++)
|
||||
{
|
||||
lineWidth += context.measureText(line[j]).width;
|
||||
}
|
||||
|
||||
if (line.length > 1)
|
||||
{
|
||||
lineWidth += letterSpacing * (line.length - 1);
|
||||
}
|
||||
}
|
||||
|
||||
// Adjust for wrapped text
|
||||
|
@ -118323,7 +118346,7 @@ File.createObjectURL = function (image, blob, defaultType)
|
|||
|
||||
/**
|
||||
* Static method for releasing an existing object URL which was previously created
|
||||
* by calling {@link File#createObjectURL} method.
|
||||
* by calling {@link Phaser.Loader.File.createObjectURL} method.
|
||||
*
|
||||
* @method Phaser.Loader.File.revokeObjectURL
|
||||
* @static
|
||||
|
@ -173764,6 +173787,12 @@ var CanvasRenderer = new Class({
|
|||
var gx = sprite.x;
|
||||
var gy = sprite.y;
|
||||
|
||||
if (camera.roundPixels)
|
||||
{
|
||||
gx = Math.floor(gx);
|
||||
gy = Math.floor(gy);
|
||||
}
|
||||
|
||||
spriteMatrix.applyITRS(gx, gy, sprite.rotation, sprite.scaleX * flipX, sprite.scaleY * flipY);
|
||||
|
||||
camMatrix.copyFrom(camera.matrix);
|
||||
|
@ -173786,10 +173815,10 @@ var CanvasRenderer = new Class({
|
|||
// Multiply by the Sprite matrix
|
||||
camMatrix.multiply(spriteMatrix);
|
||||
|
||||
if (camera.roundPixels)
|
||||
if (camera.renderRoundPixels)
|
||||
{
|
||||
camMatrix.e = Math.round(camMatrix.e);
|
||||
camMatrix.f = Math.round(camMatrix.f);
|
||||
camMatrix.e = Math.floor(camMatrix.e + 0.5);
|
||||
camMatrix.f = Math.floor(camMatrix.f + 0.5);
|
||||
}
|
||||
|
||||
ctx.save();
|
||||
|
@ -173809,26 +173838,24 @@ var CanvasRenderer = new Class({
|
|||
|
||||
if (frameWidth > 0 && frameHeight > 0)
|
||||
{
|
||||
var fw = frameWidth / res;
|
||||
var fh = frameHeight / res;
|
||||
|
||||
if (camera.roundPixels)
|
||||
{
|
||||
ctx.drawImage(
|
||||
frame.source.image,
|
||||
frameX, frameY,
|
||||
frameWidth, frameHeight,
|
||||
Math.round(x), Math.round(y),
|
||||
Math.round(frameWidth / res), Math.round(frameHeight / res)
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
ctx.drawImage(
|
||||
frame.source.image,
|
||||
frameX, frameY,
|
||||
frameWidth, frameHeight,
|
||||
x, y,
|
||||
frameWidth / res, frameHeight / res
|
||||
);
|
||||
x = Math.floor(x + 0.5);
|
||||
y = Math.floor(y + 0.5);
|
||||
fw += 0.5;
|
||||
fh += 0.5;
|
||||
}
|
||||
|
||||
ctx.drawImage(
|
||||
frame.source.image,
|
||||
frameX, frameY,
|
||||
frameWidth, frameHeight,
|
||||
x, y,
|
||||
fw, fh
|
||||
);
|
||||
}
|
||||
|
||||
if (sprite.mask)
|
||||
|
@ -176173,7 +176200,7 @@ var RenderTarget = new Class({
|
|||
*/
|
||||
this.forceClamp = forceClamp;
|
||||
|
||||
this.resize(width, height);
|
||||
this.init(width, height);
|
||||
|
||||
if (autoResize)
|
||||
{
|
||||
|
@ -176186,6 +176213,28 @@ var RenderTarget = new Class({
|
|||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Sets up this Render Target to the given width and height, creating a new
|
||||
* frame buffer and texture. This method is called automatically by the constructor
|
||||
* and at no other time.
|
||||
*
|
||||
* @method Phaser.Renderer.WebGL.RenderTarget#init
|
||||
* @since 3.86.0
|
||||
*
|
||||
* @param {number} width - The new width of this Render Target.
|
||||
* @param {number} height - The new height of this Render Target.
|
||||
*/
|
||||
init: function (width, height)
|
||||
{
|
||||
var renderer = this.renderer;
|
||||
|
||||
this.texture = renderer.createTextureFromSource(null, width, height, this.minFilter, this.forceClamp);
|
||||
this.framebuffer = renderer.createFramebuffer(width, height, this.texture, this.hasDepthBuffer);
|
||||
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
},
|
||||
|
||||
/**
|
||||
* Sets if this Render Target should automatically resize when the WebGL Renderer
|
||||
* emits a resize event.
|
||||
|
@ -176223,9 +176272,6 @@ var RenderTarget = new Class({
|
|||
* them using the new sizes.
|
||||
*
|
||||
* This method is called automatically by the pipeline during its resize handler.
|
||||
*
|
||||
* Previous to Phaser v3.85 this method would only run if `autoResize` was `true`,
|
||||
* it will now run regardless.
|
||||
*
|
||||
* @method Phaser.Renderer.WebGL.RenderTarget#resize
|
||||
* @since 3.50.0
|
||||
|
@ -176237,7 +176283,7 @@ var RenderTarget = new Class({
|
|||
*/
|
||||
resize: function (width, height)
|
||||
{
|
||||
if (this.willResize(width, height))
|
||||
if (this.autoResize && this.willResize(width, height))
|
||||
{
|
||||
var renderer = this.renderer;
|
||||
|
||||
|
@ -176269,19 +176315,17 @@ var RenderTarget = new Class({
|
|||
*/
|
||||
willResize: function (width, height)
|
||||
{
|
||||
if (typeof width !== 'number' || typeof height !== 'number')
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
width = Math.round(width * this.scale);
|
||||
height = Math.round(height * this.scale);
|
||||
|
||||
if (width <= 0)
|
||||
{
|
||||
width = 1;
|
||||
}
|
||||
|
||||
if (height <= 0)
|
||||
{
|
||||
height = 1;
|
||||
}
|
||||
|
||||
width = Math.max(width, 1);
|
||||
height = Math.max(height, 1);
|
||||
|
||||
return (width !== this.width || height !== this.height);
|
||||
},
|
||||
|
||||
|
@ -185949,7 +185993,7 @@ var MultiPipeline = new Class({
|
|||
// Multiply by the Sprite matrix, store result in calcMatrix
|
||||
camMatrix.multiply(spriteMatrix, calcMatrix);
|
||||
|
||||
var quad = calcMatrix.setQuad(x, y, x + frameWidth, y + frameHeight, camera.roundPixels);
|
||||
var quad = calcMatrix.setQuad(x, y, x + frameWidth, y + frameHeight, camera.renderRoundPixels);
|
||||
|
||||
var getTint = Utils.getTintAppendFloatAlpha;
|
||||
var cameraAlpha = camera.alpha;
|
||||
|
@ -186133,7 +186177,7 @@ var MultiPipeline = new Class({
|
|||
// Multiply by the Sprite matrix, store result in calcMatrix
|
||||
camMatrix.multiply(spriteMatrix, calcMatrix);
|
||||
|
||||
var quad = calcMatrix.setQuad(x, y, x + width, y + height, camera.roundPixels);
|
||||
var quad = calcMatrix.setQuad(x, y, x + width, y + height, camera.renderRoundPixels);
|
||||
|
||||
if (textureUnit === undefined || textureUnit === null)
|
||||
{
|
||||
|
@ -194340,12 +194384,14 @@ var ScaleManager = new Class({
|
|||
|
||||
this.fullscreen = game.device.fullscreen;
|
||||
|
||||
if ((this.scaleMode !== CONST.SCALE_MODE.RESIZE) && (this.scaleMode !== CONST.SCALE_MODE.EXPAND))
|
||||
var scaleMode = this.scaleMode;
|
||||
|
||||
if (scaleMode !== CONST.SCALE_MODE.RESIZE && scaleMode !== CONST.SCALE_MODE.EXPAND)
|
||||
{
|
||||
this.displaySize.setAspectMode(this.scaleMode);
|
||||
this.displaySize.setAspectMode(scaleMode);
|
||||
}
|
||||
|
||||
if (this.scaleMode === CONST.SCALE_MODE.NONE)
|
||||
if (scaleMode === CONST.SCALE_MODE.NONE)
|
||||
{
|
||||
this.resize(this.width, this.height);
|
||||
}
|
||||
|
@ -195013,18 +195059,16 @@ var ScaleManager = new Class({
|
|||
style.width = styleWidth + 'px';
|
||||
style.height = styleHeight + 'px';
|
||||
|
||||
|
||||
// Expand canvas size to fit game size's width or height
|
||||
|
||||
var scaleX = this.parentSize.width / baseWidth;
|
||||
|
||||
var scaleY = this.parentSize.height / baseHeight;
|
||||
|
||||
if (scaleX < scaleY)
|
||||
if (scaleX < scaleY && scaleX !== 0)
|
||||
{
|
||||
this.baseSize.setSize(baseWidth, this.parentSize.height / scaleX);
|
||||
}
|
||||
else
|
||||
else if (scaleY !== 0)
|
||||
{
|
||||
this.baseSize.setSize(this.displaySize.width / scaleY, baseHeight);
|
||||
}
|
||||
|
@ -228050,15 +228094,17 @@ var HexagonalTileToWorldXY = function (tileX, tileY, point, camera, layer)
|
|||
|
||||
var x;
|
||||
var y;
|
||||
var staggerAxis = layer.staggerAxis;
|
||||
var staggerIndex = layer.staggerIndex;
|
||||
|
||||
if (layer.staggerAxis === 'y')
|
||||
if (staggerAxis === 'y')
|
||||
{
|
||||
x = worldX + (tileWidth * tileX) + tileWidth;
|
||||
y = worldY + ((1.5 * tileY) * tileHeightHalf) + tileHeightHalf;
|
||||
|
||||
if (tileY % 2 === 0)
|
||||
{
|
||||
if (this.staggerIndex === 'odd')
|
||||
if (staggerIndex === 'odd')
|
||||
{
|
||||
x -= tileWidthHalf;
|
||||
}
|
||||
|
@ -228068,14 +228114,14 @@ var HexagonalTileToWorldXY = function (tileX, tileY, point, camera, layer)
|
|||
}
|
||||
}
|
||||
}
|
||||
else if ((this.staggerAxis === 'x') && (this.staggerIndex === 'odd'))
|
||||
else if ((staggerAxis === 'x') && (staggerIndex === 'odd'))
|
||||
{
|
||||
x = worldX + ((1.5 * tileX) * tileWidthHalf) + tileWidthHalf;
|
||||
y = worldY + (tileHeight * tileX) + tileHeight;
|
||||
|
||||
if (tileX % 2 === 0)
|
||||
{
|
||||
if (this.staggerIndex === 'odd')
|
||||
if (staggerIndex === 'odd')
|
||||
{
|
||||
y -= tileHeightHalf;
|
||||
}
|
||||
|
@ -243547,19 +243593,15 @@ var MoveAbove = function (array, item1, item2)
|
|||
return array;
|
||||
}
|
||||
|
||||
// Remove
|
||||
// Remove item1 from its current position
|
||||
array.splice(currentIndex, 1);
|
||||
|
||||
// Add in new location
|
||||
if (baseIndex === array.length - 1)
|
||||
{
|
||||
array.push(item1);
|
||||
}
|
||||
else
|
||||
{
|
||||
array.splice(baseIndex, 0, item1);
|
||||
}
|
||||
// Recalculate baseIndex after removal
|
||||
baseIndex = array.indexOf(item2);
|
||||
|
||||
// Insert item1 immediately after item2
|
||||
array.splice(baseIndex + 1, 0, item1);
|
||||
|
||||
return array;
|
||||
};
|
||||
|
||||
|
|
2
dist/phaser.min.js
vendored
2
dist/phaser.min.js
vendored
File diff suppressed because one or more lines are too long
33482
types/phaser.d.ts
vendored
33482
types/phaser.d.ts
vendored
File diff suppressed because it is too large
Load diff
570601
types/phaser.json
570601
types/phaser.json
File diff suppressed because one or more lines are too long
Loading…
Reference in a new issue