48 lines
1.1 KiB
JavaScript
48 lines
1.1 KiB
JavaScript
import { extensions, ExtensionType } from '../../extensions/Extensions.mjs';
|
|
import { BigPool } from '../../utils/pool/PoolGroup.mjs';
|
|
|
|
"use strict";
|
|
class MaskEffectManagerClass {
|
|
constructor() {
|
|
/**
|
|
* @private
|
|
*/
|
|
this._effectClasses = [];
|
|
this._tests = [];
|
|
this._initialized = false;
|
|
}
|
|
init() {
|
|
if (this._initialized)
|
|
return;
|
|
this._initialized = true;
|
|
this._effectClasses.forEach((test) => {
|
|
this.add({
|
|
test: test.test,
|
|
maskClass: test
|
|
});
|
|
});
|
|
}
|
|
add(test) {
|
|
this._tests.push(test);
|
|
}
|
|
getMaskEffect(item) {
|
|
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, item);
|
|
}
|
|
}
|
|
return item;
|
|
}
|
|
returnMaskEffect(effect) {
|
|
BigPool.return(effect);
|
|
}
|
|
}
|
|
const MaskEffectManager = new MaskEffectManagerClass();
|
|
extensions.handleByList(ExtensionType.MaskEffect, MaskEffectManager._effectClasses);
|
|
|
|
export { MaskEffectManager, MaskEffectManagerClass };
|
|
//# sourceMappingURL=MaskEffectManager.mjs.map
|