Commit graph

9720 commits

Author SHA1 Message Date
Richard Davey
248d2352b6 Update the camera if dirty 2020-09-22 10:59:36 +01:00
Richard Davey
d08a6c657c Added all documentation and dirty flag handling 2020-09-22 10:59:28 +01:00
Richard Davey
4945fc95e1 Not yet fixed, but no longer crashes build 2020-09-21 18:25:02 +01:00
Richard Davey
3950191468 Lots of docs and tidying up 2020-09-21 18:24:47 +01:00
Richard Davey
333945a89e Remove Mesh Game Object and add Layer3D 2020-09-21 18:24:38 +01:00
Richard Davey
afe765a2cf Fix component properties 2020-09-21 18:24:12 +01:00
Richard Davey
6abeb84ff6 Remove Face and Vertex classes 2020-09-21 18:24:03 +01:00
Richard Davey
d86cde525a Remove console.log 2020-09-21 18:23:48 +01:00
Richard Davey
d33c69b65c Updated the shaders 2020-09-21 18:23:41 +01:00
Richard Davey
24f7c2e3df Updated to use RGB objects, finished missing methods 2020-09-21 15:57:57 +01:00
Richard Davey
893453f840 New uniforms handler, new cache and dirty checks 2020-09-21 15:57:38 +01:00
Richard Davey
33734309f1 Clean the mesh after rendering 2020-09-21 15:57:21 +01:00
Richard Davey
989e3e6e07 Swapped to use RGB objects 2020-09-21 15:57:11 +01:00
Richard Davey
82c8ada236 Added fog, dirty refresh and preUpdate handler 2020-09-21 15:56:58 +01:00
Richard Davey
27eafe3661 New Face and Vertex typedefs 2020-09-21 15:56:21 +01:00
Richard Davey
977054a7c8 Added new RGB class to encapsulate color data 2020-09-21 15:56:09 +01:00
Richard Davey
4549fb4320 Updated type defs 2020-09-21 14:05:51 +01:00
Richard Davey
f2f3aea79a Shorter errors 2020-09-21 14:05:38 +01:00
Richard Davey
9bb510be0c Now caches uniform locations and added all of the new set1f etc uniform methods 2020-09-21 14:05:30 +01:00
Richard Davey
7a8932a3a4 Remove log 2020-09-21 14:04:52 +01:00
Vladislav Forsh
4d7301a4be Improve types for particle emitter deathZone and emitZone 2020-09-21 12:38:29 +03:00
Richard Davey
7f7d7a1b2e Can now rotate the model 2020-09-21 10:13:58 +01:00
Richard Davey
1b4af32ec2 The Quaternion class constructor will now default the values to 0,0,0,1 if they're not provided, making it an identity quaternion, rather than the 0,0,0,0 it was before. 2020-09-21 10:13:50 +01:00
Vladislav Forsh
530c7a3d92 Add reserve property to particle emitter config 2020-09-21 12:06:49 +03:00
Richard Davey
a8df17b622 Corrected JSDocs 2020-09-21 09:54:23 +01:00
Richard Davey
99953b94b6
Merge pull request #5311 from vforsh/master
Add ability to use custom easing function(s) with particle emitters
2020-09-21 09:40:26 +01:00
Richard Davey
3672559fc1
Merge pull request #5315 from samme/feature/onWorldBounds
Add onWorldBounds argument in Arcade.Body#setCollideWorldBounds()
2020-09-21 09:38:05 +01:00
Richard Davey
e7f6e8aa57
Merge pull request #5317 from samme/docs/cursorKeys
Docs: correct CursorKeys
2020-09-21 09:35:31 +01:00
Richard Davey
48272312ed
Merge pull request #5318 from samme/fix/getMatching
Fix Group#getMatching()
2020-09-21 09:34:03 +01:00
Richard Davey
78c1eb7934 Removed debug, modified signatuers, added fog 2020-09-21 00:17:58 +01:00
Richard Davey
0ad265da2e Removed faces and verts arrays as moved to a single ArrayBuffer instance 2020-09-21 00:17:38 +01:00
Richard Davey
56caeb126f Renders whole buffer in a single draw with no vertex iteration 2020-09-21 00:17:14 +01:00
Richard Davey
1d2a8bc58f Added fog to shader 2020-09-21 00:16:43 +01:00
samme
d4059c8f6e Fix Group#getMatching 2020-09-19 10:10:25 -07:00
Richard Davey
8366d90f96 Added material and other new methods 2020-09-18 17:52:53 +01:00
Richard Davey
374cc84be8 Now the pipeline does it all 2020-09-18 17:52:41 +01:00
Richard Davey
561a1b54a2 Handle vertex normals too 2020-09-18 17:52:30 +01:00
Richard Davey
640ce49d93 Update MeshCamera.js 2020-09-18 17:52:20 +01:00
Richard Davey
6e62ada207 Created new MeshLight class 2020-09-18 17:52:15 +01:00
Richard Davey
307cbe130f New Mesh Shader 2020-09-18 17:51:23 +01:00
Richard Davey
9a1b252a11 Use shouldFlush 2020-09-18 17:50:57 +01:00
Richard Davey
371fb5e68a Added normals, removed Vec3 2020-09-18 17:50:47 +01:00
Richard Davey
0e2911c4a5 Added fromRotation and mult methods 2020-09-18 17:50:40 +01:00
Richard Davey
0013db3747 Created new Mesh Pipeline 2020-09-18 17:50:20 +01:00
samme
08b2ea467b Docs: correct CursorKeys
Properties not optional
2020-09-18 08:57:05 -07:00
Richard Davey
74f35acad1 Better docs 2020-09-18 16:38:26 +01:00
samme
2eb505c91d Docs: Arcade.Body#setCollideWorldBounds 2020-09-17 14:20:13 -07:00
samme
7aa8f02d8c Add onWorldBounds arg in setCollideWorldBounds() 2020-09-17 14:19:57 -07:00
Richard Davey
5b8e490c7e Flush during render so we can have models with more vertices than the batch allows 2020-09-17 18:08:25 +01:00
Richard Davey
5ff9894925 MeshCamera now supports orbit and pan modes 2020-09-17 18:08:07 +01:00
Richard Davey
d40f99c332 Vertor3.addScale is a new method that will add the given vector and multiply it in the process. 2020-09-17 18:07:54 +01:00
Richard Davey
6ce58ed73b Let them define the orientation 2020-09-17 10:08:15 +01:00
Richard Davey
87ed734475 Easier iteration 2020-09-17 10:08:07 +01:00
Richard Davey
f853a2be70 Use the projected coordinates 2020-09-17 10:07:56 +01:00
Richard Davey
38958d025a We need the z axis 2020-09-17 10:07:19 +01:00
Richard Davey
8ca1730cc1 Remove log 2020-09-16 17:49:00 +01:00
Richard Davey
c5412df09e Fix docs 2020-09-16 17:48:56 +01:00
Richard Davey
8085952507 Expose MeshCamera 2020-09-16 17:35:54 +01:00
Richard Davey
c306229478 Final JSDocs 2020-09-16 17:33:17 +01:00
Richard Davey
303f09b23e Final JSDocs 2020-09-16 17:25:42 +01:00
Richard Davey
1d0b5cc6a9 Added Size component 2020-09-16 17:15:37 +01:00
Richard Davey
fcf0867843 Final JSDocs 2020-09-16 17:15:25 +01:00
Richard Davey
a38166ce2b Now allows a texture per model, not mesh 2020-09-16 16:39:06 +01:00
Richard Davey
fcd1cf96b8 Added dirty handling, drawDebug and destroy 2020-09-16 16:38:53 +01:00
Richard Davey
851775ae19 New MeshCamera class 2020-09-16 16:38:39 +01:00
Richard Davey
8ff008b740 Removed un-used components, refactored method names and added MeshCamera 2020-09-16 16:38:32 +01:00
Richard Davey
da6a300474 Iterates and renders the new models array 2020-09-16 13:51:39 +01:00
Richard Davey
4f7442ee96 Moving all dependencies to the Model object 2020-09-16 13:51:30 +01:00
Richard Davey
113ae646e2 Updated path ref 2020-09-16 13:50:44 +01:00
Richard Davey
a96d380933 Created new Geom.Mesh namespace for all of the Mesh related functions and classes 2020-09-16 13:50:36 +01:00
Vladislav Forsh
8fd4754b03 Add ability to use custom easing function(s) with particle emitters 2020-09-16 12:43:38 +03:00
Richard Davey
45412157c2 Added JSDocs 2020-09-16 09:50:24 +01:00
Richard Davey
b74928b2f8 Added hideCCW, addOBJ, addModel, sortByDepth, rotateX, rotateY, rotateZ, depthSort, addVertex and addFace methods. 2020-09-15 18:09:19 +01:00
Richard Davey
431eb69b42 Much cleaner rendering function, skipping invalid faces 2020-09-15 18:07:51 +01:00
Richard Davey
3e133c900a New method signature order 2020-09-15 18:07:24 +01:00
Richard Davey
a2a199818e Added contains and isCounterClockwise methods and depth property 2020-09-15 18:07:14 +01:00
Richard Davey
229d27dc9e Updated docs and added load method 2020-09-15 18:06:48 +01:00
Richard Davey
dd28a11c93 Loader.OBJFile is a new File Loader type that can load Wavefront OBJ files, which are then parsed and stored in the OBJ Cache. 2020-09-15 18:06:31 +01:00
Richard Davey
a0b47e8c5f Geom.ParseObj is a new function that will parse a Wavefront OBJ file into model data that can be consumed by the Mesh Game Object. 2020-09-15 18:05:47 +01:00
Richard Davey
bd2c56e306 Typo fix 2020-09-15 18:04:26 +01:00
Richard Davey
d8a8aa8448 Added clearVertices and renamed to addVertices so you can append on more verts post-creation 2020-09-15 11:57:44 +01:00
Richard Davey
b763fa0f18 The Mesh now renders by iterating through the Faces array, not the vertices. This allows you to use Array methods such as BringToTop to reposition a Face, thus changing the drawing order without having to repopulate all of the vertices. 2020-09-15 11:57:22 +01:00
Richard Davey
5e5b8c0938 The WebGLPipeline.shouldFlush method now accepts an optional parameter amount. If given, it will return true if when the amount is added to the vertex count it will exceed the vertex capacity. The Multi Pipeline has been updated to now use this method instead of performing the comparison multiple times itself. 2020-09-15 11:54:12 +01:00
Richard Davey
08b4597b72 Improved JSDocs 2020-09-15 10:37:19 +01:00
Richard Davey
99c12540f7 Utils.Array.Matrix.Translate is a new function that will translate an Array Matrix by horizontally and vertically by the given amounts. 2020-09-15 10:35:53 +01:00
Richard Davey
92982d810b Added ability to get InCenter. translate and rotate Face 2020-09-14 17:35:06 +01:00
Richard Davey
52d5b00fe5 Added setPosition and translate methods 2020-09-14 17:34:47 +01:00
Richard Davey
f97042193f Beta 7 tag 2020-09-14 15:35:00 +01:00
Richard Davey
6a966e3f3b Removed interpolationPercentage parameter from all render methods, as it has never been used. 2020-09-14 15:33:58 +01:00
Richard Davey
83f8f007d1 Now uses GetCalcMatrix 2020-09-14 15:22:16 +01:00
Richard Davey
1057ead114 Dump all of the old mega arrays and replace with an array of Vertex instances. 2020-09-14 15:09:34 +01:00
Richard Davey
36a33745b6 Expose Vertex and Face 2020-09-14 15:09:12 +01:00
Richard Davey
6a3ce21702 GameObject.Face is a new micro class that consists of references to the three Vertex instances that construct the single Face. 2020-09-14 15:08:36 +01:00
Richard Davey
8fc969088c GameObject.Vertex is a new micro class that encapsulates all of the data required for a single vertex, such as position, uv, color and alpha. This class is now created internally by the Mesh Game Object. 2020-09-14 15:08:25 +01:00
Richard Davey
3fa0070e50 Now uses white texture and tintEffect mode 1 2020-09-14 15:03:04 +01:00
Richard Davey
87c8e75ece Updated JSDocs 2020-09-14 15:02:21 +01:00
Richard Davey
951457c881 As a result of the change to the shader, all uses of the WebGL Util function getTintAppendFloatAlphaAndSwap have been replaced with getTintAppendFloatAlpha instead. 2020-09-14 15:02:13 +01:00
Richard Davey
194257d199 Create GetCalcMatrixResults.js 2020-09-14 15:01:45 +01:00
Richard Davey
8d25510b61 GameObjects.GetCalcMatrix is a new function that is used to calculate the transformed Game Object matrix, based on the given Game Object, Camera and Parent. This function is now used by the following Game Objects: BitmapText (Static and Dynamic), Graphics, Mesh, Rope, Shader, Arc, Curve, Ellipse, Grid, IsoBox, IsoTriangle, Line, Polygon, Rectangle, Star and Triangle. This dramatically reduces the amount of duplicate code across the API. 2020-09-14 15:01:40 +01:00
Richard Davey
4795c56d79 Config.images.white is a new Game Config property that specifies the 4x4 white PNG texture used by Graphics rendering. You can override this via the config, but only do so if needed. 2020-09-14 14:57:08 +01:00
Richard Davey
e368c479a0 The TextureManager now generates a new texture with the key __WHITE durings its boot process. This is a pure white 4x4 texture used by the Graphics pipelines. 2020-09-14 14:54:58 +01:00
Richard Davey
81800e0ce2 WebGLRenderer.whiteTexture is a new property that is a reference to a pure white 4x4 texture that is created during Boot by the Texture Manager. The Multi Pipeline uses this internally for all Graphic, Shape and fill rendering. 2020-09-14 14:44:29 +01:00
Richard Davey
81b63cdf20 The Rope.tintFill property is now a boolean, not an integer, and can no longer take 2 as a value for a complete fill. Instead, you should provide a solid color texture with no alpha. 2020-09-14 11:12:41 +01:00
Richard Davey
e5ce83aebd New direct tint value 2020-09-14 11:06:16 +01:00
Richard Davey
0f6cc79cd1 The function GetColorFromValue has been removed as it's no longer used internally. 2020-09-14 11:05:32 +01:00
Richard Davey
4ade25fc79 No longer read private values for tint
The `Multi Pipeline`, `Bitmap Text`, `Render Texture`, `Text`, `TileSprite` and `Camera` now all read the tint values from the public properties instead of the private `_tintTL` etc ones. They also now set the `tintEffect` value directly from the `tintFill` property, removing another conditional check.
2020-09-14 11:05:09 +01:00
Richard Davey
75c5f11aee Updated shader source RGB to BGR and removed if-else block
* The `Single.frag`, `Light.frag` and `Multi.frag` shaders have all been updated so they now read the color value as `outTint.bgr` instead of `outTint.rgb`. This allows the colors to remain in RGB order within the Tint component.
* The `Single.frag`, `Light.frag` and `Multi.frag` shaders have all been updated so they no longer have a 3-way check on the `outTintEffect` value.
2020-09-14 11:02:02 +01:00
Richard Davey
6d09f1fe40 Refactored Tint component
* `Tint.tintTopLeft` is now a normal property in RGB order, not a setter, and no longer passes through the `GetColorFromValue` function. This directly replaces the private property `_tintTL` which has now been removed.
* `Tint.tintTopRight` is now a normal property in RGB order, not a setter, and no longer passes through the `GetColorFromValue` function. This directly replaces the private property `_tintTR` which has now been removed.
* `Tint.tintBottomLeft` is now a normal property in RGB order, not a setter, and no longer passes through the `GetColorFromValue` function. This directly replaces the private property `_tintBL` which has now been removed.
* `Tint.tintBottomRight` is now a normal property in RGB order, not a setter, and no longer passes through the `GetColorFromValue` function. This directly replaces the private property `_tintBR` which has now been removed.
* The property `Tint._isTinted` has been removed as it's no longer required.
2020-09-14 10:59:32 +01:00
Richard Davey
ea0abc4f69 Tidy up the formatting 2020-09-14 09:44:17 +01:00
Richard Davey
17ed707acb The Loader.path was being added to the File URL even if the URL was absolute. This is now checked for and the path is not applied unless the URL is relative #5301 2020-09-14 09:23:59 +01:00
Richard Davey
25b5c2d1d1 Loads of new Mesh updates
* `Mesh.setVertices` is a new method that allows you to set the verts of a Mesh Game Object from the given parameters. This allows you to modify a mesh post-creation, or populate it with data at a later stage.
* The Mesh constructor signature has changed to `scene, x, y, vertices, uvs, indicies, colors, alphas, texture, frame`, where `indicies` is the new parameter added to the list. It allows you to provide indexed vertex data to create the Mesh from, where the `indicies` array holds the vertex index information. The final list of vertices is built from this index along with the provided vertices and uvs arrays.
* You can now supply just a single numerical value as the `color` parameter in the constructor, factory method and `setVertices` method. If a number, instead of an array, it will be used as the color for all vertices created.
* You can now supply just a single numerical value as the `alpha` parameter in the constructor, factory method and `setVertices` method. If a number, instead of an array, it will be used as the alpha for all vertices created.
* The `Mesh` Game Object now extends the `SingleAlpha` component and the alpha value is factored into the final alpha value per vertex during rendering. This means you can now set the whole alpha across the Mesh using the standard `setAlpha` methods. But, if you wish to, you can still control the alpha on a per-vertex basis as well.
* The `Mesh` Game Object now has the Animation State Component. This allows you to create and play animations across the texture of a Mesh, something that previously wasn't possible. As a result, the Mesh now adds itself to the Update List when added to a Scene.
* `Mesh.setDebug` is a new method that allows you to render a debug visualisation of the Mesh vertices to a Graphics Game Object. You can provide your own Graphics instance and optionally callback that is invoked during rendering. This allows you to easily visualise the vertices of your Mesh to help debug UV mapping.
* `Mesh.debugGraphic` is a new property that holds the debug Graphics instance reference.
* `Mesh.debugCallback` is a new property that holds the debug render callback.
* `Mesh.renderDebugVerts` is a new method that acts as the default render callback for `setDebug` if none is provided.
* `Mesh.preDestroy` is a new method that will clean-up the Mesh arrays and debug references on destruction.
2020-09-13 23:11:04 +01:00
Richard Davey
3fd52ecdd3 Added debug draw 2020-09-13 17:16:17 +01:00
Richard Davey
c76b084f2e Merge branch 'master' of https://github.com/photonstorm/phaser 2020-09-13 15:17:13 +01:00
Richard Davey
cd0a27acfa Fix #5308 2020-09-13 15:17:07 +01:00
Rex
0cb806c11e Fix add.existing bug
Add game object to updateList if it dose not add to displayList.
( Group game object dose not have `renderCanvas` or `renderWebGL` method)
2020-09-13 17:05:55 +08:00
Richard Davey
b733dbcbe1 The ScaleManager.resolution property has been removed and all internal use of it. 2020-09-12 11:59:30 +01:00
Richard Davey
68946f3894 The Phaser.Scale.Events#RESIZE event no longer sends the resolution as a parameter. 2020-09-12 11:58:50 +01:00
Richard Davey
e4b1093e72 The WebGLRenderer.resize and onResize methods no longer receives or uses the resolution parameter. 2020-09-12 11:58:08 +01:00
Richard Davey
67e49b515c The PipelineManager.resize method along with WebGLPipeline.resize and anything else that extends them no longer receives or uses the resolution parameter. 2020-09-12 11:57:16 +01:00
Richard Davey
37a9261ac4 The CanvasRenderer no longer reads or uses the Game Config resolution property. 2020-09-12 11:56:11 +01:00
Richard Davey
b63cc75154 Remove Camera.resolution use 2020-09-12 11:55:38 +01:00
Richard Davey
f2fca49b3f Remove Camera resolution use 2020-09-12 11:55:26 +01:00
Richard Davey
d6f5aabb7e The TextStyle.resolution property is no longer read from the Game Config. You can still set it via the Text Style config to a value other than 1, but it will default to this now. 2020-09-12 11:55:06 +01:00
Richard Davey
0acdf4373f Formatting update 2020-09-12 11:53:36 +01:00
Richard Davey
c46c3e4c82 The Core.Config.resolution property has been removed. 2020-09-12 11:53:23 +01:00
Richard Davey
f0f93cde7d The CameraManager.onResize method no longer receives or uses the resolution parameter. 2020-09-12 11:52:40 +01:00
Richard Davey
3579d39fa2 The Camera.preRender method no longer receives or uses the resolution parameter. 2020-09-12 11:51:59 +01:00
Richard Davey
d1f2c9239c Resolution removal
* The `BaseCamera.resolution` property has been removed.
* The internal private `BaseCamera._cx`, `_cy`, `_cw` and `_ch` properties has been removed.
* The `BaseCamera.preRender` method no longer receives or uses the `resolution` parameter.
2020-09-12 11:51:37 +01:00
Richard Davey
5d4fe0a466 Fixed a few linting errors 2020-09-12 10:34:57 +01:00
Richard Davey
36cf9c456a
Merge pull request #5270 from rexrainbow/text-measureText
Get ascent and descent from context.measureText method
2020-09-12 10:30:19 +01:00
Richard Davey
887e0d8a15
Merge pull request #5302 from samme/feature/copyPosition
Add Phaser.GameObjects.Components.Transform#copyPosition
2020-09-12 10:26:51 +01:00
samme
ad0c5ad5db Docs: since 2020-09-11 10:01:43 -07:00
samme
f05129f30c Add Transform#copyPosition
Needs JSDoc types for Vector3Like, Vector4Like
2020-09-11 09:44:31 -07:00
Emil Schnedler Vad
e1106a0112 Says webglRender but it is in PipelineManager 2020-09-11 18:44:11 +02:00
Richard Davey
9cd4c1bb0a Refactored to use local vars 2020-09-11 16:27:21 +01:00
Richard Davey
d844402d4d
Merge pull request #5298 from samme/feature/audio-config-default
Add default value for Phaser.Core.Config#audio
2020-09-11 16:25:50 +01:00
Richard Davey
7475b15976 Preparing for Beta 6 2020-09-11 15:56:53 +01:00
samme
93b5aebdbe Fix undefined TimerEvent
Fixes #5294
2020-09-11 07:45:22 -07:00
Richard Davey
6c8191f7c5 Fixed Audio and Video type defs. Fix #5295 2020-09-11 15:29:01 +01:00
Richard Davey
1c2a79ac51 The Scale Managers GetScreenOrientation function will now check for window.orientation first, because iOS mobile browsers have an incomplete implementation of the Screen API, forcing us to use the window value as a priority. This means the Scale Manager will now emit orientationchange events correctly on iOS. Fix #4361 #4914 2020-09-11 15:22:53 +01:00
Richard Davey
60e311afe5 Updated JSDocs 2020-09-11 15:16:37 +01:00
Richard Davey
2acfbfbe71 Gamepad._created is a new private internal property that keeps track of when the instance was created. This is compared to the navigator timestamp in the update loop to avoid event spamming. Fix #4890. 2020-09-11 14:01:55 +01:00
Richard Davey
5ecdc3b4a2 The GamepadPlugin will now call refreshPads as part of its start process. This allows you to use Gamepads across multiple Scenes, without having to wait for a connected event from each one of them. If you've already had a connected event in a previous Scene, you can now just read the pads directly via this.input.gamepad.pad1 and similar. Fix #4890 2020-09-11 14:00:14 +01:00
Richard Davey
00b799db23 Use Event const, not string. 2020-09-11 12:23:33 +01:00
Richard Davey
c90a3847e4 DataManager.Events.DESTROY is a new event that the Data Manager will _listen_ for from its parent and then call its own destroy method when received. 2020-09-11 12:21:39 +01:00
Richard Davey
ce236f0d69 ScaleManager.refresh is now called when the Game.READY event fires. This fixes a bug where the Scale Manager would have the incorrect canvas bounds, because they were calculated before a previous canvas was removed from the DOM. Fix #4905 2020-09-11 12:10:10 +01:00
Richard Davey
57657ce76c Updated JSDocs. Fix #5268 2020-09-11 11:08:43 +01:00
Richard Davey
56bbfbcb62 Removed capture and added preventDefaultDown, Up and Move instead. Also better passive handling and smaller listeners. 2020-09-11 10:59:47 +01:00
Richard Davey
0aea690497 Removed inputMouseCapture and added configs for inputMousePrventDefaultDown, Up and Move instead. 2020-09-11 10:59:20 +01:00
Richard Davey
3969d6e45a Updated JSDocs to cover situation in #3858 2020-09-11 10:08:22 +01:00