phaser3-rex-plugins
Version:
1,622 lines (1,582 loc) • 98 kB
JavaScript
(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 {