kinetic-slider
Version:
A WebGL-powered kinetic slider component using PIXI.js
73 lines (69 loc) • 2.77 kB
JavaScript
;
var pixiFilters = require('pixi-filters');
var ShaderResourceManager = require('../managers/ShaderResourceManager.cjs');
function createBevelFilter(config) {
const shaderManager = ShaderResourceManager.ShaderResourceManager.getInstance();
const lightColorKey = config.lightColor ? config.lightColor.toString(16) : "ffffff";
const shadowColorKey = config.shadowColor ? config.shadowColor.toString(16) : "000000";
const shaderKey = `bevel-filter-${config.rotation || 45}-${config.thickness || 2}-${lightColorKey}-${shadowColorKey}`;
const options = {
rotation: config.rotation ?? 45,
thickness: config.thickness ?? 2,
lightColor: config.lightColor ?? 16777215,
lightAlpha: config.lightAlpha ?? 0.7,
shadowColor: config.shadowColor ?? 0,
shadowAlpha: config.shadowAlpha ?? 0.7
};
const filter = new pixiFilters.BevelFilter(options);
try {
shaderManager.registerFilter(filter, shaderKey);
} catch (error) {
console.warn("Error registering bevel filter with shader manager:", error);
}
const updateIntensity = (intensity) => {
const normalizedIntensity = Math.max(0, Math.min(10, intensity));
if (config.primaryProperty) {
switch (config.primaryProperty) {
case "thickness":
filter.thickness = normalizedIntensity * 2;
break;
case "lightAlpha":
filter.lightAlpha = normalizedIntensity / 10;
break;
case "shadowAlpha":
filter.shadowAlpha = normalizedIntensity / 10;
break;
case "rotation":
filter.rotation = normalizedIntensity * 36;
break;
default:
filter.thickness = normalizedIntensity * 2;
}
} else {
filter.thickness = normalizedIntensity * 2;
}
};
updateIntensity(config.intensity);
const reset = () => {
filter.rotation = config.rotation !== void 0 ? config.rotation : 45;
filter.thickness = config.thickness !== void 0 ? config.thickness : 2;
filter.lightColor = config.lightColor !== void 0 ? config.lightColor : 16777215;
filter.lightAlpha = config.lightAlpha !== void 0 ? config.lightAlpha : 0.7;
filter.shadowColor = config.shadowColor !== void 0 ? config.shadowColor : 0;
filter.shadowAlpha = config.shadowAlpha !== void 0 ? config.shadowAlpha : 0.7;
if (config.intensity !== void 0) {
updateIntensity(config.intensity);
}
};
const dispose = () => {
try {
shaderManager.releaseFilter(filter, shaderKey);
} catch (error) {
console.warn("Error releasing bevel filter shader:", error);
}
filter.destroy();
};
return { filter, updateIntensity, reset, dispose };
}
exports.createBevelFilter = createBevelFilter;
//# sourceMappingURL=bevelFilter.cjs.map