Skip to content

Commit edc0766

Browse files
committed
New Resize handler. Fix phaserjs#5412
1 parent e12172f commit edc0766

1 file changed

Lines changed: 45 additions & 11 deletions

File tree

src/gameobjects/rendertexture/RenderTexture.js

Lines changed: 45 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ var GameObject = require('../GameObject');
1515
var NOOP = require('../../utils/NOOP');
1616
var PIPELINE_CONST = require('../../renderer/webgl/pipelines/const');
1717
var Render = require('./RenderTextureRender');
18+
var RenderEvents = require('../../renderer/webgl/events');
1819
var RenderTarget = require('../../renderer/webgl/RenderTarget');
1920
var Utils = require('../../renderer/webgl/Utils');
2021
var UUID = require('../../utils/string/UUID');
@@ -286,6 +287,8 @@ var RenderTexture = new Class({
286287
this.setOrigin(0, 0);
287288

288289
this.initPipeline(PIPELINE_CONST.SINGLE_PIPELINE);
290+
291+
renderer.on(RenderEvents.RESIZE, this.onResize, this);
289292
},
290293

291294
/**
@@ -304,6 +307,34 @@ var RenderTexture = new Class({
304307
return this.resize(width, height);
305308
},
306309

310+
/**
311+
* Internal renderer resize handler.
312+
*
313+
* @method Phaser.GameObjects.RenderTexture#onResize
314+
* @private
315+
* @since 3.50.0
316+
*
317+
* @param {number} width - The width of the renderer.
318+
* @param {number} height - The height of the renderer.
319+
*/
320+
onResize: function (width, height)
321+
{
322+
var camera = this.camera;
323+
var renderTarget = this.renderTarget;
324+
325+
if (renderTarget)
326+
{
327+
var renderer = this.renderer;
328+
var rendererWidth = renderer.width;
329+
var rendererHeight = renderer.height;
330+
331+
var zoomX = rendererWidth / width;
332+
var zoomY = rendererHeight / height;
333+
334+
camera.setZoom(zoomX, zoomY);
335+
}
336+
},
337+
307338
/**
308339
* Resizes the Render Texture to the new dimensions given.
309340
*
@@ -371,7 +402,11 @@ var RenderTexture = new Class({
371402
var zoomY = rendererHeight / height;
372403

373404
camera.setSize(width, height);
374-
camera.setZoom(zoomX, zoomY);
405+
406+
if (renderTarget)
407+
{
408+
camera.setZoom(zoomX, zoomY);
409+
}
375410

376411
var ox = 0.5;
377412
var oy = 0.5;
@@ -1290,20 +1325,17 @@ var RenderTexture = new Class({
12901325

12911326
var matrix = this.camera.matrix;
12921327

1293-
ctx.globalAlpha = alpha;
1328+
ctx.save();
12941329

1295-
if (this._eraseMode)
1296-
{
1297-
ctx.globalCompositeOperation = 'destination-out';
1298-
}
1299-
else
1300-
{
1301-
ctx.globalCompositeOperation = 'source-over';
1302-
}
1330+
ctx.globalCompositeOperation = (this._eraseMode) ? 'destination-out' : 'source-over';
13031331

1304-
ctx.setTransform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);
1332+
ctx.globalAlpha = alpha;
1333+
1334+
matrix.setToContext(ctx);
13051335

13061336
ctx.drawImage(source, cd.x, cd.y, cd.width, cd.height, x, y, cd.width, cd.height);
1337+
1338+
ctx.restore();
13071339
}
13081340
},
13091341

@@ -1424,6 +1456,8 @@ var RenderTexture = new Class({
14241456
*/
14251457
preDestroy: function ()
14261458
{
1459+
this.renderer.off(RenderEvents.RESIZE, this.onResize, this);
1460+
14271461
if (!this._saved)
14281462
{
14291463
CanvasPool.remove(this.canvas);

0 commit comments

Comments
 (0)