2018-09-05 16:11:46 +00:00
|
|
|
/**
|
|
|
|
* @author Richard Davey <rich@photonstorm.com>
|
2020-01-15 12:07:09 +00:00
|
|
|
* @copyright 2020 Photon Storm Ltd.
|
2019-05-10 15:15:04 +00:00
|
|
|
* @license {@link https://opensource.org/licenses/MIT|MIT License}
|
2018-09-05 16:11:46 +00:00
|
|
|
*/
|
|
|
|
|
2018-09-10 21:47:39 +00:00
|
|
|
var FillPathWebGL = require('../FillPathWebGL');
|
`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 14:01:40 +00:00
|
|
|
var GetCalcMatrix = require('../../GetCalcMatrix');
|
2018-09-10 21:47:39 +00:00
|
|
|
var StrokePathWebGL = require('../StrokePathWebGL');
|
2018-09-05 16:11:46 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Renders this Game Object with the WebGL Renderer to the given Camera.
|
|
|
|
* The object will not render if any of its renderFlags are set or it is being actively filtered out by the Camera.
|
|
|
|
* This method should not be called directly. It is a utility function of the Render module.
|
|
|
|
*
|
|
|
|
* @method Phaser.GameObjects.Polygon#renderWebGL
|
|
|
|
* @since 3.13.0
|
|
|
|
* @private
|
|
|
|
*
|
|
|
|
* @param {Phaser.Renderer.WebGL.WebGLRenderer} renderer - A reference to the current active WebGL renderer.
|
|
|
|
* @param {Phaser.GameObjects.Polygon} src - The Game Object being rendered in this call.
|
|
|
|
* @param {Phaser.Cameras.Scene2D.Camera} camera - The Camera that is rendering the Game Object.
|
|
|
|
* @param {Phaser.GameObjects.Components.TransformMatrix} parentMatrix - This transform matrix is defined if the game object is nested
|
|
|
|
*/
|
2020-09-14 14:33:58 +00:00
|
|
|
var PolygonWebGLRenderer = function (renderer, src, camera, parentMatrix)
|
2018-09-05 16:11:46 +00:00
|
|
|
{
|
2021-01-07 12:31:31 +00:00
|
|
|
camera.addToRenderList(src);
|
|
|
|
|
2020-11-23 16:17:13 +00:00
|
|
|
var pipeline = renderer.pipelines.set(src.pipeline);
|
2018-09-05 16:11:46 +00:00
|
|
|
|
`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 14:01:40 +00:00
|
|
|
var result = GetCalcMatrix(src, camera, parentMatrix);
|
2018-09-05 16:11:46 +00:00
|
|
|
|
2020-11-03 11:22:30 +00:00
|
|
|
var calcMatrix = pipeline.calcMatrix.copyFrom(result.calc);
|
2018-09-05 16:11:46 +00:00
|
|
|
|
2018-09-06 14:49:42 +00:00
|
|
|
var dx = src._displayOriginX;
|
|
|
|
var dy = src._displayOriginY;
|
2018-09-05 16:11:46 +00:00
|
|
|
|
2018-09-10 21:47:39 +00:00
|
|
|
var alpha = camera.alpha * src.alpha;
|
2018-09-05 16:11:46 +00:00
|
|
|
|
2020-11-26 09:51:40 +00:00
|
|
|
renderer.pipelines.preBatch(src);
|
2020-11-23 16:17:13 +00:00
|
|
|
|
2018-09-06 14:49:42 +00:00
|
|
|
if (src.isFilled)
|
|
|
|
{
|
2018-09-10 21:47:39 +00:00
|
|
|
FillPathWebGL(pipeline, calcMatrix, src, alpha, dx, dy);
|
2018-09-06 14:49:42 +00:00
|
|
|
}
|
2018-09-05 16:11:46 +00:00
|
|
|
|
2018-09-06 14:49:42 +00:00
|
|
|
if (src.isStroked)
|
|
|
|
{
|
2018-09-10 21:47:39 +00:00
|
|
|
StrokePathWebGL(pipeline, src, alpha, dx, dy);
|
2018-09-05 16:11:46 +00:00
|
|
|
}
|
2020-11-23 16:17:13 +00:00
|
|
|
|
2020-11-26 09:51:40 +00:00
|
|
|
renderer.pipelines.postBatch(src);
|
2018-09-05 16:11:46 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
module.exports = PolygonWebGLRenderer;
|