UNPKG

pixi.js

Version:

<p align="center"> <a href="https://pixijs.com" target="_blank" rel="noopener noreferrer"> <img height="150" src="https://files.pixijs.download/branding/pixijs-logo-transparent-dark.svg?v=1" alt="PixiJS logo"> </a> </p> <br/> <p align="center">

110 lines (107 loc) 3.32 kB
import { Buffer } from '../../../rendering/renderers/shared/buffer/Buffer.mjs'; import { BufferUsage } from '../../../rendering/renderers/shared/buffer/const.mjs'; import { Geometry } from '../../../rendering/renderers/shared/geometry/Geometry.mjs'; import { deprecation, v8_0_0 } from '../../../utils/logging/deprecation.mjs'; "use strict"; const _MeshGeometry = class _MeshGeometry extends Geometry { constructor(...args) { let options = args[0] ?? {}; if (options instanceof Float32Array) { deprecation(v8_0_0, "use new MeshGeometry({ positions, uvs, indices }) instead"); options = { positions: options, uvs: args[1], indices: args[2] }; } options = { ..._MeshGeometry.defaultOptions, ...options }; const positions = options.positions || new Float32Array([0, 0, 1, 0, 1, 1, 0, 1]); let uvs = options.uvs; if (!uvs) { if (options.positions) { uvs = new Float32Array(positions.length); } else { uvs = new Float32Array([0, 0, 1, 0, 1, 1, 0, 1]); } } const indices = options.indices || new Uint32Array([0, 1, 2, 0, 2, 3]); const shrinkToFit = options.shrinkBuffersToFit; const positionBuffer = new Buffer({ data: positions, label: "attribute-mesh-positions", shrinkToFit, usage: BufferUsage.VERTEX | BufferUsage.COPY_DST }); const uvBuffer = new Buffer({ data: uvs, label: "attribute-mesh-uvs", shrinkToFit, usage: BufferUsage.VERTEX | BufferUsage.COPY_DST }); const indexBuffer = new Buffer({ data: indices, label: "index-mesh-buffer", shrinkToFit, usage: BufferUsage.INDEX | BufferUsage.COPY_DST }); super({ attributes: { aPosition: { buffer: positionBuffer, format: "float32x2", stride: 2 * 4, offset: 0 }, aUV: { buffer: uvBuffer, format: "float32x2", stride: 2 * 4, offset: 0 } }, indexBuffer, topology: options.topology }); this.batchMode = "auto"; } /** The positions of the mesh. */ get positions() { return this.attributes.aPosition.buffer.data; } /** * Set the positions of the mesh. * When setting the positions, its important that the uvs array is at least as long as the positions array. * otherwise the geometry will not be valid. * @param {Float32Array} value - The positions of the mesh. */ set positions(value) { this.attributes.aPosition.buffer.data = value; } /** The UVs of the mesh. */ get uvs() { return this.attributes.aUV.buffer.data; } /** * Set the UVs of the mesh. * Its important that the uvs array you set is at least as long as the positions array. * otherwise the geometry will not be valid. * @param {Float32Array} value - The UVs of the mesh. */ set uvs(value) { this.attributes.aUV.buffer.data = value; } /** The indices of the mesh. */ get indices() { return this.indexBuffer.data; } set indices(value) { this.indexBuffer.data = value; } }; _MeshGeometry.defaultOptions = { topology: "triangle-list", shrinkBuffersToFit: false }; let MeshGeometry = _MeshGeometry; export { MeshGeometry }; //# sourceMappingURL=MeshGeometry.mjs.map