covid19-demo/games.gdevelop-app.com/vincenzo/game-adbfc30b-3d8b-43b1-87a.../pixi-renderers/pixi-filters-tools.js

121 lines
4.6 KiB
JavaScript

// @ts-check
/**
* Contains tools related to PIXI filters handling.
*/
gdjs.PixiFiltersTools = {};
gdjs.PixiFiltersTools.clampValue = function(value, min, max) { return Math.max(min, Math.min(max, value)); };
gdjs.PixiFiltersTools.clampKernelSize = function(value) { return (([5, 7, 9, 11, 13, 15].indexOf(value) !== -1) ? value : 5); };
/** Object.<string, gdjsPixiFiltersToolsFilterCreator> */
gdjs.PixiFiltersTools._filterCreators = {};
/**
* Enable an effect.
* @param {gdjsPixiFiltersToolsFilter} filter The filter to enable or disable
* @param {boolean} value Set to true to enable, false to disable
*/
gdjs.PixiFiltersTools.enableEffect = function(filter, value) {
filter.pixiFilter.enabled = value;
}
/**
* Check if an effect is enabled.
* @param {gdjsPixiFiltersToolsFilter} filter The filter to be checked
* @return {boolean} true if the filter is enabled
*/
gdjs.PixiFiltersTools.isEffectEnabled = function(filter) {
return filter.pixiFilter.enabled;
}
/**
* Return the creator for the filter with the given name, if any.
* @param {string} filterName The name of the filter to get
* @return {?gdjsPixiFiltersToolsFilterCreator} The filter creator, if any (null otherwise).
*/
gdjs.PixiFiltersTools.getFilterCreator = function(filterName) {
if (gdjs.PixiFiltersTools._filterCreators.hasOwnProperty(filterName))
return gdjs.PixiFiltersTools._filterCreators[filterName];
return null;
}
/**
* Register a new PIXI filter creator, to be used by GDJS.
* @param {string} filterName The name of the filter to get
* @param {gdjsPixiFiltersToolsFilterCreator} filterCreator The object used to create the filter.
*/
gdjs.PixiFiltersTools.registerFilterCreator = function(filterName, filterCreator) {
if (gdjs.PixiFiltersTools._filterCreators.hasOwnProperty(filterName))
console.warn("Filter \"" + filterName + "\" was already registered in gdjs.PixiFiltersTools. Replacing it with the new one.");
gdjs.PixiFiltersTools._filterCreators[filterName] = filterCreator;
}
// Type definitions:
/**
* Function to call to create the PIXI filter used at runtime
* @callback gdjsPixiFiltersToolsFilterCreatorMakePIXIFilter
* @param {gdjs.Layer} layer
* @param {Object} effectData
* @returns {Object}
*/
/**
* The function to be called to update the filter at every frame
* @callback gdjsPixiFiltersToolsUpdate
* @param {Object} filter
* @param {gdjs.Layer} layer
* @returns {Object}
*/
/**
* The function to be called to update a parameter (with a number)
* @callback gdjsPixiFiltersToolsUpdateDoubleParameter
* @param {Object} filter
* @param {string} parameterName
* @param {number} value
* @returns {void}
*/
/**
* The function to be called to update a parameter (with a string)
* @callback gdjsPixiFiltersToolsUpdateStringParameter
* @param {Object} filter
* @param {string} parameterName
* @param {string} value
* @returns {void}
*/
/**
* The function to be called to update a parameter (with a boolean)
* @callback gdjsPixiFiltersToolsUpdateBooleanParameter
* @param {Object} filter
* @param {string} parameterName
* @param {boolean} value
* @returns {void}
*/
/**
* A wrapper allowing to create a PIXI filter and update it using a common interface
* @typedef gdjsPixiFiltersToolsFilterCreator
* @type {Object}
* @property {gdjsPixiFiltersToolsFilterCreatorMakePIXIFilter} makePIXIFilter Function to call to create the filter
* @property {gdjsPixiFiltersToolsUpdate} update The function to be called to update the filter at every frame
* @property {gdjsPixiFiltersToolsUpdateDoubleParameter} updateDoubleParameter The function to be called to update a parameter (with a number)
* @property {gdjsPixiFiltersToolsUpdateStringParameter} updateStringParameter The function to be called to update a parameter (with a string)
* @property {gdjsPixiFiltersToolsUpdateBooleanParameter} updateBooleanParameter The function to be called to update a parameter (with a boolean)
*/
/**
* The type of a filter used to manipulate a Pixi filter.
* @typedef gdjsPixiFiltersToolsFilter
* @type {Object}
* @property {any} pixiFilter The PIXI filter
* @property {gdjsPixiFiltersToolsUpdate} update The function to be called to update the filter at every frame
* @property {gdjsPixiFiltersToolsUpdateDoubleParameter} updateDoubleParameter The function to be called to update a parameter (with a number)
* @property {gdjsPixiFiltersToolsUpdateStringParameter} updateStringParameter The function to be called to update a parameter (with a string)
* @property {gdjsPixiFiltersToolsUpdateBooleanParameter} updateBooleanParameter The function to be called to update a parameter (with a boolean)
*/