UNPKG

phaser4-rex-plugins

Version:
184 lines (154 loc) 5.16 kB
import UpdateTexture from './UpdateTexture.js'; const RenderTexture = Phaser.GameObjects.RenderTexture; const GetValue = Phaser.Utils.Objects.GetValue; class Line extends RenderTexture { constructor(scene, config) { super(scene); this.redraw = false; this._tileSprite = undefined; // Reserved for drawing image this._image = undefined; // Reserved for drawing image var lineStart = GetValue(config, 'start', undefined); if (typeof (lineStart) === 'string') { this.setLineStartPosition(0, 0); this.setLineStartTexture(lineStart, undefined); this.setLineStartOrigin(undefined); } else { this.setLineStartPosition(GetValue(lineStart, 'x', 0), GetValue(lineStart, 'y', 0)); this.setLineStartTexture(GetValue(lineStart, 'key', undefined), GetValue(lineStart, 'frame', undefined)); this.setLineStartOrigin(GetValue(lineStart, 'origin', undefined)); } var lineEnd = GetValue(config, 'end', undefined); if (typeof (lineEnd) === 'string') { this.setLineEndPosition(0, 0); this.setLineEndTexture(lineEnd, undefined); this.setLineEndOrigin(undefined); } else { this.setLineEndPosition(GetValue(lineEnd, 'x', 0), GetValue(lineEnd, 'y', 0)); this.setLineEndTexture(GetValue(lineEnd, 'key', undefined), GetValue(lineEnd, 'frame', undefined)); this.setLineEndOrigin(GetValue(lineEnd, 'origin', undefined)); } var lineBody = GetValue(config, 'body', undefined); if (typeof (lineBody) === 'string') { this.setLineBodyTexture(lineBody, undefined); this.setLineBodyExtendMode(0); this.setLineBodyWidth(undefined); } else { this.setLineBodyTexture(GetValue(lineBody, 'key', undefined), GetValue(lineBody, 'frame', undefined)); this.setLineBodyExtendMode(GetValue(lineBody, 'extendMode', 1)); this.setLineBodyWidth(GetValue(lineBody, 'width', undefined)); } } get x0() { return this._x0; } set x0(value) { this.redraw |= (this._x0 !== value); this._x0 = value; } get y0() { return this._y0; } set y0(value) { this.redraw |= (this._y0 !== value); this._y0 = value; } get x1() { return this._x1; } set x1(value) { this.redraw |= (this._x1 !== value); this._x1 = value; } get y1() { return this._y1; } set y1(value) { this.redraw |= (this._y1 !== value); this._y1 = value; } setLineStartPosition(x, y) { this.x0 = x; this.y0 = y; return this; } setLineEndPosition(x, y) { this.x1 = x; this.y1 = y; return this; } setLineStartTexture(key, frame) { this.lineStartTexture = key; this.lineStartFrameName = frame; this.redraw = true; return this; } setLineStartOrigin(origin) { if (origin === undefined) { origin = 0; } this.lineStartOrigin = origin; this.redraw = true; return this; } get lineStartFrame() { return this.scene.sys.textures.getFrame(this.lineStartTexture, this.lineStartFrameName); } setLineEndTexture(key, frame) { this.lineEndTexture = key; this.lineEndFrameName = frame; this.redraw = true; return this; } setLineEndOrigin(origin) { if (origin === undefined) { origin = 1; } this.lineEndOrigin = origin; this.redraw = true; return this; } get lineEndFrame() { return this.scene.sys.textures.getFrame(this.lineEndTexture, this.lineEndFrameName); } setLineBodyTexture(key, frame) { this.lineBodyTexture = key; this.lineBodyFrameName = frame; this.redraw = true; return this; } setLineBodyWidth(width) { this.lineBodyWidth = width; this.redraw = true; return this; } setLineBodyExtendMode(mode) { if (typeof (mode) === 'string') { mode = EXTENDMODE[mode]; } this.lineBodyExtendMode = mode; return this; } get lineBodyFrame() { return this.scene.sys.textures.getFrame(this.lineBodyTexture, this.lineBodyFrameName); } renderWebGL(renderer, src, camera, parentMatrix) { this.updateTexture(); super.renderWebGL(renderer, src, camera, parentMatrix); } renderCanvas(renderer, src, camera, parentMatrix) { this.updateTexture(); super.renderCanvas(renderer, src, camera, parentMatrix); } } const EXTENDMODE = { scale: 0, repeat: 1, } var methods = { updateTexture: UpdateTexture, } Object.assign( Line.prototype, methods ); export default Line;