This commit is contained in:
Akko
2025-08-04 18:57:35 +02:00
parent 8cf6e78a79
commit 9495868c2e
5030 changed files with 518594 additions and 17609 deletions

View File

@@ -0,0 +1,70 @@
'use strict';
var buildUvs = require('../../../../rendering/renderers/shared/geometry/utils/buildUvs.js');
var transformVertices = require('../../../../rendering/renderers/shared/geometry/utils/transformVertices.js');
var MeshGeometry = require('../../../mesh/shared/MeshGeometry.js');
var buildCircle = require('../buildCommands/buildCircle.js');
var buildPolygon = require('../buildCommands/buildPolygon.js');
var buildRectangle = require('../buildCommands/buildRectangle.js');
var buildTriangle = require('../buildCommands/buildTriangle.js');
var GraphicsPath = require('../path/GraphicsPath.js');
"use strict";
const buildMap = {
rectangle: buildRectangle.buildRectangle,
polygon: buildPolygon.buildPolygon,
triangle: buildTriangle.buildTriangle,
circle: buildCircle.buildCircle,
ellipse: buildCircle.buildCircle,
roundedRectangle: buildCircle.buildCircle
};
function buildGeometryFromPath(options) {
if (options instanceof GraphicsPath.GraphicsPath) {
options = {
path: options,
textureMatrix: null,
out: null
};
}
const vertices = [];
const uvs = [];
const indices = [];
const shapePath = options.path.shapePath;
const textureMatrix = options.textureMatrix;
shapePath.shapePrimitives.forEach(({ shape, transform: matrix }) => {
const indexOffset = indices.length;
const vertOffset = vertices.length / 2;
const points = [];
const build = buildMap[shape.type];
build.build(shape, points);
if (matrix) {
transformVertices.transformVertices(points, matrix);
}
build.triangulate(points, vertices, 2, vertOffset, indices, indexOffset);
const uvsOffset = uvs.length / 2;
if (textureMatrix) {
if (matrix) {
textureMatrix.append(matrix.clone().invert());
}
buildUvs.buildUvs(vertices, 2, vertOffset, uvs, uvsOffset, 2, vertices.length / 2 - vertOffset, textureMatrix);
} else {
buildUvs.buildSimpleUvs(uvs, uvsOffset, 2, vertices.length / 2 - vertOffset);
}
});
const out = options.out;
if (out) {
out.positions = new Float32Array(vertices);
out.uvs = new Float32Array(uvs);
out.indices = new Uint32Array(indices);
return out;
}
const geometry = new MeshGeometry.MeshGeometry({
positions: new Float32Array(vertices),
uvs: new Float32Array(uvs),
indices: new Uint32Array(indices)
});
return geometry;
}
exports.buildGeometryFromPath = buildGeometryFromPath;
//# sourceMappingURL=buildGeometryFromPath.js.map