New Features
GameObjects.DOMElement.pointerEvents
is a new property that allows you to set thepointerEvents
attribute on the DOM Element CSS. This isauto
by default and should not be changed unless you know what you're doing.Core.Config.domPointerEvents
is a new config property set viadom: { pointerEvents }
within the Game Config that allows you to set thepointerEvents
css attribute on the DOM Element container.- The
RenderTexture.endDraw
method has a new optional booleanerase
which allows you to draw all objects in the batch using a blend mode of ERASE. This has the effect of erasing any filled pixels in the objects being drawn. - All of the methods from the
GraphicsPipeline
have now been merged with theMultiPipeline
, these includebatchFillRect
,batchFillTriangle
,batchStrokeTriangle
,batchFillPath
,batchStrokePath
andbatchLine
. The Graphics Game Object and all of the Shape Game Objects have been updated to use the new Multi Pipeline. This means that drawing Sprites and Graphics / Shapes will all batch together again. Fix #5553 #5500 (thanks @venarius @roberthook823)
Updates
- The types have been improved for WebGL Compressed Textures (thanks @vforsh)
Container.moveAbove
is a new method that will move a Game Object above another in the same Container (thanks @rexrainbow)Container.moveBelow
is a new method that will move a Game Object below another in the same Container (thanks @rexrainbow)List.moveAbove
is a new method that will move a Game Object above another in the same List (thanks @rexrainbow)List.moveBelow
is a new method that will move a Game Object below another in the same List (thanks @rexrainbow)- The
MeasureText
function, as used by Text Game Objects, has had its performance enhanced by removing a duplicate image data check and also now checks for metrics properties correctly (thanks @valadaptive) WebGLShader.setUniform1
has a new optional boolean parameterskipCheck
which will force the function to set the values without checking against the previously held ones.WebGLShader.setUniform2
has a new optional boolean parameterskipCheck
which will force the function to set the values without checking against the previously held ones.WebGLShader.setUniform3
has a new optional boolean parameterskipCheck
which will force the function to set the values without checking against the previously held ones.WebGLShader.setUniform4
has a new optional boolean parameterskipCheck
which will force the function to set the values without checking against the previously held ones.- The
WebGLShader.set1fv
,set2fv
,set3fv
,set4fv
,set1iv
,set2iv
,set3iv
,set4iv
,setMatrix2fv
,setMatrix3fv
andsetMatrix4fv
methods no longer try to do array comparisons when setting the uniforms, but sets them directly. Fix #5670 (thanks @telinc1)
Bug Fixes
- Have reverted all of the DOM Element CSS changes back to how they were in 3.52, causing both DOM Input and Phaser Input to work together properly again. Fix #5628 (thanks @sacharobarts)
- The
Mesh
Game Object would incorrectly cull faces if the Scene Camera scrolled. It now calculates the cull correctly, regardless of camera world position, zoom or rotation. Fix #5570 (thanks @hendrikras) Math.ToXY
will now return an empty Vector 2 if the index is out of range, where before it would return the input Vector2 (thanks @Trissolo)- The
UpdateList.shutdown
method will now remove thePRE_UPDATE
handler from the ProcessQueue correctly (thanks @samme) - When loading a Video with a config object, it would not get the correct
key
value from it (thanks @mattjennings) - The
GameObjectFactory.existing
method will now acceptLayer
as a TypeScript type. Fix #5642 (thanks @michal-bures) - The
Input.Pointer.event
property can now be aWheelEvent
as well. - Fixed an issue when loading audio files from a Phaser project wrapped in Capacitor native app shell on iOS (thanks @consolenaut)
- Video would not resume playing after regaining focus swapping from another browser tab. Fix #5377 (thanks @spayton)
- Container will now invoke
addToRenderList
before leaving the render method, fixing an issue with Container Input. Fix #5506 (thanks @vforsh @rexrainbow) - The
Game.postBoot
callback was never being invoked due to an incorrect internal property setter. Fix #5689 (thanks @sebastianfast) - The
Light
Game Object didn't set the shader uniforms correctly, causing it to appear to ignore image rotation with normal maps. Fix #5660 (thanks @sroboubi @telinc1)
Examples, Documentation and TypeScript
My thanks to the following for helping with the Phaser 3 Examples, Docs, and TypeScript definitions, either by reporting errors, fixing them, or helping author the docs:
@x-wk @samme @trynx @Palats @supertorpe @Pixelguy @fractal @halgorithm @golden @H0rn0chse @EmilSV @Patapits @karbassi