47 lines
1.2 KiB
JavaScript
47 lines
1.2 KiB
JavaScript
import { ExtensionType } from '../../../extensions/Extensions.mjs';
|
|
import { Sprite } from '../../../scene/sprite/Sprite.mjs';
|
|
import { addMaskBounds } from '../utils/addMaskBounds.mjs';
|
|
import { addMaskLocalBounds } from '../utils/addMaskLocalBounds.mjs';
|
|
|
|
"use strict";
|
|
class AlphaMask {
|
|
constructor(options) {
|
|
this.priority = 0;
|
|
this.pipe = "alphaMask";
|
|
if (options?.mask) {
|
|
this.init(options.mask);
|
|
}
|
|
}
|
|
init(mask) {
|
|
this.mask = mask;
|
|
this.renderMaskToTexture = !(mask instanceof Sprite);
|
|
this.mask.renderable = this.renderMaskToTexture;
|
|
this.mask.includeInBuild = !this.renderMaskToTexture;
|
|
this.mask.measurable = false;
|
|
}
|
|
reset() {
|
|
this.mask.measurable = true;
|
|
this.mask = null;
|
|
}
|
|
addBounds(bounds, skipUpdateTransform) {
|
|
addMaskBounds(this.mask, bounds, skipUpdateTransform);
|
|
}
|
|
addLocalBounds(bounds, localRoot) {
|
|
addMaskLocalBounds(this.mask, bounds, localRoot);
|
|
}
|
|
containsPoint(point, hitTestFn) {
|
|
const mask = this.mask;
|
|
return hitTestFn(mask, point);
|
|
}
|
|
destroy() {
|
|
this.reset();
|
|
}
|
|
static test(mask) {
|
|
return mask instanceof Sprite;
|
|
}
|
|
}
|
|
AlphaMask.extension = ExtensionType.MaskEffect;
|
|
|
|
export { AlphaMask };
|
|
//# sourceMappingURL=AlphaMask.mjs.map
|