Commit graph

12913 commits

Author SHA1 Message Date
Richard Davey
722dfb79ed
Merge pull request #6771 from samme/patch-21
Docs: correct TilemapJSONFile superclass
2024-06-06 15:29:51 +01:00
Richard Davey
ca8102ab30
Merge pull request #6781 from samme/feature/audio-warnings
Improve the audio warnings
2024-06-06 15:29:01 +01:00
Richard Davey
27a0cb1a8f
Merge pull request #6813 from AlbertMontagutCasero/fix-TextStyle-setWordWrapWidth-definition
Fix jsdoc in setWordWrapWidth from Text and TextStyle
2024-06-06 15:27:45 +01:00
Richard Davey
d18f42377b
Merge pull request #6801 from samme/fix/getPipelineName-null
`getPipelineName()` is null if pipeline is null
2024-06-06 15:18:12 +01:00
Richard Davey
993e0cefa1
Merge pull request #6809 from samme/feature/sound-manager-isPlaying
Add BaseSoundManager#isPlaying()
2024-06-06 15:15:52 +01:00
Richard Davey
159fe935bb
Merge pull request #6785 from samme/feature/bitmaptext-key-error
Throw an error for invalid BitmapText key
2024-06-06 15:14:12 +01:00
Richard Davey
c534e2ae6a
Merge pull request #6795 from samme/docs/set-velocity
Docs: note velocity units in Phaser.Physics.Arcade.Components.Velocity
2024-06-06 15:13:24 +01:00
Richard Davey
f10147809f
Merge pull request #6815 from lgtome/fix-parent-parameter-type
JSDoc and type for parent property
2024-06-06 15:12:37 +01:00
Richard Davey
c4501d2ccf TimelineEvent has a new property called tweenInstance. If the Timeline event has a tween that has been activated, this will hold a reference to it. 2024-06-06 15:09:22 +01:00
Richard Davey
b70d06d475 Calling Timeline.clear and Timeline.destroy will now destroy any currently active Tweens that the Timeline had created. Previously, active tweens would continue to play to completion
Calling `Timeline.pause` will now pause any currently active Tweens that the Timeline had started
Calling `Timeline.resume` will now resume any currently paused Tweens that the Timeline had started
2024-06-06 15:09:22 +01:00
Richard Davey
228736a695
Merge pull request #6818 from rexrainbow/bugfix-expand-scale-mode
Set gameSize equal to baseSize, for EXPAND scale mode
2024-06-06 14:35:53 +01:00
Richard Davey
023d9fb0ba Added all of the missing Loader Config values (such as imageLoadType) to LoaderConfig, so they now appear in the TypeScript defs. 2024-06-06 14:32:58 +01:00
Rex
687903fc76 Expose const EXPAND definition 2024-05-31 11:46:16 +08:00
Richard Davey
9b49655e9c The method TextureManager.checkKey will now return false if the key is not a string, which fixes issues where a texture could be created if a key was given that was already in use 2024-05-15 15:37:19 +01:00
Richard Davey
946e82b058 Removed .js from require paths (not needed) 2024-05-15 15:02:31 +01:00
Richard Davey
5d1d379991 Updated version to 3.85.0 2024-05-15 15:02:04 +01:00
Rex
4a064214ba Set gameSize equal to baseSize 2024-05-15 21:21:22 +08:00
Richard Davey
fc873c0e6d
Remove .js from require path 2024-05-15 00:40:35 +01:00
lgtome
370cfbb52c Fix jsdoc and type for parent property 2024-05-09 23:31:10 +03:00
Albert Montagut Casero
b90fc23236 Fix jsdoc in setWordWrapWidth from Text and TextStyle 2024-05-07 10:36:46 +02:00
samme
f01e2764c9 Add BaseSoundManager#isPlaying 2024-05-03 07:39:37 -07:00
samme
252cb41517 Add Phaser.Loader.LoaderPlugin#removePack() 2024-04-26 09:15:55 -07:00
samme
287c1e86af Add Phaser.Time.Timeline#timeScale 2024-04-25 10:58:44 -07:00
samme
840ff020f8 getPipelineName() is null if pipeline is null
Fixes #6799
2024-04-25 09:10:47 -07:00
Robert Kowalski
e337b6e4d1 The default for inputActivePointers works for this condition now 2024-04-22 09:30:00 -04:00
Robert Kowalski
ec98b33757 Consistently check length for each pointer event Fix #6783 2024-04-21 23:57:18 -04:00
Richard Davey
c1c1a0ffa4 If GetURL returns false File.load will now throw a helpful error instead of crashing 2024-04-21 18:41:17 +01:00
samme
fbc7f57c28 Docs: note velocity units
Phaser.Physics.Arcade.Components.Velocity
2024-04-17 06:54:31 -07:00
samme
73ff013d95 Throw an error for invalid BitmapText key 2024-04-08 08:56:37 -07:00
Rex
f9cf19f479 displayList might be null 2024-04-08 00:36:59 +08:00
Rex
266c1f411d Fix bug 2024-04-06 16:24:08 +08:00
Rex
a2702fd795 Add some helper methods for changing rendering order 2024-04-06 09:24:04 +08:00
samme
f7e029ca2d Improve the audio warnings 2024-04-04 08:40:06 -07:00
samme
e988861f5d
Docs: correct TilemapJSONFile superclass 2024-03-17 18:06:12 -07:00
Robert Kowalski
e1d23b98c0 Spelling fixes 2024-03-05 22:21:42 -05:00
Richard Davey
8acc797b64 Updated documentation and removed Transform component 2024-02-27 15:48:31 +00:00
Richard Davey
6943c9bbca Reverted a change made in TouchManager that would prevent clicks from outside the game window from being registered. Fix #6747 2024-02-27 15:36:34 +00:00
Richard Davey
229f9232f4 Modified onMouseUpWindow and onMouseDownWindow in the MouseManager so they now check for sourceCapabilities.firesTouchEvents and if found, abort registering the event. This new browser event property is designed to prevent you accidentally registering a Mouse Event when a Touch Event has just occurred (see https://developer.mozilla.org/en-US/docs/Web/API/InputDeviceCapabilities/firesTouchEvents) #6747 2024-02-27 15:36:23 +00:00
Richard Davey
fb47fcf455 Update const.js 2024-02-27 14:59:29 +00:00
Ben Richards
b1806fd721 Remove unsynced flipY from Shader and DynamicTexture textures.
This might be causing some issues with context restore,
and seems entirely unnecessary.
2024-02-27 17:29:49 +13:00
Ben Richards
1b77881dd4 Ensure TextureSource.setFlipY always updates the texture.
When it's a Canvas or Video, at least.
2024-02-27 15:17:52 +13:00
Ben Richards
37ba3510f2 Fix RenderTexture crashing in the presence of a light.
More generally, anything with a default/no normal map should be fixed.
2024-02-26 17:45:52 +13:00
Ben Richards
7eede9d236 Standardise texture update in Shader.initSampler2D. 2024-02-26 16:19:24 +13:00
Ben Richards
cab4bab15e Eliminate duplicate code in WebGL video handling.
This involves a new method, `videoToTexture`.
2024-02-23 19:16:18 +13:00
Ben Richards
9a5b51dd27 Eliminate duplicate code in WebGL texture creation/update.
This should make the code lighter and more maintainable.
`UNPACK_FLIP_Y_WEBGL` is now always set, where previously it was allowed
to just remain default (false); this is necessary for the new code path.
`Uint8Array` sources are now allowed to generate MIPMaps.
`WebGLTextureWrapper.update` now checks the type of `pixels`, although
it should only ever be the final case.
2024-02-23 18:43:27 +13:00
Ben Richards
42039a144e Fix failure to restore compressed textures after WebGL context loss. 2024-02-23 17:55:03 +13:00
Ben Richards
3cd756dbe9 Fix new WebGLTextures remaining bound after creation.
This caused an error when calling `Shader.setRenderToTexture()`
after the game started running.
The leftover texture caused a temporary cyclic reference with the new
Framebuffer. The actual rendering pipeline was not affected.
2024-02-22 19:01:03 +13:00
Richard Davey
e0f9e7d1d0 Preparing for v3.90 development 2024-02-21 23:15:21 +00:00
Richard Davey
57b7b09597 Fixed jsdoc 2024-02-21 22:39:29 +00:00
Richard Davey
143d1d9be9 Merge branch 'master' of https://github.com/phaserjs/phaser 2024-02-21 21:31:54 +00:00
Richard Davey
89afecc597 Swapped to the ComputedSize component, moved metadata handler logic to the new inline setSizeToFrame method 2024-02-21 21:31:51 +00:00
Robert Kowalski
60aa42fec4 Quick cleanup and documentation update 2024-02-21 16:12:29 -05:00
Robert Kowalski
7e848e66fa Add documentation about fixed frame size on plane animation 2024-02-21 16:07:24 -05:00
Ben Richards
198598882e Document non-optional texture update flags correctly. 2024-02-22 09:56:17 +13:00
Ben Richards
a0aa09ff31 Fix WebGL errors when updating video textures. 2024-02-22 09:18:12 +13:00
Richard Davey
5a12f2a193 Preparing for v3.80 release 2024-02-21 13:31:13 +00:00
Richard Davey
ff945e1595 Fix merge error 2024-02-21 13:25:08 +00:00
Richard Davey
c445303ffb Revert define changes as they don't work 2024-02-21 13:23:52 +00:00
Richard Davey
d25d65835a Update NineSliceRender.js 2024-02-21 12:59:40 +00:00
Richard Davey
509f78ed72 Merge branch 'master' of https://github.com/phaserjs/phaser 2024-02-21 12:57:55 +00:00
Richard Davey
7aaa976a4e Updated webpack config DefinePlugin use and corresponding defs to allow those crazy souls who import source directly on node to have a better life #6644 2024-02-21 12:57:48 +00:00
Robert Kowalski
9d155d8dde Revert "Add bounce event to arcade physics Fix #6406"
This reverts commit 542bac2d02.
2024-02-21 07:22:57 -05:00
Richard Davey
d70e3f453c The ArcadePhysics.World.collideSpriteVsTilemapLayer method has been modified so that the body bounds are now expanded by the size of the scaled base tile in the Tilemap Layer. This fixes an issue where the check would skip over-sized tiles that were outside the bounds of the body. Mostly noticeable on layers that had a different base tile size to the map itself. Fix #4479 2024-02-21 01:11:43 +00:00
Richard Davey
d855fa73d3 The TilemapWebGLRenderer function has been fixed so it now uses the TileSet width and height for the tile draw command. This fixes an issue where the Tilemap would render incorrectly if the base tile size was different to the tile size. Fix #5988 2024-02-21 00:17:09 +00:00
Richard Davey
c273a1c9af Handle non-sprite sheets 2024-02-21 00:01:28 +00:00
Richard Davey
862f75089e Merge branch 'master' of https://github.com/phaserjs/phaser 2024-02-20 23:56:21 +00:00
Richard Davey
133073a55e The Tileset.updateTileData method has two new optional parameters offsetX and offsetY which allow you to set the offset that the tile data starts from within the base source texture. 2024-02-20 23:56:14 +00:00
Richard Davey
724ed7ec17 Texture#getFrameBounds is a new method that will return the bounds that all of the frames of a given Texture Source encompass. This is useful for things like calculating the bounds of a Sprite Sheet embedded within a Texture Atlas. 2024-02-20 23:53:26 +00:00
Richard Davey
085bfa0cac Use the TextureManager 2024-02-20 23:53:11 +00:00
Richard Davey
4df43d7bed Math.RectangleLike is a new typedef that defines a rectangle-like object with public x, y, width and height properties. 2024-02-20 23:52:54 +00:00
Ben Richards
60176e4b39 Merge remote-tracking branch 'origin/master' 2024-02-21 11:49:15 +13:00
Ben Richards
13d6defb33 Fix rare text sizes failing to render.
If initialized at a power-of-two resolution, then resized to a
non-power-of-two resolution, some extra parameters must be updated.
2024-02-21 11:48:59 +13:00
Richard Davey
5d0c50c704 Merge branch 'master' of https://github.com/phaserjs/phaser 2024-02-20 22:46:12 +00:00
Richard Davey
68e089a380 The ScaleManager.orientationChange event listener will now directly refresh the Scale Manager internals. This fixes an issue where the orientation change event would fire after the window resize event, causing the Scale Manager to incorrectly report the new orientation on Chrome on iOS. Fix #6484 2024-02-20 22:46:05 +00:00
Robert Kowalski
542bac2d02 Add bounce event to arcade physics Fix #6406 2024-02-20 17:16:32 -05:00
Richard Davey
ebe627836e Fixed object creation, sprite origin and added useSpriteSheet property 2024-02-20 21:38:42 +00:00
Richard Davey
0002c009f7 Updated jsdocs 2024-02-20 21:38:19 +00:00
Robert Kowalski
77778a07aa Just updateDisplayOrigin without defaults Fix #6655 2024-02-20 14:21:36 -05:00
Richard Davey
89811d7388 The Tilemap.createFromTiles method has been updated. It will now copy the following properties, if set in the Tile, to the Sprites it creates: rotation, flipX, flipY, alpha, visible and tint. If these properties are declared in the spriteConfig passed to the method, those will be used instead, otherwise the Tile values are used. Fix #6711 2024-02-20 18:39:52 +00:00
Richard Davey
2dfd421495 WebAudioSound will now set hasEnded = false as part of stopAndRemoveBufferSource, after the source has been stopped and disconnected. This should prevent it from being left in a true state if the source onended callback fired late, after the sound had been re-played. Fix #6657 2024-02-20 17:50:44 +00:00
Richard Davey
429dcf0ed0 Clarified docs. Fix #6516 2024-02-20 16:47:18 +00:00
Richard Davey
38da7de892 Fix Tilemap properties JSDoc type. Fix #6331 2024-02-20 16:35:18 +00:00
Richard Davey
76a1062d50 Clarify container level. Fix #6699 2024-02-20 16:23:37 +00:00
Robert Kowalski
371a8b31a9 Add documentation on crop functionality Fix #6589 2024-02-20 11:21:47 -05:00
Ben Richards
a74f99563b Fix spritesheet from atlas from compressed texture. 2024-02-20 21:45:06 +13:00
Ben Richards
93b4b083f1 Fix setting unnecessarily high texture filters. 2024-02-20 13:10:08 +13:00
Ben Richards
a2178c8466 Fix MIPMaps being disabled for compressed textures. 2024-02-20 13:02:19 +13:00
Richard Davey
1f8276ac76 Updated copyright year, company and author 2024-02-19 17:12:24 +00:00
Robert Kowalski
7a6845f6bf Use GetFastValue so all children are added to the container via GameObjectCreator Fix #6743 2024-02-19 12:09:07 -05:00
Richard Davey
5dc286268f A new property is available in the Game Configuration specifically for setting the 'snap' values for the Scale Manager. You can now set snap: { width, height } in the game config. This is then passed to the display size by the Scale Manager and used to control the snap values. Fix #6629 (thanks @musjj @samme) 2024-02-19 16:35:42 +00:00
Richard Davey
d2ce0f9358 Config#snapWidth and Config#snapHeight are new properties in the Game Config that hold the parsed snap config values, as used by the Scale Manager. 2024-02-19 16:35:27 +00:00
Richard Davey
1199178eff beta 3 tag for safety 2024-02-19 16:27:19 +00:00
Richard Davey
0ee06b65b3 Docs fix 2024-02-19 16:27:07 +00:00
Richard Davey
55b4c8db4a The Browser Device class will no longer think that Chrome is Mobile Safari on iOS devices. Fix #6739 2024-02-19 15:36:37 +00:00
Richard Davey
21a10b736a
Merge pull request #6728 from moufmouf/fix-postfxpipeline
Fixing the Postfix pipeline without introducing a skip frame
2024-02-19 15:30:34 +00:00
Richard Davey
56213a5f7e Update WebGLRenderer.js 2024-02-19 15:28:21 +00:00
Richard Davey
de0a22964e WebGLPipeline.resizeUniform is a new property that is defined in the WebGLPipelineConfig. This is a string that defines a uResolution property, or similar, within the pipeline shader. If the WebGL Renderer resizes, this uniform will now be updated automatically as part of the pipeline resize method. It has been added to both the Multi and Mobile pipelines as default. This fixes issues where the pipelines were rendering with old resolution values, causing graphical glitches in mostly pixel-art games. Fix #6674 2024-02-19 15:28:18 +00:00
Richard Davey
82b1a3e2aa Added missing copyright block 2024-02-19 15:01:56 +00:00
Richard Davey
a9012b19b4 The BitmapText.setFont method will now set the texture, size and alignment even if the same font key has been given as is already in use. Fix #6740 2024-02-19 14:41:59 +00:00
Richard Davey
76903fcdb9
Merge pull request #6719 from Stan-Stani/master
docs: clarify overlapOnly param
2024-02-19 14:31:29 +00:00
Richard Davey
9a175caa39
Merge pull request #6734 from yaustar/master
File creation checks if URL is a string before seeing if its Base64
2024-02-19 14:29:57 +00:00
Richard Davey
6d82af183c
Merge pull request #6741 from samme/docs/tween-chain-callbacks
Docs: remove unused TweenChainBuilderConfig props
2024-02-19 14:28:48 +00:00
Ben Richards
747c961632 Remove documentation requiring linear color space in ASTC textures.
This is no longer true.
2024-02-19 15:09:39 +13:00
Robert Kowalski
a7f00773ff Properly detect mesh like gameObjects when supplying an input configuration 2024-02-18 08:01:22 -05:00
Ben Richards
89543c9880 Change S3TCRGB to S3TCSRGB. 2024-02-17 20:59:00 +13:00
Ben Richards
f8ebbf38ef Verify compressed texture compatibility with WebGL and improve warnings. 2024-02-17 20:43:43 +13:00
Ben Richards
27f61c25e9 Merge remote-tracking branch 'origin/master' 2024-02-17 18:16:14 +13:00
Ben Richards
6c8c432fbf Add support for sRGB color in ETC compressed PVR files. 2024-02-17 18:15:56 +13:00
Robert Kowalski
b4c9cc92c2 Call the Time.Timeline loop callback earlier 2024-02-16 16:31:05 -05:00
Ben Richards
d70c107fde Add experimental support for BPTC compressed textures in PVR files.
These haven't been verified to work, but PVR format 15
(COMPRESSED_RGBA_BPTC_UNORM_EXT or COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT)
conforms to the specification, and PVR format 14
(COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT or
COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT) is a best guess.
2024-02-16 17:55:44 +13:00
Ben Richards
14bea5a995 Support sRGB compressed textures in PVR files.
ASTC format textures would previously be defaulted to linear RGB.
S3TC format textures would either default to linear RGB,
or not load at all.
2024-02-16 17:48:43 +13:00
Robert Kowalski
6bb3138c03 Path lineTo and moveTo now support Vector2Like Fix #6557 2024-02-15 20:24:49 -05:00
samme
5500c2170b Docs: TweenChainBuilderConfig descriptions 2024-02-15 17:01:49 -08:00
samme
55fb8a4ad8 Docs: remove unused TweenChainBuilderConfig props 2024-02-15 16:58:55 -08:00
Richard Davey
61a8fda08c Merge branch 'master' of https://github.com/phaserjs/phaser 2024-02-14 22:34:22 +00:00
Richard Davey
43954cf89b The Device.Browser.safari regular expression has been strenghtened so it now captures versions with double or triple periods in. Previously it would fail for Version/17.2.1 due to the minor value 2024-02-14 22:32:42 +00:00
Robert Kowalski
b9a7b3ed33 Cleanup and added loop callback to Time.Timeline 2024-02-14 10:21:06 -05:00
Ben Richards
878d3d2211 Fix support for BPTC and RGTC texture compression.
They use different WebGL extension name formats.
2024-02-13 17:38:19 +13:00
Robert Kowalski
e999c5a911 Add repeating functionality to Time.Timeline Fix #6560 2024-02-12 18:00:36 -05:00
Robert Kowalski
480cccb19e Add hitAreaCallback workaround back to Input.InputPlugin#setHitArea 2024-02-12 10:03:54 -05:00
Robert Kowalski
51dfa7866e Adds metadata event to Video Game Objects and a starting texture Fix #6475 2024-02-09 22:36:52 -05:00
Steven Yau
a25d61068e File creation checks if URL is a string before seeing if its Base64
Fixes #6733
2024-02-09 21:42:22 +00:00
Richard Davey
3015fe11eb v3.80 Beta 2 2024-02-09 14:39:41 +00:00
Ben Richards
5ac59c1890 Fix headless renderer compatibility. 2024-02-09 18:57:13 +13:00
Ben Richards
9ab82970c7 Fix inappropriate default type of Shader._deferSetShader. 2024-02-09 18:40:37 +13:00
Ben Richards
2e8a8f8081 Add default normal map texture __NORMAL.
Remove `LightPipeline.defaultNormalMap`, as this universal texture is
now available to use.
2024-02-09 15:51:53 +13:00
Ben Richards
23a672bc48 Improve resize handling.
Although the `resize` function does make GL calls,
they will have no effect during context loss.
2024-02-09 12:28:20 +13:00
Ben Richards
6d56791568 Fix incorrect type on WebGLAttribLocationWrapper.wegGLAttribLocation.
A uniform uses a `WebGLUniformLocation`, but an attrib uses a `GLint`.
2024-02-09 11:06:47 +13:00
Ben Richards
4353a1e175 Improve safety around context loss.
Clarify notes on drawing dynamic textures during context loss.
Allow `Shader` to initialize and operate during context loss.
Improve resize handling on context loss and recovery.
2024-02-08 18:53:10 +13:00
Robert Kowalski
b762b28575 Use built in HasAny to check for Mesh Game Objects 2024-02-07 21:05:31 -05:00
Robert Kowalski
827d6320e7 Remove old Mesh based Game Object detection for input and check if interactive config is empty 2024-02-07 15:52:17 -05:00
Robert Kowalski
798082c6c6 Mesh based Game Objects can use an input configuration Fixes #6510 2024-02-06 23:44:02 -05:00
Ben Richards
36a05e268a Merge remote-tracking branch 'origin/master' 2024-02-07 12:00:45 +13:00
Ben Richards
719e7a5e73 Remove unnecessary checks around Text WebGL texture. 2024-02-07 11:50:33 +13:00
Robert Kowalski
d35e69ce25 Move resetCursor so it does not lose input Fix #6387 2024-02-05 18:38:42 -05:00
Ben Richards
7ed40fdf7d Allow WebGL wrapper operations during context loss. 2024-02-05 16:40:16 +13:00
Ben Richards
06d463e92e Fix text initialization in WebGL.
As `frame.glTexture` is now a getter, this would error out in strict mode.
Repeated texture updates would also generate new wrappers.
2024-02-05 15:39:17 +13:00
Ben Richards
a4e96855fc Correct documentation of LightPipeline.currentNormalMap. 2024-02-05 14:30:24 +13:00
biometricPsychography
27f0a822c8 docs: move overlapOnly caveat to the @classdesc 2024-02-03 13:26:22 -06:00
Robert Kowalski
39b35580c9 Keep temp hit test when disabling interactivity Fix #6601 2024-02-02 17:56:45 -05:00
Robert Kowalski
2cf82a9b54
Merge pull request #6730 from samme/fix/static-body-reset-offset
Reapply offset when resetting static body
2024-02-02 16:17:23 -05:00
David Négrier
e5454a1203 Fixing the Postfix pipeline without introducing a skip frame
Due to #6681, we introduced a skip frame to wait for the PostFX pipeline to be correctly booted.
While this fixed the display issue, it introduced a "skip" frame.
The pipeline would only be visible one frame after being introduced.

The root issue is a binding issue on currentRenderTarget.

Here, we fix the root issue and remove the skip frame.
2024-02-02 16:05:08 +01:00
Richard Davey
604c34c13b Stop tsgen from crashing! 2024-02-02 13:56:24 +00:00
Richard Davey
e00d12195d Fixed incorrect jsdocs 2024-02-02 13:03:38 +00:00
Richard Davey
7bac75a2f4 Fixed some jsdoc name references and minor lint errors 2024-02-02 13:01:03 +00:00
Richard Davey
56f4c89938
Merge pull request #6725 from phaserjs/webgl-wrappers
Merge WebGL Context Loss work
2024-02-02 12:36:57 +00:00
Ben Richards
49e9d45435 Emit LOSE_WEBGL event.
Also rearrange RESTORE_WEBGL event code.
2024-02-02 21:57:28 +13:00
Ben Richards
d57b46e690 Tidy up wrappers on WebGLRenderer destroy. 2024-02-02 20:55:09 +13:00
Ben Richards
4fd8fc94c3 Fix WebGLShader recovery from WebGL context loss. 2024-02-02 20:50:39 +13:00
Ben Richards
6f36e8201d Fix Shader recovery from WebGL context loss. 2024-02-02 17:43:53 +13:00