Files
Foundry-VTT-Docker/resources/app/node_modules/@pixi/mesh-extras/lib/geometry/PlaneGeometry.js
2025-01-04 00:34:03 +01:00

40 lines
1.7 KiB
JavaScript

"use strict";
var mesh = require("@pixi/mesh");
class PlaneGeometry extends mesh.MeshGeometry {
/**
* @param width - The width of the plane.
* @param height - The height of the plane.
* @param segWidth - Number of horizontal segments.
* @param segHeight - Number of vertical segments.
*/
constructor(width = 100, height = 100, segWidth = 10, segHeight = 10) {
super(), this.segWidth = segWidth, this.segHeight = segHeight, this.width = width, this.height = height, this.build();
}
/**
* Refreshes plane coordinates
* @private
*/
build() {
const total = this.segWidth * this.segHeight, verts = [], uvs = [], indices = [], segmentsX = this.segWidth - 1, segmentsY = this.segHeight - 1, sizeX = this.width / segmentsX, sizeY = this.height / segmentsY;
for (let i = 0; i < total; i++) {
const x = i % this.segWidth, y = i / this.segWidth | 0;
verts.push(x * sizeX, y * sizeY), uvs.push(x / segmentsX, y / segmentsY);
}
const totalSub = segmentsX * segmentsY;
for (let i = 0; i < totalSub; i++) {
const xpos = i % segmentsX, ypos = i / segmentsX | 0, value = ypos * this.segWidth + xpos, value2 = ypos * this.segWidth + xpos + 1, value3 = (ypos + 1) * this.segWidth + xpos, value4 = (ypos + 1) * this.segWidth + xpos + 1;
indices.push(
value,
value2,
value3,
value2,
value4,
value3
);
}
this.buffers[0].data = new Float32Array(verts), this.buffers[1].data = new Float32Array(uvs), this.indexBuffer.data = new Uint16Array(indices), this.buffers[0].update(), this.buffers[1].update(), this.indexBuffer.update();
}
}
exports.PlaneGeometry = PlaneGeometry;
//# sourceMappingURL=PlaneGeometry.js.map