diff --git a/src/geom/mesh/GenerateGridVerts.js b/src/geom/mesh/GenerateGridVerts.js index b4dc5f091..7ab0beb35 100644 --- a/src/geom/mesh/GenerateGridVerts.js +++ b/src/geom/mesh/GenerateGridVerts.js @@ -59,10 +59,13 @@ var GenerateGridVerts = function (config) var rotateY = GetFastValue(config, 'rotateY', 0); var rotateZ = GetFastValue(config, 'rotateZ', 0); var zIsUp = GetFastValue(config, 'zIsUp', true); + var isOrtho = GetFastValue(config, 'isOrtho', mesh.dirtyCache[11]); var colors = GetFastValue(config, 'colors', [ 0xffffff ]); var alphas = GetFastValue(config, 'alphas', [ 1 ]); var tile = GetFastValue(config, 'tile', false); + var widthSet = GetFastValue(config, 'width', null); + var result = { faces: [], verts: [] @@ -72,6 +75,17 @@ var GenerateGridVerts = function (config) tempRotation.set(rotateX, rotateY, rotateZ); tempMatrix.fromRotationXYTranslation(tempRotation, tempPosition, zIsUp); + // If the Mesh is ortho and no width/height is given, we'll default to texture sizes (if set!) + if (!widthSet && isOrtho && texture) + { + var textureFrame = texture.get(frame); + + var renderer = mesh.scene.sys.renderer; + + width = textureFrame.width / renderer.height; + height = textureFrame.height / renderer.height; + } + var halfWidth = width / 2; var halfHeight = height / 2; @@ -95,10 +109,8 @@ var GenerateGridVerts = function (config) var frameV0 = 0; var frameV1 = 1; - if (texture) + if (textureFrame) { - var textureFrame = texture.get(frame); - frameU0 = textureFrame.u0; frameU1 = textureFrame.u1; frameV0 = textureFrame.v0; diff --git a/src/geom/mesh/typedefs/GenerateGridConfig.js b/src/geom/mesh/typedefs/GenerateGridConfig.js index 78de8a815..fef885dfb 100644 --- a/src/geom/mesh/typedefs/GenerateGridConfig.js +++ b/src/geom/mesh/typedefs/GenerateGridConfig.js @@ -5,8 +5,8 @@ * @property {(string|Phaser.Textures.Texture)} key - The key of the texture to be used for this Grid, as stored in the Texture Manager, or a Texture instance. * @property {(string|integer)} [frame] - The name or index of the frame within the Texture. * @property {Phaser.GameObjects.Mesh} [mesh] - If specified, the vertices of the generated grid will be added to this Mesh Game Object. - * @property {number} [width=128] - The width of the grid in pixels. - * @property {number} [height=width] - The height of the grid in pixels. + * @property {number} [width=1] - The width of the grid in 3D units. If you wish to get a pixel accurate grid based on a texture, you can use an Ortho Mesh or the `isOrtho` parameter. + * @property {number} [height=width] - The height of the grid in 3D units. * @property {number} [widthSegments=1] - The number of segments to split the grid horizontally in to. * @property {number} [heightSegments=widthSegments] - The number of segments to split the grid vertically in to. * @property {number} [x=0] - Offset the grid x position by this amount. @@ -14,4 +14,5 @@ * @property {number|number[]} [colors=0xffffff] - An array of colors, one per vertex, or a single color value applied to all vertices. * @property {number|number[]} [alphas=1] - An array of alpha values, one per vertex, or a single alpha value applied to all vertices. * @property {boolean} [tile=false] - Should the texture tile (repeat) across the grid segments, or display as a single texture? + * @property {boolean} [isOrtho=false] - If set and using a texture with an ortho Mesh, the `width` and `height` parameters will be calculated based on the frame size for you. */