Initial
This commit is contained in:
46
resources/app/node_modules/@pixi/graphics/lib/utils/buildPoly.js
generated
vendored
Normal file
46
resources/app/node_modules/@pixi/graphics/lib/utils/buildPoly.js
generated
vendored
Normal file
@@ -0,0 +1,46 @@
|
||||
"use strict";
|
||||
var core = require("@pixi/core");
|
||||
function fixOrientation(points, hole = !1) {
|
||||
const m = points.length;
|
||||
if (m < 6)
|
||||
return;
|
||||
let area = 0;
|
||||
for (let i = 0, x1 = points[m - 2], y1 = points[m - 1]; i < m; i += 2) {
|
||||
const x2 = points[i], y2 = points[i + 1];
|
||||
area += (x2 - x1) * (y2 + y1), x1 = x2, y1 = y2;
|
||||
}
|
||||
if (!hole && area > 0 || hole && area <= 0) {
|
||||
const n = m / 2;
|
||||
for (let i = n + n % 2; i < m; i += 2) {
|
||||
const i1 = m - i - 2, i2 = m - i - 1, i3 = i, i4 = i + 1;
|
||||
[points[i1], points[i3]] = [points[i3], points[i1]], [points[i2], points[i4]] = [points[i4], points[i2]];
|
||||
}
|
||||
}
|
||||
}
|
||||
const buildPoly = {
|
||||
build(graphicsData) {
|
||||
graphicsData.points = graphicsData.shape.points.slice();
|
||||
},
|
||||
triangulate(graphicsData, graphicsGeometry) {
|
||||
let points = graphicsData.points;
|
||||
const holes = graphicsData.holes, verts = graphicsGeometry.points, indices = graphicsGeometry.indices;
|
||||
if (points.length >= 6) {
|
||||
fixOrientation(points, !1);
|
||||
const holeArray = [];
|
||||
for (let i = 0; i < holes.length; i++) {
|
||||
const hole = holes[i];
|
||||
fixOrientation(hole.points, !0), holeArray.push(points.length / 2), points = points.concat(hole.points);
|
||||
}
|
||||
const triangles = core.utils.earcut(points, holeArray, 2);
|
||||
if (!triangles)
|
||||
return;
|
||||
const vertPos = verts.length / 2;
|
||||
for (let i = 0; i < triangles.length; i += 3)
|
||||
indices.push(triangles[i] + vertPos), indices.push(triangles[i + 1] + vertPos), indices.push(triangles[i + 2] + vertPos);
|
||||
for (let i = 0; i < points.length; i++)
|
||||
verts.push(points[i]);
|
||||
}
|
||||
}
|
||||
};
|
||||
exports.buildPoly = buildPoly;
|
||||
//# sourceMappingURL=buildPoly.js.map
|
||||
Reference in New Issue
Block a user