Files
nothoughts/node_modules/pixi.js/lib/scene/mesh-simple/MeshRope.mjs
2025-08-04 18:57:35 +02:00

45 lines
1.5 KiB
JavaScript

import { definedProps } from '../container/utils/definedProps.mjs';
import { Mesh } from '../mesh/shared/Mesh.mjs';
import { RopeGeometry } from './RopeGeometry.mjs';
"use strict";
const _MeshRope = class _MeshRope extends Mesh {
/**
* Note: The wrap mode of the texture is set to REPEAT if `textureScale` is positive.
* @param options
* @param options.texture - The texture to use on the rope.
* @param options.points - An array of {@link math.Point} objects to construct this rope.
* @param {number} options.textureScale - Optional. Positive values scale rope texture
* keeping its aspect ratio. You can reduce alpha channel artifacts by providing a larger texture
* and downsampling here. If set to zero, texture will be stretched instead.
*/
constructor(options) {
const { texture, points, textureScale, ...rest } = { ..._MeshRope.defaultOptions, ...options };
const ropeGeometry = new RopeGeometry(definedProps({ width: texture.height, points, textureScale }));
if (textureScale > 0) {
texture.source.style.addressMode = "repeat";
}
super(definedProps({
...rest,
texture,
geometry: ropeGeometry
}));
this.autoUpdate = true;
this.onRender = this._render;
}
_render() {
const geometry = this.geometry;
if (this.autoUpdate || geometry._width !== this.texture.height) {
geometry._width = this.texture.height;
geometry.update();
}
}
};
_MeshRope.defaultOptions = {
textureScale: 0
};
let MeshRope = _MeshRope;
export { MeshRope };
//# sourceMappingURL=MeshRope.mjs.map