UNPKG

phaser3-rex-plugins

Version:
1,622 lines (1,582 loc) 98 kB
(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.rexlayermanagerplugin = factory()); })(this, (function () { 'use strict'; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } function _get() { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get.bind(); } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); } function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } var EventEmitterMethods = { setEventEmitter: function setEventEmitter(eventEmitter, EventEmitterClass) { if (EventEmitterClass === undefined) { EventEmitterClass = Phaser.Events.EventEmitter; // Use built-in EventEmitter class by default } this._privateEE = eventEmitter === true || eventEmitter === undefined; this._eventEmitter = this._privateEE ? new EventEmitterClass() : eventEmitter; return this; }, destroyEventEmitter: function destroyEventEmitter() { if (this._eventEmitter && this._privateEE) { this._eventEmitter.shutdown(); } return this; }, getEventEmitter: function getEventEmitter() { return this._eventEmitter; }, on: function on() { if (this._eventEmitter) { this._eventEmitter.on.apply(this._eventEmitter, arguments); } return this; }, once: function once() { if (this._eventEmitter) { this._eventEmitter.once.apply(this._eventEmitter, arguments); } return this; }, off: function off() { if (this._eventEmitter) { this._eventEmitter.off.apply(this._eventEmitter, arguments); } return this; }, emit: function emit(event) { if (this._eventEmitter && event) { this._eventEmitter.emit.apply(this._eventEmitter, arguments); } return this; }, addListener: function addListener() { if (this._eventEmitter) { this._eventEmitter.addListener.apply(this._eventEmitter, arguments); } return this; }, removeListener: function removeListener() { if (this._eventEmitter) { this._eventEmitter.removeListener.apply(this._eventEmitter, arguments); } return this; }, removeAllListeners: function removeAllListeners() { if (this._eventEmitter) { this._eventEmitter.removeAllListeners.apply(this._eventEmitter, arguments); } return this; }, listenerCount: function listenerCount() { if (this._eventEmitter) { return this._eventEmitter.listenerCount.apply(this._eventEmitter, arguments); } return 0; }, listeners: function listeners() { if (this._eventEmitter) { return this._eventEmitter.listeners.apply(this._eventEmitter, arguments); } return []; }, eventNames: function eventNames() { if (this._eventEmitter) { return this._eventEmitter.eventNames.apply(this._eventEmitter, arguments); } return []; } }; var PropertyMethods$1 = { hasProperty: function hasProperty(property) { var gameObject = this.gameObject; if (gameObject.hasOwnProperty(property)) { return true; } else { var value = gameObject[property]; return value !== undefined; } }, getProperty: function getProperty(property) { return this.gameObject[property]; }, setProperty: function setProperty(property, value) { this.gameObject[property] = value; return this; }, easeProperty: function easeProperty(property, value, duration, ease, repeat, isYoyo, _onComplete, target) { if (target === undefined) { target = this.gameObject; } var tweenTasks = this.tweens; var tweenTask = tweenTasks[property]; if (tweenTask) { tweenTask.remove(); } var config = { targets: target, duration: duration, ease: ease, repeat: repeat, yoyo: isYoyo, onComplete: function onComplete() { tweenTasks[property].remove(); tweenTasks[property] = null; if (_onComplete) { _onComplete(target, property); } }, onCompleteScope: this }; config[property] = value; tweenTask = this.scene.tweens.add(config); tweenTask.timeScale = this.timeScale; tweenTasks[property] = tweenTask; return this; }, getTweenTask: function getTweenTask(property) { return this.tweens[property]; }, freeTweens: function freeTweens() { var tweenTasks = this.tweens, tweenTask; for (var propName in tweenTasks) { tweenTask = tweenTasks[propName]; if (tweenTask) { tweenTask.remove(); } tweenTasks[propName] = null; } return this; } }; var CallMethods$1 = { hasMethod: function hasMethod(methodName) { return typeof this.gameObject[methodName] === 'function'; }, call: function call(methodName) { if (!this.hasMethod(methodName)) { return this; } var gameObject = this.gameObject; for (var _len = arguments.length, parameters = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { parameters[_key - 1] = arguments[_key]; } gameObject[methodName].apply(gameObject, parameters); return this; } }; var DataMethods$1 = { hasData: function hasData(dataKey) { var gameObject = this.gameObject; return gameObject.data ? gameObject.data.has(dataKey) : false; }, getData: function getData(dataKey) { return this.gameObject.getData(dataKey); }, setData: function setData(dataKey, value) { this.gameObject.setData(dataKey, value); return this; } }; var BobBase = /*#__PURE__*/function () { function BobBase(GOManager, gameObject, name) { _classCallCheck(this, BobBase); this.GOManager = GOManager; this.tweens = {}; this.effects = {}; this.setGO(gameObject, name); } _createClass(BobBase, [{ key: "scene", get: function get() { return this.GOManager.scene; } }, { key: "timeScale", get: function get() { return this.GOManager.timeScale; } }, { key: "destroy", value: function destroy() { this.freeGO(); this.GOManager = undefined; } }, { key: "freeGO", value: function freeGO() { this.freeTweens(); this.gameObject.destroy(); this.gameObject = undefined; return this; } }, { key: "setGO", value: function setGO(gameObject, name) { gameObject.setName(name); this.gameObject = gameObject; this.name = name; this.freeTweens(); return this; } }, { key: "setTimeScale", value: function setTimeScale(timeScale) { var tweenTasks = this.tweens; for (var key in tweenTasks) { var tweenTask = tweenTasks[key]; if (tweenTask) { tweenTask.timeScale = timeScale; } } return this; } }]); return BobBase; }(); Object.assign(BobBase.prototype, PropertyMethods$1, CallMethods$1, DataMethods$1); var IsEmpty = function IsEmpty(source) { for (var k in source) { return false; } return true; }; var HasProperty = function HasProperty(obj, prop) { if (!obj) { return false; } if (obj.hasOwnProperty(prop)) { return true; } while (obj) { if (Object.getOwnPropertyDescriptor(obj, prop)) { return true; } obj = obj.__proto__; } return false; }; var GetFXFactory = function GetFXFactory(gameObject) { if (gameObject.preFX) { return gameObject.preFX; } if (gameObject.postFX) { return gameObject.postFX; } return null; }; var AddClearEffectCallback = function AddClearEffectCallback(gameObject, effectSwitchName) { if (!gameObject._effectSwitchNames) { gameObject._effectSwitchNames = []; gameObject.clearAllEffects = function () { var effectSwitchNames = gameObject._effectSwitchNames; for (var i = 0, cnt = effectSwitchNames.length; i < cnt; i++) { gameObject[effectSwitchNames[i]] = null; } return gameObject; }; gameObject.on('destroy', gameObject.clearAllEffects, gameObject); } gameObject._effectSwitchNames.push(effectSwitchName); }; var AddBarrelProperties = function AddBarrelProperties(gameObject) { // Don't attach properties again if (HasProperty(gameObject, 'barrel')) { return gameObject; } var fxFactory = GetFXFactory(gameObject); if (!fxFactory) { return gameObject; } var barrel; Object.defineProperty(gameObject, 'barrel', { get: function get() { return barrel; }, set: function set(value) { if (barrel === value) { return; } barrel = value; if (barrel === null || barrel === false) { if (gameObject._barrelEffect) { fxFactory.remove(gameObject._barrelEffect); gameObject._barrelEffect = undefined; } } else { if (!gameObject._barrelEffect) { gameObject._barrelEffect = fxFactory.addBarrel(); } gameObject._barrelEffect.amount = barrel; } } }); gameObject.barrel = null; AddClearEffectCallback(gameObject, 'barrel'); return gameObject; }; var AddColorMatrixEffectPropertiesBase = function AddColorMatrixEffectPropertiesBase(gameObject, effectName, inputMode) { // Don't attach properties again if (HasProperty(gameObject, effectName)) { return gameObject; } var fxFactory = GetFXFactory(gameObject); if (!fxFactory) { return gameObject; } var EffectInstancePropertyName = "_".concat(effectName, "Effect"); var currentValue; Object.defineProperty(gameObject, effectName, { get: function get() { return currentValue; }, set: function set(value) { if (currentValue === value) { return; } currentValue = value; if (currentValue === null || currentValue === false) { if (gameObject[EffectInstancePropertyName]) { fxFactory.remove(gameObject[EffectInstancePropertyName]); gameObject[EffectInstancePropertyName] = undefined; } } else { if (!gameObject[EffectInstancePropertyName]) { gameObject[EffectInstancePropertyName] = fxFactory.addColorMatrix(); } var effectInstance = gameObject[EffectInstancePropertyName]; effectInstance[effectName](inputMode === 1 ? value : undefined); } } }); gameObject[effectName] = null; AddClearEffectCallback(gameObject, effectName); return gameObject; }; var AddBlackWhiteProperties = function AddBlackWhiteProperties(gameObject) { AddColorMatrixEffectPropertiesBase(gameObject, 'blackWhite'); return gameObject; }; var AddBloomProperties = function AddBloomProperties(gameObject) { // Don't attach properties again if (HasProperty(gameObject, 'bloomColor')) { return gameObject; } var fxFactory = GetFXFactory(gameObject); if (!fxFactory) { return gameObject; } var bloomColor, bloomOffsetX = 1, bloomOffsetY = 1, bloomBlurStrength = 1, bloomStrength = 1, bloomSteps = 4; Object.defineProperty(gameObject, 'bloomColor', { get: function get() { return bloomColor; }, set: function set(value) { if (bloomColor === value) { return; } bloomColor = value; if (bloomColor === null || bloomColor === false) { if (gameObject._bloom) { fxFactory.remove(gameObject._bloom); gameObject._bloom = undefined; fxFactory.setPadding(0); } } else { if (!gameObject._bloom) { gameObject._bloom = fxFactory.addBloom(bloomColor, bloomOffsetX, bloomOffsetY, bloomBlurStrength, bloomStrength, bloomSteps); fxFactory.setPadding(Math.max(bloomOffsetX, bloomOffsetY) + 1); } gameObject._bloom.color = bloomColor; } } }); Object.defineProperty(gameObject, 'bloomOffsetX', { get: function get() { return bloomOffsetX; }, set: function set(value) { if (bloomOffsetX === value) { return; } bloomOffsetX = value; if (gameObject._bloom) { var offset = Math.max(bloomOffsetX, bloomOffsetY); fxFactory.setPadding(offset + 1); gameObject._bloom.offsetX = bloomOffsetX; } } }); Object.defineProperty(gameObject, 'bloomOffsetY', { get: function get() { return bloomOffsetY; }, set: function set(value) { if (bloomOffsetY === value) { return; } bloomOffsetY = value; if (gameObject._bloom) { var offset = Math.max(bloomOffsetX, bloomOffsetY); fxFactory.setPadding(offset + 1); gameObject._bloom.offsetY = bloomOffsetY; } } }); Object.defineProperty(gameObject, 'bloomBlurStrength', { get: function get() { return bloomBlurStrength; }, set: function set(value) { if (bloomBlurStrength === value) { return; } bloomBlurStrength = value; if (gameObject._bloom) { gameObject._bloom.blurStrength = bloomBlurStrength; } } }); Object.defineProperty(gameObject, 'bloomStrength', { get: function get() { return bloomStrength; }, set: function set(value) { if (bloomStrength === value) { return; } bloomStrength = value; if (gameObject._bloom) { gameObject._bloom.strength = bloomStrength; } } }); Object.defineProperty(gameObject, 'bloomSteps', { get: function get() { return bloomSteps; }, set: function set(value) { if (bloomSteps === value) { return; } bloomSteps = value; if (gameObject._bloom) { gameObject._bloom.steps = bloomSteps; } } }); gameObject.bloomColor = null; AddClearEffectCallback(gameObject, 'bloomColor'); return gameObject; }; var AddBlurProperties = function AddBlurProperties(gameObject) { // Don't attach properties again if (HasProperty(gameObject, 'blurColor')) { return gameObject; } var fxFactory = GetFXFactory(gameObject); if (!fxFactory) { return gameObject; } var blurColor, blurQuality = 0, blurX = 1, blurY = 1, blurStrength = 1, blurSteps = 4; Object.defineProperty(gameObject, 'blurColor', { get: function get() { return blurColor; }, set: function set(value) { if (blurColor === value) { return; } blurColor = value; if (blurColor === null || blurColor === false) { if (gameObject._blur) { fxFactory.remove(gameObject._blur); gameObject._blur = undefined; fxFactory.setPadding(0); } } else { if (!gameObject._blur) { gameObject._blur = fxFactory.addBlur(blurQuality, blurX, blurY, blurStrength, blurColor, blurSteps); fxFactory.setPadding(Math.max(blurX, blurY) + 1); } gameObject._blur.color = blurColor; } } }); Object.defineProperty(gameObject, 'blurQuality', { get: function get() { return blurQuality; }, set: function set(value) { if (blurQuality === value) { return; } blurQuality = value; if (gameObject._blur) { gameObject._blur.quality = blurQuality; } } }); Object.defineProperty(gameObject, 'blurX', { get: function get() { return blurX; }, set: function set(value) { if (blurX === value) { return; } blurX = value; if (gameObject._blur) { var offset = Math.max(blurX, blurY); fxFactory.setPadding(offset + 1); gameObject._blur.x = blurX; } } }); Object.defineProperty(gameObject, 'blurY', { get: function get() { return blurY; }, set: function set(value) { if (blurY === value) { return; } blurY = value; if (gameObject._blur) { var offset = Math.max(blurX, blurY); fxFactory.setPadding(offset + 1); gameObject._blur.y = blurY; } } }); Object.defineProperty(gameObject, 'blurStrength', { get: function get() { return blurStrength; }, set: function set(value) { if (blurStrength === value) { return; } blurStrength = value; if (gameObject._blur) { gameObject._blur.strength = blurStrength; } } }); Object.defineProperty(gameObject, 'blurSteps', { get: function get() { return blurSteps; }, set: function set(value) { if (blurSteps === value) { return; } blurSteps = value; if (gameObject._blur) { gameObject._blur.steps = blurSteps; } } }); gameObject.blurColor = null; AddClearEffectCallback(gameObject, 'blurColor'); return gameObject; }; var AddBokehProperties = function AddBokehProperties(gameObject) { // Don't attach properties again if (HasProperty(gameObject, 'bokehRadius')) { return gameObject; } var fxFactory = GetFXFactory(gameObject); if (!fxFactory) { return gameObject; } var bokehRadius, bokehAmount = 1, bokehContrast = 0.2; Object.defineProperty(gameObject, 'bokehRadius', { get: function get() { return bokehRadius; }, set: function set(value) { if (bokehRadius === value) { return; } bokehRadius = value; if (bokehRadius === null || bokehRadius === false) { if (gameObject._bokeh) { fxFactory.remove(gameObject._bokeh); gameObject._bokeh = undefined; } } else { if (!gameObject._bokeh) { gameObject._bokeh = fxFactory.addBokeh(bokehRadius, bokehAmount, bokehContrast); } gameObject._bokeh.radius = bokehRadius; } } }); Object.defineProperty(gameObject, 'bokehAmount', { get: function get() { return bokehAmount; }, set: function set(value) { if (bokehAmount === value) { return; } bokehAmount = value; if (gameObject._bokeh) { gameObject._bokeh.amount = bokehAmount; } } }); Object.defineProperty(gameObject, 'bokehContrast', { get: function get() { return bokehContrast; }, set: function set(value) { if (bokehContrast === value) { return; } bokehContrast = value; if (gameObject._bokeh) { gameObject._bokeh.contrast = bokehContrast; } } }); gameObject.bokehRadius = null; AddClearEffectCallback(gameObject, 'bokehRadius'); return gameObject; }; var AddBrightnessProperties = function AddBrightnessProperties(gameObject) { AddColorMatrixEffectPropertiesBase(gameObject, 'brightness', 1); return gameObject; }; var AddBrownProperties = function AddBrownProperties(gameObject) { AddColorMatrixEffectPropertiesBase(gameObject, 'brown'); return gameObject; }; var AddCircleProperties = function AddCircleProperties(gameObject) { // Don't attach properties again if (HasProperty(gameObject, 'circleColor')) { return gameObject; } var fxFactory = GetFXFactory(gameObject); if (!fxFactory) { return gameObject; } var circleColor, circleThickness = 8, circleBackgroundColor = 0x000000, circleBackgroundAlpha = 0.4, circleScale = 1, circleFeather = 0.005; Object.defineProperty(gameObject, 'circleColor', { get: function get() { return circleColor; }, set: function set(value) { if (circleColor === value) { return; } circleColor = value; if (circleColor === null || circleColor === false) { if (gameObject._circle) { fxFactory.remove(gameObject._circle); gameObject._circle = undefined; } } else { if (!gameObject._circle) { gameObject._circle = fxFactory.addCircle(circleThickness, circleColor, circleBackgroundColor, circleScale, circleFeather); gameObject.circleBackgroundAlpha = circleBackgroundAlpha; } gameObject._circle.color = circleColor; } } }); Object.defineProperty(gameObject, 'circleThickness', { get: function get() { return circleThickness; }, set: function set(value) { if (circleThickness === value) { return; } circleThickness = value; if (gameObject._circle) { gameObject._circle.thickness = circleThickness; } } }); Object.defineProperty(gameObject, 'circleBackgroundColor', { get: function get() { return circleBackgroundColor; }, set: function set(value) { if (circleBackgroundColor === value) { return; } circleBackgroundColor = value; if (gameObject._circle) { gameObject._circle.backgroundColor = circleBackgroundColor; } } }); Object.defineProperty(gameObject, 'circleBackgroundAlpha', { get: function get() { return circleBackgroundAlpha; }, set: function set(value) { if (circleBackgroundAlpha === value) { return; } circleBackgroundAlpha = value; if (gameObject._circle) { gameObject._circle.glcolor2[3] = circleBackgroundAlpha; } } }); Object.defineProperty(gameObject, 'circleScale', { get: function get() { return circleScale; }, set: function set(value) { if (circleScale === value) { return; } circleScale = value; if (gameObject._circle) { gameObject._circle.scale = circleScale; } } }); Object.defineProperty(gameObject, 'circleFeather', { get: function get() { return circleFeather; }, set: function set(value) { if (circleFeather === value) { return; } circleFeather = value; if (gameObject._circle) { gameObject._circle.feather = circleFeather; } } }); gameObject.circleColor = null; AddClearEffectCallback(gameObject, 'circleColor'); return gameObject; }; var AddContrastProperties = function AddContrastProperties(gameObject) { AddColorMatrixEffectPropertiesBase(gameObject, 'contrast', 1); return gameObject; }; var AddDesaturateProperties = function AddDesaturateProperties(gameObject) { AddColorMatrixEffectPropertiesBase(gameObject, 'desaturate', 1); return gameObject; }; var AddDesaturateLuminanceProperties = function AddDesaturateLuminanceProperties(gameObject) { AddColorMatrixEffectPropertiesBase(gameObject, 'desaturateLuminance'); return gameObject; }; var AddDisplacementProperties = function AddDisplacementProperties(gameObject) { // Don't attach properties again if (HasProperty(gameObject, 'displacementKey')) { return gameObject; } var fxFactory = GetFXFactory(gameObject); if (!fxFactory) { return gameObject; } var displacementKey, displacementX = 0.005, displacementY = 0.005; Object.defineProperty(gameObject, 'displacementKey', { get: function get() { return displacementKey; }, set: function set(value) { if (displacementKey === value) { return; } displacementKey = value; if (displacementKey === null || displacementKey === false) { if (gameObject._displacement) { fxFactory.remove(gameObject._displacement); gameObject._displacement = undefined; } } else { if (!gameObject._displacement) { gameObject._displacement = fxFactory.addDisplacement(displacementKey, displacementX, displacementY); } gameObject._displacement.setTexture(displacementKey); } } }); Object.defineProperty(gameObject, 'displacementX', { get: function get() { return displacementX; }, set: function set(value) { if (displacementX === value) { return; } displacementX = value; if (gameObject._displacement) { gameObject._displacement.x = displacementX; } } }); Object.defineProperty(gameObject, 'displacementY', { get: function get() { return displacementY; }, set: function set(value) { if (displacementY === value) { return; } displacementY = value; if (gameObject._displacement) { gameObject._displacement.y = displacementY; } } }); gameObject.displacementKey = null; AddClearEffectCallback(gameObject, 'displacementKey'); return gameObject; }; var AddGlowProperties = function AddGlowProperties(gameObject) { // Don't attach properties again if (HasProperty(gameObject, 'glowColor')) { return gameObject; } var fxFactory = GetFXFactory(gameObject); if (!fxFactory) { return gameObject; } var glowColor, glowOuterStrength = 4, glowInnerStrength = 0; Object.defineProperty(gameObject, 'glowColor', { get: function get() { return glowColor; }, set: function set(value) { if (glowColor === value) { return; } glowColor = value; if (glowColor === null || glowColor === false) { if (gameObject._glow) { fxFactory.remove(gameObject._glow); gameObject._glow = undefined; fxFactory.setPadding(0); } } else { if (!gameObject._glow) { gameObject._glow = fxFactory.addGlow(glowColor, glowOuterStrength, glowInnerStrength); fxFactory.setPadding(glowOuterStrength + 1); } gameObject._glow.color = glowColor; } } }); Object.defineProperty(gameObject, 'glowOuterStrength', { get: function get() { return glowOuterStrength; }, set: function set(value) { if (glowOuterStrength === value) { return; } glowOuterStrength = value; if (gameObject._glow) { fxFactory.setPadding(glowOuterStrength + 1); gameObject._glow.outerStrength = glowOuterStrength; } } }); Object.defineProperty(gameObject, 'glowInnerStrength', { get: function get() { return glowInnerStrength; }, set: function set(value) { if (glowInnerStrength === value) { return; } glowInnerStrength = value; if (gameObject._glow) { gameObject._glow.innerStrength = glowInnerStrength; } } }); gameObject.glowColor = null; AddClearEffectCallback(gameObject, 'glowColor'); return gameObject; }; var AddGradientProperties = function AddGradientProperties(gameObject) { // Don't attach properties again if (HasProperty(gameObject, 'gradientColor')) { return gameObject; } var fxFactory = GetFXFactory(gameObject); if (!fxFactory) { return gameObject; } var gradientColor1, gradientColor2, gradientAlpha = 0.5, gradientFromX = 0, gradientFromY = 0, gradientToX = 0, gradientToY = 1, gradientSize = 0; Object.defineProperty(gameObject, 'gradientColor', { get: function get() { return [gradientColor1, gradientColor2]; }, set: function set(value) { var color1, color2; if (value === null || value === false) { color1 = null; color2 = null; } else { color1 = value[0]; color2 = value[1]; } if (gradientColor1 === color1 && gradientColor2 === color2) { return; } gradientColor1 = color1; gradientColor2 = color2; if (gradientColor1 === null || gradientColor1 === false) { if (gameObject._gradient) { fxFactory.remove(gameObject._gradient); gameObject._gradient = undefined; } } else { if (!gameObject._gradient) { gameObject._gradient = fxFactory.addGradient(gradientColor1, gradientColor2, gradientAlpha, gradientFromX, gradientFromY, gradientToX, gradientToY, gradientSize); } gameObject._gradient.color1 = gradientColor1; gameObject._gradient.color2 = gradientColor2; } } }); Object.defineProperty(gameObject, 'gradientColor1', { get: function get() { return gradientColor1; }, set: function set(value) { if (value === null || value === false) { gameObject.gradientColor = value; return; } if (gradientColor1 === value) { return; } gradientColor1 = value; if (gameObject._gradient) { gameObject._gradient.color1 = gradientColor1; } } }); Object.defineProperty(gameObject, 'gradientColor2', { get: function get() { return gradientColor2; }, set: function set(value) { if (value === null || value === false) { gameObject.gradientColor = value; return; } if (gradientColor2 === value) { return; } gradientColor2 = value; if (gameObject._gradient) { gameObject._gradient.color2 = gradientColor2; } } }); Object.defineProperty(gameObject, 'gradientAlpha', { get: function get() { return gradientAlpha; }, set: function set(value) { if (gradientAlpha === value) { return; } gradientAlpha = value; if (gameObject._gradient) { gameObject._gradient.alpha = gradientAlpha; } } }); Object.defineProperty(gameObject, 'gradientFromX', { get: function get() { return gradientFromX; }, set: function set(value) { if (gradientFromX === value) { return; } gradientFromX = value; if (gameObject._gradient) { gameObject._gradient.fromX = gradientFromX; } } }); Object.defineProperty(gameObject, 'gradientFromY', { get: function get() { return gradientFromY; }, set: function set(value) { if (gradientFromY === value) { return; } gradientFromY = value; if (gameObject._gradient) { gameObject._gradient.fromY = gradientFromY; } } }); Object.defineProperty(gameObject, 'gradientToX', { get: function get() { return gradientToX; }, set: function set(value) { if (gradientToX === value) { return; } gradientToX = value; if (gameObject._gradient) { gameObject._gradient.toX = gradientToX; } } }); Object.defineProperty(gameObject, 'gradientToY', { get: function get() { return gradientToY; }, set: function set(value) { if (gradientToY === value) { return; } gradientToY = value; if (gameObject._gradient) { gameObject._gradient.toY = gradientToY; } } }); Object.defineProperty(gameObject, 'gradientSize', { get: function get() { return gradientSize; }, set: function set(value) { if (gradientSize === value) { return; } gradientSize = value; if (gameObject._gradient) { gameObject._gradient.size = gradientSize; } } }); gameObject.gradientColor = null; AddClearEffectCallback(gameObject, 'gradientColor'); return gameObject; }; var AddGrayscaleProperties = function AddGrayscaleProperties(gameObject) { AddColorMatrixEffectPropertiesBase(gameObject, 'grayscale', 1); return gameObject; }; var AddHueProperties = function AddHueProperties(gameObject) { AddColorMatrixEffectPropertiesBase(gameObject, 'hue', 1); return gameObject; }; var AddKodachromeProperties = function AddKodachromeProperties(gameObject) { AddColorMatrixEffectPropertiesBase(gameObject, 'kodachrome'); return gameObject; }; var AddLSDProperties = function AddLSDProperties(gameObject) { AddColorMatrixEffectPropertiesBase(gameObject, 'lsd'); return gameObject; }; var AddNegativeProperties = function AddNegativeProperties(gameObject) { AddColorMatrixEffectPropertiesBase(gameObject, 'negative'); return gameObject; }; var AddPixelateProperties = function AddPixelateProperties(gameObject) { // Don't attach properties again if (HasProperty(gameObject, 'pixelate')) { return gameObject; } var fxFactory = GetFXFactory(gameObject); if (!fxFactory) { return gameObject; } var pixelate; Object.defineProperty(gameObject, 'pixelate', { get: function get() { return pixelate; }, set: function set(value) { if (pixelate === value) { return; } pixelate = value; if (pixelate === null || pixelate === false) { if (gameObject._pixelateEffect) { fxFactory.remove(gameObject._pixelateEffect); gameObject._pixelateEffect = undefined; } } else { if (!gameObject._pixelateEffect) { gameObject._pixelateEffect = fxFactory.addPixelate(); } gameObject._pixelateEffect.amount = pixelate; } } }); gameObject.pixelate = null; AddClearEffectCallback(gameObject, 'pixelate'); return gameObject; }; var AddPolaroidProperties = function AddPolaroidProperties(gameObject) { AddColorMatrixEffectPropertiesBase(gameObject, 'polaroid'); return gameObject; }; var AddRevealProperties = function AddRevealProperties(gameObject) { // Don't attach properties again if (HasProperty(gameObject, 'revealLeft')) { return gameObject; } var fxFactory = GetFXFactory(gameObject); if (!fxFactory) { return gameObject; } var revealLeft, revealRight, revealUp, revealDown, revealWidth = 0.1; var ClearRevealFlags = function ClearRevealFlags() { revealLeft = null; revealRight = null; revealUp = null; revealDown = null; }; var RemoveEffect = function RemoveEffect(gameObject) { if (gameObject._revealEffect) { fxFactory.remove(gameObject._revealEffect); gameObject._revealEffect = undefined; } }; Object.defineProperty(gameObject, 'revealLeft', { get: function get() { return revealLeft; }, set: function set(value) { if (revealLeft === value) { return; } ClearRevealFlags(); revealLeft = value; if (revealLeft === null || revealLeft === false) { RemoveEffect(gameObject); } else { if (!gameObject._revealEffect) { gameObject._revealEffect = fxFactory.addReveal(revealWidth, 0, 0); } gameObject._revealEffect.direction = 1; gameObject._revealEffect.axis = 0; gameObject._revealEffect.progress = revealLeft; } } }); Object.defineProperty(gameObject, 'revealRight', { get: function get() { return revealRight; }, set: function set(value) { if (revealRight === value) { return; } ClearRevealFlags(); revealRight = value; if (revealRight === null || revealRight === false) { RemoveEffect(gameObject); } else { if (!gameObject._revealEffect) { gameObject._revealEffect = fxFactory.addReveal(revealWidth, 0, 0); } gameObject._revealEffect.direction = 0; gameObject._revealEffect.axis = 0; gameObject._revealEffect.progress = revealRight; } } }); Object.defineProperty(gameObject, 'revealUp', { get: function get() { return revealUp; }, set: function set(value) { if (revealUp === value) { return; } ClearRevealFlags(); revealUp = value; if (revealUp === null || revealUp === false) { RemoveEffect(gameObject); } else { if (!gameObject._revealEffect) { gameObject._revealEffect = fxFactory.addReveal(revealWidth, 0, 0); } gameObject._revealEffect.direction = 1; gameObject._revealEffect.axis = 1; gameObject._revealEffect.progress = revealUp; } } }); Object.defineProperty(gameObject, 'revealDown', { get: function get() { return revealDown; }, set: function set(value) { if (revealDown === value) { return; } ClearRevealFlags(); revealDown = value; if (revealDown === null || revealDown === false) { RemoveEffect(gameObject); } else { if (!gameObject._revealEffect) { gameObject._revealEffect = fxFactory.addReveal(revealWidth, 0, 0); } gameObject._revealEffect.direction = 0; gameObject._revealEffect.axis = 1; gameObject._revealEffect.progress = revealDown; } } }); Object.defineProperty(gameObject, 'revealWidth', { get: function get() { return revealWidth; }, set: function set(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; }; var AddSaturateProperties = function AddSaturateProperties(gameObject) { AddColorMatrixEffectPropertiesBase(gameObject, 'saturate', 1); return gameObject; }; var AddSepiaProperties = function AddSepiaProperties(gameObject) { AddColorMatrixEffectPropertiesBase(gameObject, 'sepia'); return gameObject; }; var AddShadowProperties = function AddShadowProperties(gameObject) { // Don't attach properties again if (HasProperty(gameObject, 'shadowColor')) { return gameObject; } var fxFactory = GetFXFactory(gameObject); if (!fxFactory) { return gameObject; } var shadowColor, shadowX = 0, shadowY = 0, shadowDecay = 0.1, shadowPower = 1, shadowSamples = 6, shadowIntensity = 1; Object.defineProperty(gameObject, 'shadowColor', { get: function get() { return shadowColor; }, set: function set(value) { if (shadowColor === value) { return; } shadowColor = value; if (shadowColor === null || shadowColor === false) { if (gameObject._shadow) { fxFactory.remove(gameObject._shadow); gameObject._shadow = undefined; } } else { if (!gameObject._shadow) { gameObject._shadow = fxFactory.addShadow(shadowX, shadowY, shadowDecay, shadowPower, shadowColor, shadowSamples, shadowIntensity); } gameObject._shadow.color = shadowColor; } } }); Object.defineProperty(gameObject, 'shadowX', { get: function get() { return shadowX; }, set: function set(value) { if (shadowX === value) { return; } shadowX = value; if (gameObject._shadow) { gameObject._shadow.x = shadowX; } } }); Object.defineProperty(gameObject, 'shadowY', { get: function get() { return shadowY; }, set: function set(value) { if (shadowY === value) { return; } shadowY = value; if (gameObject._shadow) { gameObject._shadow.y = shadowY; } } }); Object.defineProperty(gameObject, 'decay', { get: function get() { return shadowDecay; }, set: function set(value) { if (shadowDecay === value) { return; } shadowDecay = value; if (gameObject._shadow) { gameObject._shadow.decay = shadowDecay; } } }); Object.defineProperty(gameObject, 'shadowPower', { get: function get() { return shadowPower; }, set: function set(value) { if (shadowPower === value) { return; } shadowPower = value; if (gameObject._shadow) { gameObject._shadow.power = shadowPower; } } }); Object.defineProperty(gameObject, 'shadowSamples', { get: function get() { return shadowSamples; }, set: function set(value) { if (shadowSamples === value) { return; } shadowSamples = value; if (gameObject._shadow) { gameObject._shadow.samples = shadowSamples; } } }); Object.defineProperty(gameObject, 'shadowIntensity', { get: function get() { return shadowIntensity; }, set: function set(value) { if (shadowIntensity === value) { return; } shadowIntensity = value; if (gameObject._shadow) { gameObject._shadow.intensity = shadowIntensity; } } }); gameObject.shadowColor = null; AddClearEffectCallback(gameObject, 'shadowColor'); return gameObject; }; var AddShiftToBGRProperties = function AddShiftToBGRProperties(gameObject) { AddColorMatrixEffectPropertiesBase(gameObject, 'shiftToBGR'); return gameObject; }; var AddShineProperties = function AddShineProperties(gameObject) { // Don't attach properties again if (HasProperty(gameObject, 'shineSpeed')) { return gameObject; } var fxFactory = GetFXFactory(gameObject); if (!fxFactory) { return gameObject; } var shineSpeed, shineLineWidth = 0.5, shineGradient = 3; Object.defineProperty(gameObject, 'shineSpeed', { get: function get() { return shineSpeed; }, set: function set(value) { if (shineSpeed === value) { return; } shineSpeed = value; if (shineSpeed === null || shineSpeed === false) { if (gameObject._shine) { fxFactory.remove(gameObject._shine); gameObject._shine = undefined; } } else {