Skip to content

Commit caa69b6

Browse files
committed
Better debug rendering
1 parent 4eb5bbd commit caa69b6

2 files changed

Lines changed: 35 additions & 27 deletions

File tree

src/gameobjects/mesh/Mesh.js

Lines changed: 32 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -757,16 +757,30 @@ var Mesh = new Class({
757757
* eventually crashing the browser. This is not done automatically to allow you to debug
758758
* draw multiple Mesh objects to a single Graphics instance.
759759
*
760-
* The Mesh class has a built-in debug rendering callback `Mesh.renderDebugVerts`, however
760+
* The Mesh class has a built-in debug rendering callback `Mesh.renderDebug`, however
761761
* you can also provide your own callback to be used instead. Do this by setting the `callback` parameter.
762762
*
763763
* The callback is invoked _once per render_ and sent the following parameters:
764764
*
765-
* `callback(src, meshLength, verts)`
765+
* `callback(src, faces)`
766766
*
767767
* `src` is the Mesh instance being debugged.
768-
* `meshLength` is the number of mesh vertices in total.
769-
* `verts` is an array of the translated vertex coordinates.
768+
* `faces` is an array of the Faces that were rendered.
769+
*
770+
* You can get the final drawn vertex position from a Face object like this:
771+
*
772+
* ```javascript
773+
* let face = faces[i];
774+
*
775+
* let x0 = face.vertex1.tx;
776+
* let y0 = face.vertex1.ty;
777+
* let x1 = face.vertex2.tx;
778+
* let y1 = face.vertex2.ty;
779+
* let x2 = face.vertex3.tx;
780+
* let y2 = face.vertex3.ty;
781+
*
782+
* graphic.strokeTriangle(x0, y0, x1, y1, x2, y2);
783+
* ```
770784
*
771785
* If using your own callback you do not have to provide a Graphics instance to this method.
772786
*
@@ -791,7 +805,7 @@ var Mesh = new Class({
791805
}
792806
else if (!callback)
793807
{
794-
this.debugCallback = this.renderDebugVerts;
808+
this.debugCallback = this.renderDebug;
795809
}
796810
else
797811
{
@@ -946,29 +960,30 @@ var Mesh = new Class({
946960
},
947961

948962
/**
949-
* The built-in Mesh vertices debug rendering method.
963+
* The built-in Mesh debug rendering method.
950964
*
951965
* See `Mesh.setDebug` for more details.
952966
*
953-
* @method Phaser.GameObjects.Mesh#renderDebugVerts
967+
* @method Phaser.GameObjects.Mesh#renderDebug
954968
* @since 3.50.0
955969
*
956970
* @param {Phaser.GameObjects.Mesh} src - The Mesh object being rendered.
957-
* @param {integer} meshLength - The number of vertices in the mesh.
958-
* @param {number[]} verts - An array of translated vertex coordinates.
971+
* @param {Phaser.Geom.Mesh.Face[]} faces - An array of Faces.
959972
*/
960-
renderDebugVerts: function (src, meshLength, verts)
973+
renderDebug: function (src, faces)
961974
{
962975
var graphic = src.debugGraphic;
963976

964-
for (var i = 0; i < meshLength; i += 6)
977+
for (var i = 0; i < faces.length; i++)
965978
{
966-
var x0 = verts[i + 0];
967-
var y0 = verts[i + 1];
968-
var x1 = verts[i + 2];
969-
var y1 = verts[i + 3];
970-
var x2 = verts[i + 4];
971-
var y2 = verts[i + 5];
979+
var face = faces[i];
980+
981+
var x0 = face.vertex1.tx;
982+
var y0 = face.vertex1.ty;
983+
var x1 = face.vertex2.tx;
984+
var y1 = face.vertex2.ty;
985+
var x2 = face.vertex3.tx;
986+
var y2 = face.vertex3.ty;
972987

973988
graphic.strokeTriangle(x0, y0, x1, y1, x2, y2);
974989
}

src/gameobjects/mesh/MeshWebGLRenderer.js

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@ var MeshWebGLRenderer = function (renderer, src, camera, parentMatrix)
4343

4444
var tintEffect = src.tintFill;
4545

46+
var debugFaces = [];
4647
var debugCallback = src.debugCallback;
47-
var debugVerts = [];
4848

4949
var a = calcMatrix.a;
5050
var b = calcMatrix.b;
@@ -85,22 +85,15 @@ var MeshWebGLRenderer = function (renderer, src, camera, parentMatrix)
8585

8686
if (debugCallback)
8787
{
88-
debugVerts.push(
89-
F32[vertexOffset - 20],
90-
F32[vertexOffset - 19],
91-
F32[vertexOffset - 13],
92-
F32[vertexOffset - 12],
93-
F32[vertexOffset - 6],
94-
F32[vertexOffset - 5]
95-
);
88+
debugFaces.push(face);
9689
}
9790
}
9891

9992
src.totalFrame += totalFacesRendered;
10093

10194
if (debugCallback)
10295
{
103-
debugCallback.call(src, src, src.vertices.length * 2, debugVerts);
96+
debugCallback.call(src, src, debugFaces);
10497
}
10598
};
10699

0 commit comments

Comments
 (0)