Files
esengine/extensions/demo/demo_egret/libs/ecs-tween/ecs-tween.js

1111 lines
47 KiB
JavaScript
Raw Normal View History

2021-01-01 18:29:10 +08:00
var __extends = (this && this.__extends) || (function () {
var extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
var es;
(function (es) {
var AbstractTweenable = (function () {
function AbstractTweenable() {
}
AbstractTweenable.prototype.recycleSelf = function () {
};
AbstractTweenable.prototype.isRunning = function () {
return this._isCurrentlyManagedByTweenManager && !this._isPaused;
};
AbstractTweenable.prototype.start = function () {
if (this._isCurrentlyManagedByTweenManager) {
this._isPaused = false;
return;
}
es.TweenManager.addTween(this);
this._isCurrentlyManagedByTweenManager = true;
this._isPaused = false;
};
AbstractTweenable.prototype.pause = function () {
this._isPaused = true;
};
AbstractTweenable.prototype.resume = function () {
this._isPaused = false;
};
AbstractTweenable.prototype.stop = function (bringToCompletion) {
if (bringToCompletion === void 0) { bringToCompletion = false; }
es.TweenManager.removeTween(this);
this._isCurrentlyManagedByTweenManager = false;
this._isPaused = true;
};
return AbstractTweenable;
}());
es.AbstractTweenable = AbstractTweenable;
})(es || (es = {}));
var es;
(function (es) {
var PropertyTarget = (function () {
function PropertyTarget(target, propertyName) {
this._target = target;
this._propertyName = propertyName;
}
PropertyTarget.prototype.getTargetObject = function () {
return this._target;
};
PropertyTarget.prototype.setTweenedValue = function (value) {
this._target[this._propertyName] = value;
};
PropertyTarget.prototype.getTweenedValue = function () {
return this._target[this._propertyName];
};
return PropertyTarget;
}());
var PropertyTweens = (function () {
function PropertyTweens() {
}
PropertyTweens.NumberPropertyTo = function (self, memberName, to, duration) {
var tweenTarget = new PropertyTarget(self, memberName);
var tween = es.TweenManager.cacheNumberTweens ? es.Pool.obtain(es.NumberTween) : new es.NumberTween();
tween.initialize(tweenTarget, to, duration);
return tween;
};
PropertyTweens.Vector2PropertyTo = function (self, memeberName, to, duration) {
var tweenTarget = new PropertyTarget(self, memeberName);
var tween = es.TweenManager.cacheVector2Tweens ? es.Pool.obtain(es.Vector2Tween) : new es.Vector2Tween();
tween.initialize(tweenTarget, to, duration);
return tween;
};
return PropertyTweens;
}());
es.PropertyTweens = PropertyTweens;
})(es || (es = {}));
var es;
(function (es) {
var TransformSpringTween = (function (_super) {
__extends(TransformSpringTween, _super);
function TransformSpringTween(transform, targetType, targetValue) {
var _this = _super.call(this) || this;
_this.dampingRatio = 0.23;
_this.angularFrequency = 25;
_this._transform = transform;
_this._targetType = targetType;
_this.setTargetValue(targetValue);
return _this;
}
Object.defineProperty(TransformSpringTween.prototype, "targetType", {
get: function () {
return this._targetType;
},
enumerable: true,
configurable: true
});
TransformSpringTween.prototype.setTargetValue = function (targetValue) {
this._velocity = es.Vector2.zero;
this._targetValue = targetValue;
if (!this._isCurrentlyManagedByTweenManager)
this.start();
};
TransformSpringTween.prototype.updateDampingRatioWithHalfLife = function (lambda) {
this.dampingRatio = (-lambda / this.angularFrequency) * Math.log(0.5);
};
TransformSpringTween.prototype.tick = function () {
if (!this._isPaused)
this.setTweenedValue(es.Lerps.fastSpring(this.getCurrentValueOfTweenedTargetType(), this._targetValue, this._velocity, this.dampingRatio, this.angularFrequency));
return false;
};
TransformSpringTween.prototype.setTweenedValue = function (value) {
switch (this._targetType) {
case es.TransformTargetType.position:
this._transform.position = value;
break;
case es.TransformTargetType.localPosition:
this._transform.localPosition = value;
break;
case es.TransformTargetType.scale:
this._transform.scale = value;
break;
case es.TransformTargetType.localScale:
this._transform.localScale = value;
break;
case es.TransformTargetType.rotationDegrees:
this._transform.rotationDegrees = value.x;
case es.TransformTargetType.localRotationDegrees:
this._transform.localRotationDegrees = value.x;
break;
}
};
TransformSpringTween.prototype.getCurrentValueOfTweenedTargetType = function () {
switch (this._targetType) {
case es.TransformTargetType.position:
return this._transform.position;
case es.TransformTargetType.localPosition:
return this._transform.localPosition;
case es.TransformTargetType.scale:
return this._transform.scale;
case es.TransformTargetType.localScale:
return this._transform.localScale;
case es.TransformTargetType.rotationDegrees:
return new es.Vector2(this._transform.rotationDegrees);
case es.TransformTargetType.localRotationDegrees:
return new es.Vector2(this._transform.localRotationDegrees, 0);
default:
return es.Vector2.zero;
}
};
return TransformSpringTween;
}(es.AbstractTweenable));
es.TransformSpringTween = TransformSpringTween;
})(es || (es = {}));
var es;
(function (es) {
var LoopType;
(function (LoopType) {
LoopType[LoopType["none"] = 0] = "none";
LoopType[LoopType["restartFromBeginning"] = 1] = "restartFromBeginning";
LoopType[LoopType["pingpong"] = 2] = "pingpong";
})(LoopType = es.LoopType || (es.LoopType = {}));
var TweenState;
(function (TweenState) {
TweenState[TweenState["running"] = 0] = "running";
TweenState[TweenState["paused"] = 1] = "paused";
TweenState[TweenState["complete"] = 2] = "complete";
})(TweenState = es.TweenState || (es.TweenState = {}));
var Tween = (function () {
function Tween() {
this._shouldRecycleTween = true;
this._tweenState = TweenState.complete;
this._timeScale = 1;
}
Tween.prototype.setEaseType = function (easeType) {
this._easeType = easeType;
return this;
};
Tween.prototype.setDelay = function (delay) {
this._delay = delay;
this._elapsedTime = -this._delay;
return this;
};
Tween.prototype.setDuration = function (duration) {
this._duration = duration;
return this;
};
Tween.prototype.setTimeScale = function (timeSclae) {
this._timeScale = timeSclae;
return this;
};
Tween.prototype.setIsTimeScaleIndependent = function () {
this._isTimeScaleIndependent = true;
return this;
};
Tween.prototype.setCompletionHandler = function (completeHandler) {
this._completionHandler = completeHandler;
return this;
};
Tween.prototype.setLoops = function (loopType, loops, delayBetweenLoops) {
if (loops === void 0) { loops = 1; }
if (delayBetweenLoops === void 0) { delayBetweenLoops = 0; }
this._loopType = loopType;
this._delayBetweenLoops = delayBetweenLoops;
if (loops < 0)
loops = -1;
if (loopType == LoopType.pingpong)
loops = loops * 2;
this._loops = loops;
return this;
};
Tween.prototype.setLoopCompletionHanlder = function (loopCompleteHandler) {
this._loopCompleteHandler = loopCompleteHandler;
return this;
};
Tween.prototype.setFrom = function (from) {
this._isFromValueOverridden = true;
this._fromValue = from;
return this;
};
Tween.prototype.prepareForReuse = function (from, to, duration) {
this.initialize(this._target, to, duration);
return this;
};
Tween.prototype.setRecycleTween = function (shouldRecycleTween) {
this._shouldRecycleTween = shouldRecycleTween;
return this;
};
Tween.prototype.setContext = function (context) {
this.context = context;
return this;
};
Tween.prototype.setNextTween = function (nextTween) {
this._nextTween = nextTween;
return this;
};
Tween.prototype.tick = function () {
if (this._tweenState == TweenState.paused)
return false;
var elapsedTimeExcess = 0;
if (!this._isRunningInReverse && this._elapsedTime >= this._duration) {
elapsedTimeExcess = this._elapsedTime - this._duration;
this._elapsedTime = this._duration;
this._tweenState = TweenState.complete;
}
else if (this._isRunningInReverse && this._elapsedTime <= 0) {
elapsedTimeExcess = 0 - this._elapsedTime;
this._elapsedTime = 0;
this._tweenState = TweenState.complete;
}
if (this._elapsedTime >= 0 && this._elapsedTime <= this._duration) {
this.updateValue();
}
if (this._loopType != LoopType.none && this._tweenState == TweenState.complete && this._loops != 0) {
this.handleLooping(elapsedTimeExcess);
}
var deltaTime = this._isTimeScaleIndependent ? es.Time.unscaledDeltaTime : es.Time.deltaTime;
deltaTime *= this._timeScale;
if (this._isRunningInReverse)
this._elapsedTime -= deltaTime;
else
this._elapsedTime += deltaTime;
if (this._tweenState == TweenState.complete) {
this._completionHandler && this._completionHandler(this);
if (this._nextTween != null) {
this._nextTween.start();
this._nextTween = null;
}
return true;
}
return false;
};
Tween.prototype.recycleSelf = function () {
if (this._shouldRecycleTween) {
this._target = null;
this._nextTween = null;
}
};
Tween.prototype.isRunning = function () {
return this._tweenState == TweenState.running;
};
Tween.prototype.start = function () {
if (!this._isFromValueOverridden)
this._fromValue = this._target.getTargetObject();
if (this._tweenState == TweenState.complete) {
this._tweenState = TweenState.running;
es.TweenManager.addTween(this);
}
};
Tween.prototype.pause = function () {
this._tweenState = TweenState.paused;
};
Tween.prototype.resume = function () {
this._tweenState = TweenState.running;
};
Tween.prototype.stop = function (bringToCompletion) {
if (bringToCompletion === void 0) { bringToCompletion = false; }
this._tweenState = TweenState.complete;
if (bringToCompletion) {
this._elapsedTime = this._isRunningInReverse ? 0 : this._duration;
this._loopType = LoopType.none;
this._loops = 0;
}
else {
es.TweenManager.removeTween(this);
}
};
Tween.prototype.jumpToElapsedTime = function (elapsedTime) {
this._elapsedTime = es.MathHelper.clamp(elapsedTime, 0, this._duration);
this.updateValue();
};
Tween.prototype.reverseTween = function () {
this._isRunningInReverse = !this._isRunningInReverse;
};
Tween.prototype.waitForCompletion = function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
if (!(this._tweenState != TweenState.complete)) return [3, 2];
return [4, null];
case 1:
_a.sent();
return [3, 0];
case 2: return [2];
}
});
};
Tween.prototype.getTargetObject = function () {
return this._target.getTargetObject();
};
Tween.prototype.resetState = function () {
this.context = null;
this._completionHandler = this._loopCompleteHandler = null;
this._isFromValueOverridden = false;
this._isTimeScaleIndependent = false;
this._tweenState = TweenState.complete;
this._isRelative = false;
this._easeType = es.TweenManager.defaultEaseType;
if (this._nextTween != null) {
this._nextTween.recycleSelf();
this._nextTween = null;
}
this._delay = 0;
this._duration = 0;
this._timeScale = 1;
this._elapsedTime = 0;
this._loopType = LoopType.none;
this._delayBetweenLoops = 0;
this._loops = 0;
this._isRunningInReverse = false;
};
Tween.prototype.initialize = function (target, to, duration) {
this.resetState();
this._target = target;
this._toValue = to;
this._duration = duration;
};
Tween.prototype.handleLooping = function (elapsedTimeExcess) {
this._loops--;
if (this._loopType == LoopType.pingpong) {
this.reverseTween();
}
if (this._loopType == LoopType.restartFromBeginning || this._loops % 2 == 0) {
this._loopCompleteHandler && this._completionHandler(this);
}
if (this._loops != 0) {
this._tweenState = TweenState.running;
if (this._loopType == LoopType.restartFromBeginning) {
this._elapsedTime = elapsedTimeExcess - this._delayBetweenLoops;
}
else {
if (this._isRunningInReverse)
this._elapsedTime += this._delayBetweenLoops - elapsedTimeExcess;
else
this._elapsedTime = elapsedTimeExcess - this._delayBetweenLoops;
}
if (this._delayBetweenLoops == 0 && elapsedTimeExcess > 0) {
this.updateValue();
}
}
};
return Tween;
}());
es.Tween = Tween;
})(es || (es = {}));
var es;
(function (es) {
var NumberTween = (function (_super) {
__extends(NumberTween, _super);
function NumberTween(target, to, duration) {
var _this = _super.call(this) || this;
_this.initialize(target, to, duration);
return _this;
}
NumberTween.create = function () {
return es.TweenManager.cacheNumberTweens ? es.Pool.obtain(NumberTween) : new NumberTween();
};
NumberTween.prototype.setIsRelative = function () {
this._isRelative = true;
this._toValue += this._fromValue;
return this;
};
NumberTween.prototype.updateValue = function () {
this._target.setTweenedValue(es.Lerps.ease(this._easeType, this._fromValue, this._toValue, this._elapsedTime, this._duration));
};
NumberTween.prototype.recycleSelf = function () {
_super.prototype.recycleSelf.call(this);
if (this._shouldRecycleTween && es.TweenManager.cacheNumberTweens)
es.Pool.free(this);
};
return NumberTween;
}(es.Tween));
es.NumberTween = NumberTween;
var Vector2Tween = (function (_super) {
__extends(Vector2Tween, _super);
function Vector2Tween(target, to, duration) {
var _this = _super.call(this) || this;
_this.initialize(target, to, duration);
return _this;
}
Vector2Tween.create = function () {
return es.TweenManager.cacheVector2Tweens ? es.Pool.obtain(Vector2Tween) : new Vector2Tween();
};
Vector2Tween.prototype.setIsRelative = function () {
this._isRelative = true;
this._toValue.add(this._fromValue);
return this;
};
Vector2Tween.prototype.updateValue = function () {
this._target.setTweenedValue(es.Lerps.easeVector2(this._easeType, this._fromValue, this._toValue, this._elapsedTime, this._duration));
};
Vector2Tween.prototype.recycleSelf = function () {
_super.prototype.recycleSelf.call(this);
if (this._shouldRecycleTween && es.TweenManager.cacheVector2Tweens)
es.Pool.free(this);
};
return Vector2Tween;
}(es.Tween));
es.Vector2Tween = Vector2Tween;
var RectangleTween = (function (_super) {
__extends(RectangleTween, _super);
function RectangleTween(target, to, duration) {
var _this = _super.call(this) || this;
_this.initialize(target, to, duration);
return _this;
}
RectangleTween.create = function () {
return es.TweenManager.cacheRectTweens ? es.Pool.obtain(RectangleTween) : new RectangleTween();
};
RectangleTween.prototype.setIsRelative = function () {
this._isRelative = true;
this._toValue = new es.Rectangle(this._toValue.x + this._fromValue.x, this._toValue.y + this._fromValue.y, this._toValue.width + this._fromValue.width, this._toValue.height + this._fromValue.height);
return this;
};
RectangleTween.prototype.updateValue = function () {
this._target.setTweenedValue(es.Lerps.easeRectangle(this._easeType, this._fromValue, this._toValue, this._elapsedTime, this._duration));
};
RectangleTween.prototype.recycleSelf = function () {
_super.prototype.recycleSelf.call(this);
if (this._shouldRecycleTween && es.TweenManager.cacheRectTweens)
es.Pool.free(this);
};
return RectangleTween;
}(es.Tween));
es.RectangleTween = RectangleTween;
})(es || (es = {}));
var es;
(function (es) {
var TransformTargetType;
(function (TransformTargetType) {
TransformTargetType[TransformTargetType["position"] = 0] = "position";
TransformTargetType[TransformTargetType["localPosition"] = 1] = "localPosition";
TransformTargetType[TransformTargetType["scale"] = 2] = "scale";
TransformTargetType[TransformTargetType["localScale"] = 3] = "localScale";
TransformTargetType[TransformTargetType["rotationDegrees"] = 4] = "rotationDegrees";
TransformTargetType[TransformTargetType["localRotationDegrees"] = 5] = "localRotationDegrees";
})(TransformTargetType = es.TransformTargetType || (es.TransformTargetType = {}));
var TransformVector2Tween = (function (_super) {
__extends(TransformVector2Tween, _super);
function TransformVector2Tween() {
return _super !== null && _super.apply(this, arguments) || this;
}
TransformVector2Tween.prototype.setTweenedValue = function (value) {
switch (this._targetType) {
case TransformTargetType.position:
this._transform.position = value;
break;
case TransformTargetType.localPosition:
this._transform.localPosition = value;
break;
case TransformTargetType.scale:
this._transform.scale = value;
break;
case TransformTargetType.localScale:
this._transform.localScale = value;
break;
case TransformTargetType.rotationDegrees:
this._transform.rotationDegrees = value.x;
case TransformTargetType.localRotationDegrees:
this._transform.localRotationDegrees = value.x;
break;
}
};
TransformVector2Tween.prototype.getTweenedValue = function () {
switch (this._targetType) {
case TransformTargetType.position:
return this._transform.position;
case TransformTargetType.localPosition:
return this._transform.localPosition;
case TransformTargetType.scale:
return this._transform.scale;
case TransformTargetType.localScale:
return this._transform.localScale;
case TransformTargetType.rotationDegrees:
return new es.Vector2(this._transform.rotationDegrees);
case TransformTargetType.localRotationDegrees:
return new es.Vector2(this._transform.localRotationDegrees, 0);
}
};
TransformVector2Tween.prototype.getTargetObject = function () {
return this._transform;
};
TransformVector2Tween.prototype.setTargetAndType = function (transform, targetType) {
this._transform = transform;
this._targetType = targetType;
};
TransformVector2Tween.prototype.updateValue = function () {
if ((this._targetType == TransformTargetType.rotationDegrees ||
this._targetType == TransformTargetType.localRotationDegrees) && !this._isRelative) {
this.setTweenedValue(es.Lerps.easeAngle(this._easeType, this._fromValue, this._toValue, this._elapsedTime, this._duration));
}
else {
this.setTweenedValue(es.Lerps.easeVector2(this._easeType, this._fromValue, this._toValue, this._elapsedTime, this._duration));
}
};
TransformVector2Tween.prototype.recycleSelf = function () {
if (this._shouldRecycleTween) {
this._target = null;
this._nextTween = null;
this._transform = null;
es.Pool.free(this);
}
};
return TransformVector2Tween;
}(es.Vector2Tween));
es.TransformVector2Tween = TransformVector2Tween;
})(es || (es = {}));
var es;
(function (es) {
var EaseType;
(function (EaseType) {
EaseType[EaseType["linear"] = 0] = "linear";
EaseType[EaseType["sineIn"] = 1] = "sineIn";
EaseType[EaseType["sineOut"] = 2] = "sineOut";
EaseType[EaseType["sineInOut"] = 3] = "sineInOut";
EaseType[EaseType["quadIn"] = 4] = "quadIn";
EaseType[EaseType["quadOut"] = 5] = "quadOut";
EaseType[EaseType["quadInOut"] = 6] = "quadInOut";
EaseType[EaseType["quintIn"] = 7] = "quintIn";
EaseType[EaseType["quintOut"] = 8] = "quintOut";
EaseType[EaseType["quintInOut"] = 9] = "quintInOut";
EaseType[EaseType["cubicIn"] = 10] = "cubicIn";
EaseType[EaseType["cubicOut"] = 11] = "cubicOut";
EaseType[EaseType["cubicInOut"] = 12] = "cubicInOut";
EaseType[EaseType["quartIn"] = 13] = "quartIn";
EaseType[EaseType["quartOut"] = 14] = "quartOut";
EaseType[EaseType["quartInOut"] = 15] = "quartInOut";
EaseType[EaseType["expoIn"] = 16] = "expoIn";
EaseType[EaseType["expoOut"] = 17] = "expoOut";
EaseType[EaseType["expoInOut"] = 18] = "expoInOut";
EaseType[EaseType["circleIn"] = 19] = "circleIn";
EaseType[EaseType["circleOut"] = 20] = "circleOut";
EaseType[EaseType["circleInOut"] = 21] = "circleInOut";
EaseType[EaseType["elasticIn"] = 22] = "elasticIn";
EaseType[EaseType["elasticOut"] = 23] = "elasticOut";
EaseType[EaseType["elasticInOut"] = 24] = "elasticInOut";
EaseType[EaseType["punch"] = 25] = "punch";
EaseType[EaseType["backIn"] = 26] = "backIn";
EaseType[EaseType["backOut"] = 27] = "backOut";
EaseType[EaseType["backInOut"] = 28] = "backInOut";
EaseType[EaseType["bounceIn"] = 29] = "bounceIn";
EaseType[EaseType["bounceOut"] = 30] = "bounceOut";
EaseType[EaseType["bounceInOut"] = 31] = "bounceInOut";
})(EaseType = es.EaseType || (es.EaseType = {}));
var EaseHelper = (function () {
function EaseHelper() {
}
EaseHelper.oppositeEaseType = function (easeType) {
switch (easeType) {
case EaseType.linear:
return easeType;
case EaseType.backIn:
return EaseType.backOut;
case EaseType.backOut:
return EaseType.backIn;
case EaseType.backInOut:
return easeType;
case EaseType.bounceIn:
return EaseType.bounceOut;
case EaseType.bounceOut:
return EaseType.bounceIn;
case EaseType.bounceInOut:
return easeType;
case EaseType.circleIn:
return EaseType.circleOut;
case EaseType.circleOut:
return EaseType.circleIn;
case EaseType.circleInOut:
return easeType;
case EaseType.cubicIn:
return EaseType.cubicOut;
case EaseType.cubicOut:
return EaseType.cubicIn;
case EaseType.circleInOut:
return easeType;
case EaseType.punch:
return easeType;
case EaseType.expoIn:
return EaseType.expoOut;
case EaseType.expoOut:
return EaseType.expoIn;
case EaseType.expoInOut:
return easeType;
case EaseType.quadIn:
return EaseType.quadOut;
case EaseType.quadOut:
return EaseType.quadIn;
case EaseType.quadInOut:
return easeType;
case EaseType.quartIn:
return EaseType.quadOut;
case EaseType.quartOut:
return EaseType.quartIn;
case EaseType.quadInOut:
return easeType;
case EaseType.sineIn:
return EaseType.sineOut;
case EaseType.sineOut:
return EaseType.sineIn;
case EaseType.sineInOut:
return easeType;
default:
return easeType;
}
};
EaseHelper.ease = function (easeType, t, duration) {
switch (easeType) {
case EaseType.linear:
return es.Easing.Linear.easeNone(t, duration);
case EaseType.backIn:
return es.Easing.Back.easeIn(t, duration);
case EaseType.backOut:
return es.Easing.Back.easeOut(t, duration);
case EaseType.backInOut:
return es.Easing.Back.easeInOut(t, duration);
case EaseType.bounceIn:
return es.Easing.Bounce.easeIn(t, duration);
case EaseType.bounceOut:
return es.Easing.Bounce.easeOut(t, duration);
case EaseType.bounceInOut:
return es.Easing.Bounce.easeInOut(t, duration);
case EaseType.circleIn:
return es.Easing.Circular.easeIn(t, duration);
case EaseType.circleOut:
return es.Easing.Circular.easeOut(t, duration);
case EaseType.circleInOut:
return es.Easing.Circular.easeInOut(t, duration);
case EaseType.cubicIn:
return es.Easing.Cubic.easeIn(t, duration);
case EaseType.cubicOut:
return es.Easing.Cubic.easeOut(t, duration);
case EaseType.cubicInOut:
return es.Easing.Cubic.easeInOut(t, duration);
case EaseType.elasticIn:
return es.Easing.Elastic.easeIn(t, duration);
case EaseType.elasticOut:
return es.Easing.Elastic.easeOut(t, duration);
case EaseType.elasticInOut:
return es.Easing.Elastic.easeInOut(t, duration);
case EaseType.punch:
return es.Easing.Elastic.punch(t, duration);
case EaseType.expoIn:
return es.Easing.Exponential.easeIn(t, duration);
case EaseType.expoOut:
return es.Easing.Exponential.easeOut(t, duration);
case EaseType.expoInOut:
return es.Easing.Exponential.easeInOut(t, duration);
case EaseType.quadIn:
return es.Easing.Quadratic.easeIn(t, duration);
case EaseType.quadOut:
return es.Easing.Quadratic.easeOut(t, duration);
case EaseType.quadInOut:
return es.Easing.Quadratic.easeInOut(t, duration);
case EaseType.quadIn:
return es.Easing.Quadratic.easeIn(t, duration);
case EaseType.quadOut:
return es.Easing.Quadratic.easeOut(t, duration);
case EaseType.quadInOut:
return es.Easing.Quadratic.easeInOut(t, duration);
case EaseType.quintIn:
return es.Easing.Quintic.easeIn(t, duration);
case EaseType.quintOut:
return es.Easing.Quintic.easeOut(t, duration);
case EaseType.quintInOut:
return es.Easing.Quintic.easeInOut(t, duration);
case EaseType.sineIn:
return es.Easing.Sinusoidal.easeIn(t, duration);
case EaseType.sineOut:
return es.Easing.Sinusoidal.easeOut(t, duration);
case EaseType.sineInOut:
return es.Easing.Sinusoidal.easeInOut(t, duration);
default:
return es.Easing.Linear.easeNone(t, duration);
}
};
return EaseHelper;
}());
es.EaseHelper = EaseHelper;
})(es || (es = {}));
var es;
(function (es) {
var TweenManager = (function (_super) {
__extends(TweenManager, _super);
function TweenManager() {
var _this = _super.call(this) || this;
_this._activeTweens = [];
_this._tempTweens = [];
TweenManager._instance = _this;
return _this;
}
TweenManager.prototype.update = function () {
this._isUpdating = true;
for (var i = this._activeTweens.length - 1; i >= 0; --i) {
var tween = this._activeTweens[i];
if (tween.tick())
this._tempTweens.push(tween);
}
this._isUpdating = false;
for (var i = 0; i < this._tempTweens.length; i++) {
this._tempTweens[i].recycleSelf();
new linq.List(this._activeTweens).remove(this._tempTweens[i]);
}
this._tempTweens.length = 0;
};
TweenManager.addTween = function (tween) {
TweenManager._instance._activeTweens.push(tween);
};
TweenManager.removeTween = function (tween) {
if (TweenManager._instance._isUpdating) {
TweenManager._instance._tempTweens.push(tween);
}
else {
tween.recycleSelf();
new linq.List(TweenManager._instance._activeTweens).remove(tween);
}
};
TweenManager.stopAllTweens = function (bringToCompletion) {
if (bringToCompletion === void 0) { bringToCompletion = false; }
for (var i = TweenManager._instance._activeTweens.length - 1; i >= 0; --i)
TweenManager._instance._activeTweens[i].stop(bringToCompletion);
};
TweenManager.allTweensWithContext = function (context) {
var foundTweens = [];
for (var i = 0; i < TweenManager._instance._activeTweens.length; i++) {
if (TweenManager._instance._activeTweens[i].context == context)
foundTweens.push(TweenManager._instance._activeTweens[i]);
}
return foundTweens;
};
TweenManager.stopAllTweensWithContext = function (context, bringToCompletion) {
if (bringToCompletion === void 0) { bringToCompletion = false; }
for (var i = TweenManager._instance._activeTweens.length - 1; i >= 0; --i) {
if (TweenManager._instance._activeTweens[i].context == context)
TweenManager._instance._activeTweens[i].stop(bringToCompletion);
}
};
TweenManager.allTweenWithTarget = function (target) {
var foundTweens = [];
for (var i = 0; i < TweenManager._instance._activeTweens.length; i++) {
if (TweenManager._instance._activeTweens[i]) {
var tweenControl = TweenManager._instance._activeTweens[i];
if (tweenControl.getTargetObject() == target)
foundTweens.push(TweenManager._instance._activeTweens[i]);
}
}
return foundTweens;
};
TweenManager.stopAllTweensWithTarget = function (target, bringToCompletion) {
if (bringToCompletion === void 0) { bringToCompletion = false; }
for (var i = TweenManager._instance._activeTweens.length - 1; i >= 0; --i) {
if (TweenManager._instance._activeTweens[i]) {
var tweenControl = TweenManager._instance._activeTweens[i];
if (tweenControl.getTargetObject() == target)
tweenControl.stop(bringToCompletion);
}
}
};
TweenManager.defaultEaseType = es.EaseType.quartIn;
TweenManager.removeAllTweensOnLevelLoad = false;
TweenManager.cacheNumberTweens = true;
TweenManager.cacheVector2Tweens = true;
TweenManager.cacheRectTweens = true;
return TweenManager;
}(es.GlobalManager));
es.TweenManager = TweenManager;
})(es || (es = {}));
var es;
(function (es) {
var Easing;
(function (Easing) {
var Linear = (function () {
function Linear() {
}
Linear.easeNone = function (t, d) {
return t / d;
};
return Linear;
}());
Easing.Linear = Linear;
var Quadratic = (function () {
function Quadratic() {
}
Quadratic.easeIn = function (t, d) {
return (t /= d) * t;
};
Quadratic.easeOut = function (t, d) {
return -1 * (t /= d) * (t - 2);
};
Quadratic.easeInOut = function (t, d) {
if ((t /= d / 2) < 1)
return 0.5 * t * t;
return -0.5 * ((--t) * (t - 2) - 1);
};
return Quadratic;
}());
Easing.Quadratic = Quadratic;
var Back = (function () {
function Back() {
}
Back.easeIn = function (t, d) {
return (t /= d) * t * ((1.70158 + 1) * t - 1.70158);
};
Back.easeOut = function (t, d) {
return ((t = t / d - 1) * t * ((1.70158 + 1) * t + 1.70158) + 1);
};
Back.easeInOut = function (t, d) {
var s = 1.70158;
if ((t /= d / 2) < 1) {
return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));
}
return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);
};
return Back;
}());
Easing.Back = Back;
var Bounce = (function () {
function Bounce() {
}
Bounce.easeOut = function (t, d) {
if ((t /= d) < (1 / 2.75)) {
return (7.5625 * t * t);
}
else if (t < (2 / 2.75)) {
return (7.5625 * (t -= (1.5 / 2.75)) * t + 0.75);
}
else if (t < (2.5 / 2.75)) {
return (7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375);
}
else {
return (7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375);
}
};
Bounce.easeIn = function (t, d) {
return 1 - this.easeOut(d - t, d);
};
Bounce.easeInOut = function (t, d) {
if (t < d / 2)
return this.easeIn(t * 2, d) * 0.5;
else
return this.easeOut(t * 2 - d, d) * 0.5 + 1 * 0.5;
};
return Bounce;
}());
Easing.Bounce = Bounce;
var Circular = (function () {
function Circular() {
}
Circular.easeIn = function (t, d) {
return -(Math.sqrt(1 - (t /= d) * t) - 1);
};
Circular.easeOut = function (t, d) {
return Math.sqrt(1 - (t = t / d - 1) * t);
};
Circular.easeInOut = function (t, d) {
if ((t /= d / 2) < 1)
return -0.5 * (Math.sqrt(1 - t * t) - 1);
return 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);
};
return Circular;
}());
Easing.Circular = Circular;
var Cubic = (function () {
function Cubic() {
}
Cubic.easeIn = function (t, d) {
return (t /= d) * t * t;
};
Cubic.easeOut = function (t, d) {
return ((t = t / d - 1) * t * t + 1);
};
Cubic.easeInOut = function (t, d) {
if ((t /= d / 2) < 1)
return 0.5 * t * t * t;
return 0.5 * ((t -= 2) * t * t + 2);
};
return Cubic;
}());
Easing.Cubic = Cubic;
var Elastic = (function () {
function Elastic() {
}
Elastic.easeIn = function (t, d) {
if (t == 0)
return 0;
if ((t /= d) == 1)
return 1;
var p = d * 0.3;
var s = p / 4;
return -(1 * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p));
};
Elastic.easeOut = function (t, d) {
if (t == 0)
return 0;
if ((t /= d) == 1)
return 1;
var p = d * 0.3;
var s = p / 4;
return (1 * Math.pow(2, -10 * t) * Math.sin((t * d - s) * (2 * Math.PI) / p) + 1);
};
Elastic.easeInOut = function (t, d) {
if (t == 0)
return 0;
if ((t /= d / 2) == 2)
return 1;
var p = d * (0.3 * 1.5);
var s = p / 4;
if (t < 1)
return -0.5 * (Math.pow(2, 10 * (t -= 1)) * Math.sin(t * d - s) * (2 * Math.PI) / p);
return (Math.pow(2, -10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p) * 0.5 + 1);
};
Elastic.punch = function (t, d) {
if (t == 0)
return 0;
if ((t /= d) == 1)
return 0;
var p = 0.3;
return (Math.pow(2, -10 * t) * Math.sin(t * (2 * Math.PI) / p));
};
return Elastic;
}());
Easing.Elastic = Elastic;
var Exponential = (function () {
function Exponential() {
}
Exponential.easeIn = function (t, d) {
return (t == 0) ? 0 : Math.pow(2, 10 * (t / d - 1));
};
Exponential.easeOut = function (t, d) {
return t == d ? 1 : (-Math.pow(2, -10 * t / d) + 1);
};
Exponential.easeInOut = function (t, d) {
if (t == 0)
return 0;
if (t == d)
return 1;
if ((t /= d / 2) < 1) {
return 0.5 * Math.pow(2, 10 * (t - 1));
}
return 0.5 * (-Math.pow(2, -10 * --t) + 2);
};
return Exponential;
}());
Easing.Exponential = Exponential;
var Quartic = (function () {
function Quartic() {
}
Quartic.easeIn = function (t, d) {
return (t /= d) * t * t * t;
};
Quartic.easeOut = function (t, d) {
return -1 * ((t = t / d - 1) * t * t * t - 1);
};
Quartic.easeInOut = function (t, d) {
t /= d / 2;
if (t < 1)
return 0.5 * t * t * t * t;
t -= 2;
return -0.5 * (t * t * t * t - 2);
};
return Quartic;
}());
Easing.Quartic = Quartic;
var Quintic = (function () {
function Quintic() {
}
Quintic.easeIn = function (t, d) {
return (t /= d) * t * t * t * t;
};
Quintic.easeOut = function (t, d) {
return ((t = t / d - 1) * t * t * t * t + 1);
};
Quintic.easeInOut = function (t, d) {
if ((t /= d / 2) < 1)
return 0.5 * t * t * t * t * t;
return 0.5 * ((t -= 2) * t * t * t * t + 2);
};
return Quintic;
}());
Easing.Quintic = Quintic;
var Sinusoidal = (function () {
function Sinusoidal() {
}
Sinusoidal.easeIn = function (t, d) {
return -1 * Math.cos(t / d * (Math.PI / 2)) + 1;
};
Sinusoidal.easeOut = function (t, d) {
return Math.sin(t / d * (Math.PI / 2));
};
Sinusoidal.easeInOut = function (t, d) {
return -0.5 * (Math.cos(Math.PI * t / d) - 1);
};
return Sinusoidal;
}());
Easing.Sinusoidal = Sinusoidal;
})(Easing = es.Easing || (es.Easing = {}));
})(es || (es = {}));
var es;
(function (es) {
var Lerps = (function () {
function Lerps() {
}
Lerps.lerp = function (from, to, t) {
return from + (to - from) * t;
};
Lerps.lerpVector2 = function (from, to, t) {
return new es.Vector2(from.x + (to.x - from.x) * t, from.y + (to.y - from.y) * t);
};
Lerps.lerpRectangle = function (from, to, t) {
return new es.Rectangle((from.x + (to.x - from.x) * t), (from.y + (to.x - from.y) * t), (from.width + (to.width - from.width) * t), (from.height + (to.height - from.height) * t));
};
Lerps.angleLerp = function (from, to, t) {
var toMinusFrom = new es.Vector2(es.MathHelper.deltaAngle(from.x, to.x), es.MathHelper.deltaAngle(from.y, to.y));
return new es.Vector2(from.x + toMinusFrom.x * t, from.y + toMinusFrom.y * t);
};
Lerps.ease = function (easeType, from, to, t, duration) {
return this.lerp(from, to, es.EaseHelper.ease(easeType, t, duration));
};
Lerps.easeVector2 = function (easeType, from, to, t, duration) {
return this.lerpVector2(from, to, es.EaseHelper.ease(easeType, t, duration));
};
Lerps.easeRectangle = function (easeType, from, to, t, duration) {
return this.lerpRectangle(from, to, es.EaseHelper.ease(easeType, t, duration));
};
Lerps.easeAngle = function (easeType, from, to, t, duration) {
return this.angleLerp(from, to, es.EaseHelper.ease(easeType, t, duration));
};
Lerps.fastSpring = function (currentValue, targetValue, velocity, dampingRatio, angularFrequency) {
velocity.add(new es.Vector2(-2 * es.Time.deltaTime * dampingRatio * angularFrequency)
.multiply(velocity)
.add(new es.Vector2(es.Time.deltaTime * angularFrequency * angularFrequency)
.multiply(es.Vector2.subtract(targetValue, currentValue))));
currentValue.add(new es.Vector2(es.Time.deltaTime).multiply(velocity));
return currentValue;
};
return Lerps;
}());
es.Lerps = Lerps;
})(es || (es = {}));