2018-09-07 11:43:49 +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-07 11:43:49 +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 GetCalcMatrix = require('../../GetCalcMatrix');
|
2018-09-07 11:43:49 +00:00
|
|
|
var Utils = require('../../../renderer/webgl/Utils');
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 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.Line#renderWebGL
|
|
|
|
* @since 3.13.0
|
|
|
|
* @private
|
|
|
|
*
|
|
|
|
* @param {Phaser.Renderer.WebGL.WebGLRenderer} renderer - A reference to the current active WebGL renderer.
|
|
|
|
* @param {Phaser.GameObjects.Line} 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 LineWebGLRenderer = function (renderer, src, camera, parentMatrix)
|
2018-09-07 11:43:49 +00:00
|
|
|
{
|
2020-11-23 16:17:13 +00:00
|
|
|
var pipeline = renderer.pipelines.set(src.pipeline);
|
2018-09-07 11:43:49 +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-07 11:43:49 +00:00
|
|
|
|
2020-11-03 11:22:30 +00:00
|
|
|
pipeline.calcMatrix.copyFrom(result.calc);
|
2018-09-07 11:43:49 +00:00
|
|
|
|
|
|
|
var dx = src._displayOriginX;
|
|
|
|
var dy = src._displayOriginY;
|
|
|
|
var alpha = camera.alpha * src.alpha;
|
|
|
|
|
2020-11-23 16:17:13 +00:00
|
|
|
var postPipeline = (src && src.hasPostPipeline);
|
|
|
|
|
|
|
|
if (postPipeline)
|
|
|
|
{
|
2020-11-23 16:22:11 +00:00
|
|
|
renderer.pipelines.preBatch(src);
|
2020-11-23 16:17:13 +00:00
|
|
|
}
|
|
|
|
|
2018-09-11 12:50:43 +00:00
|
|
|
if (src.isStroked)
|
2018-09-07 11:43:49 +00:00
|
|
|
{
|
|
|
|
var strokeTint = pipeline.strokeTint;
|
`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 color = Utils.getTintAppendFloatAlpha(src.strokeColor, src.strokeAlpha * alpha);
|
2018-09-07 11:43:49 +00:00
|
|
|
|
|
|
|
strokeTint.TL = color;
|
|
|
|
strokeTint.TR = color;
|
|
|
|
strokeTint.BL = color;
|
|
|
|
strokeTint.BR = color;
|
|
|
|
|
|
|
|
var startWidth = src._startWidth;
|
|
|
|
var endWidth = src._endWidth;
|
|
|
|
|
|
|
|
pipeline.batchLine(
|
2018-09-12 15:58:32 +00:00
|
|
|
src.geom.x1 - dx,
|
|
|
|
src.geom.y1 - dy,
|
|
|
|
src.geom.x2 - dx,
|
|
|
|
src.geom.y2 - dy,
|
2018-09-07 11:43:49 +00:00
|
|
|
startWidth,
|
|
|
|
endWidth,
|
|
|
|
1,
|
|
|
|
0,
|
|
|
|
false,
|
`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
|
|
|
result.sprite,
|
|
|
|
result.camera
|
2018-09-07 11:43:49 +00:00
|
|
|
);
|
|
|
|
}
|
2020-11-23 16:17:13 +00:00
|
|
|
|
|
|
|
if (postPipeline)
|
|
|
|
{
|
2020-11-23 16:22:11 +00:00
|
|
|
renderer.pipelines.postBatch(src);
|
2020-11-23 16:17:13 +00:00
|
|
|
}
|
2018-09-07 11:43:49 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
module.exports = LineWebGLRenderer;
|