/
githubmirror
/
pixijs
Обзор
Документация
Войти
/
githubmirror
/
pixijs
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
src/rendering/mask/MaskEffectManager.ts
85 строк
2 KB
Zyie
chore: add standard/advanced tags to documentation (#11448)
03 июн 2025, 10:12
Не верифицирован
03 июн 2025, 10:12
7d91234
Код
Авторство
О чём код?
import { extensions, ExtensionType } from '../../extensions/Extensions'; import { BigPool } from '../../utils/pool/PoolGroup'; import type { Effect, EffectConstructor } from '../../scene/container/Effect'; import type { PoolItem, PoolItemConstructor } from '../../utils/pool/Pool'; interface MaskConversionTest { test: (item: any) => boolean; maskClass: new (item: any) => Effect & PoolItem; } /** * Represents a mask effect that can be applied to a container. * @category rendering * @advanced */ export type MaskEffect = {mask: unknown} & Effect; /** * A class that manages the conversion of masks to mask effects. * @category rendering * @ignore */ export class MaskEffectManagerClass { /** @private */ public readonly _effectClasses: EffectConstructor[] = []; private readonly _tests: MaskConversionTest[] = []; private _initialized = false; public init() { if (this._initialized) return; this._initialized = true; this._effectClasses.forEach((test) => { this.add({ test: test.test, maskClass: test }); }); } public add(test: MaskConversionTest) { this._tests.push(test); } public getMaskEffect(item: any): MaskEffect { if (!this._initialized) this.init(); for (let i = 0; i < this._tests.length; i++) { const test = this._tests[i]; if (test.test(item)) { return BigPool.get(test.maskClass as PoolItemConstructor<MaskEffect & PoolItem>, item); } } return item; } public returnMaskEffect(effect: Effect & PoolItem) { BigPool.return(effect); } } /** * A class that manages the conversion of masks to mask effects. * @class * @category rendering * @advanced */ export const MaskEffectManager = new MaskEffectManagerClass(); // Handle registration of extensions extensions .handleByList(ExtensionType.MaskEffect, MaskEffectManager._effectClasses);