shadow$provide.module$node_modules$pixi_DOT_js$lib$scene$mesh_simple$RopeGeometry = function(global, require, module, exports) { global = require("module$node_modules$pixi_DOT_js$lib$scene$mesh$shared$MeshGeometry"); "use strict"; const node_modules$pixi_DOT_js$lib$scene$mesh_simple$RopeGeometry$classdecl$var48 = class extends global.MeshGeometry { constructor(options) { const {width, points, textureScale} = {...node_modules$pixi_DOT_js$lib$scene$mesh_simple$RopeGeometry$classdecl$var48.defaultOptions, ...options}; super({positions:new Float32Array(4 * points.length), uvs:new Float32Array(4 * points.length), indices:new Uint32Array(6 * (points.length - 1))}); this.points = points; this._width = width; this.textureScale = textureScale; this._build(); } get width() { return this._width; } _build() { var points = this.points; if (points) { var vertexBuffer = this.getBuffer("aPosition"), uvBuffer = this.getBuffer("aUV"), indexBuffer = this.getIndex(); if (!(1 > points.length)) { vertexBuffer.data.length / 4 !== points.length && (vertexBuffer.data = new Float32Array(4 * points.length), uvBuffer.data = new Float32Array(4 * points.length), indexBuffer.data = new Uint16Array(6 * (points.length - 1))); var uvs = uvBuffer.data; vertexBuffer = indexBuffer.data; uvs[0] = 0; uvs[1] = 0; uvs[2] = 0; uvs[3] = 1; var amount = 0, prev = points[0], textureWidth = this._width * this.textureScale, total = points.length; for (let i = 0; i < total; i++) { const index = 4 * i; if (0 < this.textureScale) { var dx = prev.x - points[i].x; prev = prev.y - points[i].y; dx = Math.sqrt(dx * dx + prev * prev); prev = points[i]; amount += dx / textureWidth; } else { amount = i / (total - 1); } uvs[index] = amount; uvs[index + 1] = 0; uvs[index + 2] = amount; uvs[index + 3] = 1; } points = 0; for (uvs = 0; uvs < total - 1; uvs++) { amount = 2 * uvs, vertexBuffer[points++] = amount, vertexBuffer[points++] = amount + 1, vertexBuffer[points++] = amount + 2, vertexBuffer[points++] = amount + 2, vertexBuffer[points++] = amount + 1, vertexBuffer[points++] = amount + 3; } uvBuffer.update(); indexBuffer.update(); this.updateVertices(); } } } updateVertices() { const points = this.points; if (!(1 > points.length)) { var lastPoint = points[0], vertices = this.buffers[0].data, total = points.length, halfWidth = 0 < this.textureScale ? this.textureScale * this._width / 2 : this._width / 2; for (let i = 0; i < total; i++) { const point = points[i], index = 4 * i; var nextPoint = i < points.length - 1 ? points[i + 1] : point; var perpY = -(nextPoint.x - lastPoint.x); lastPoint = nextPoint.y - lastPoint.y; nextPoint = Math.sqrt(lastPoint * lastPoint + perpY * perpY); 1e-6 > nextPoint ? perpY = lastPoint = 0 : (lastPoint /= nextPoint, perpY /= nextPoint, lastPoint *= halfWidth, perpY *= halfWidth); vertices[index] = point.x + lastPoint; vertices[index + 1] = point.y + perpY; vertices[index + 2] = point.x - lastPoint; vertices[index + 3] = point.y - perpY; lastPoint = point; } this.buffers[0].update(); } } update() { 0 < this.textureScale ? this._build() : this.updateVertices(); } }; global = node_modules$pixi_DOT_js$lib$scene$mesh_simple$RopeGeometry$classdecl$var48; global.defaultOptions = {width:200, points:[], textureScale:0}; exports.RopeGeometry = global; }; //# sourceMappingURL=module$node_modules$pixi_DOT_js$lib$scene$mesh_simple$RopeGeometry.js.map