UNPKG

phaser4-rex-plugins

Version:
172 lines (138 loc) 5.06 kB
import HasProperty from '../../utils/object/HasProperty.js'; import GetFilterList from '../../utils/renderer/filterpluginbase/GetFilterList.js'; import AddClearEffectCallback from './AddClearEffectCallback.js'; import InstallWipeFX from '../../shaders/p3fx/InstallWipeFX.js'; var AddRevealProperties = function (gameObject) { // Don't attach properties again if (HasProperty(gameObject, 'revealLeft')) { return gameObject; } InstallWipeFX(gameObject); var filterList = GetFilterList(gameObject); var revealLeft, revealRight, revealUp, revealDown, revealWidth = 0.1; var ClearRevealFlags = function () { revealLeft = null; revealRight = null; revealUp = null; revealDown = null; } var RemoveEffect = function (gameObject) { if (gameObject._revealEffect) { filterList.remove(gameObject._revealEffect); gameObject._revealEffect = undefined; } } Object.defineProperty(gameObject, 'revealLeft', { get: function () { return revealLeft; }, set: function (value) { if (revealLeft === value) { return; } ClearRevealFlags(); revealLeft = value; if ((revealLeft === null) || (revealLeft === false)) { RemoveEffect(gameObject); } else { if (!gameObject._revealEffect) { gameObject._revealEffect = filterList.addP3Reveal(revealWidth, 0, 0); } gameObject._revealEffect.direction = 1; gameObject._revealEffect.axis = 0; gameObject._revealEffect.progress = revealLeft; } }, }) Object.defineProperty(gameObject, 'revealRight', { get: function () { return revealRight; }, set: function (value) { if (revealRight === value) { return; } ClearRevealFlags(); revealRight = value; if ((revealRight === null) || (revealRight === false)) { RemoveEffect(gameObject); } else { if (!gameObject._revealEffect) { gameObject._revealEffect = filterList.addP3Reveal(revealWidth, 0, 0); } gameObject._revealEffect.direction = 0; gameObject._revealEffect.axis = 0; gameObject._revealEffect.progress = revealRight; } }, }) Object.defineProperty(gameObject, 'revealUp', { get: function () { return revealUp; }, set: function (value) { if (revealUp === value) { return; } ClearRevealFlags(); revealUp = value; if ((revealUp === null) || (revealUp === false)) { RemoveEffect(gameObject); } else { if (!gameObject._revealEffect) { gameObject._revealEffect = filterList.addP3Reveal(revealWidth, 0, 0); } gameObject._revealEffect.direction = 1; gameObject._revealEffect.axis = 1; gameObject._revealEffect.progress = revealUp; } }, }) Object.defineProperty(gameObject, 'revealDown', { get: function () { return revealDown; }, set: function (value) { if (revealDown === value) { return; } ClearRevealFlags(); revealDown = value; if ((revealDown === null) || (revealDown === false)) { RemoveEffect(gameObject); } else { if (!gameObject._revealEffect) { gameObject._revealEffect = filterList.addP3Reveal(revealWidth, 0, 0); } gameObject._revealEffect.direction = 0; gameObject._revealEffect.axis = 1; gameObject._revealEffect.progress = revealDown; } }, }) Object.defineProperty(gameObject, 'revealWidth', { get: function () { return revealWidth; }, set: function (value) { if (revealWidth === value) { return; } revealWidth = value; if (gameObject._revealEffect) { gameObject._revealEffect.wipeWidth = revealWidth; } }, }) gameObject.revealLeft = null; AddClearEffectCallback(gameObject, 'revealLeft'); AddClearEffectCallback(gameObject, 'revealRight'); AddClearEffectCallback(gameObject, 'revealUp'); AddClearEffectCallback(gameObject, 'revealDown'); return gameObject; } export default AddRevealProperties;